#!/bin/bash EXTERNAL_IF="eth0" # check where we want to NAT to if ( /sbin/ip link show ppp0 >/dev/null 2>&1 ); then # we're using dial up EXTERNAL_IF="ppp0" elif ! ( /sbin/ip a show eth0 2>/dev/null | grep -q inet ) && ( /sbin/ip link show eth1 >/dev/null 2>&1 ); then # no IP address on the primary interface - maybe I'm using the secondary interface EXTERNAL_IF="eth1" fi IFNAME=$1 network=$(( 100 + ${IFNAME:3} )) if ! ( /sbin/ip a show $IFNAME | grep ${network}.1 -q ); then /sbin/ip a add 192.168.${network}.1/24 dev $IFNAME /sbin/ip link set $IFNAME up ( /sbin/iptables -L -vn -t nat | grep -q MASQUERADE ) || /sbin/iptables -t nat -A POSTROUTING -o $EXTERNAL_IF -j MASQUERADE fi