服务器上两块网卡,eth0接入外网交换机,eth1为内网网口,内网偷带宽的机器IP段为192.168.1.x。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
以下脚本由crontab每隔10分钟调用一次
#!/bin/sh pid_file=/tmp/network_debianl.tmp
[[ -f $pid_file ]] && echo "Another instance with this program is running!" && exit touch $pid_file trap "script_exit" 2 3 function script_exit () { unlink $pid_file exit } ping -c 1 210.52.149.2 [[ $? = 0 ]] && echo "Connected internet" && unlink $pid_file && exit if [ -f /etc/gateways ]; then for LOOP in `cat /etc/gateways` do ping -c 1 $LOOP if [ $? = 0 ]; then route del default route add default gw $LOOP sed '$d' /etc/resolv.conf > /etc/resolv.conf.bak
mv /etc/resolv.conf.bak /etc/resolv.conf
echo "nameserver $LOOP" >> /etc/resolv.conf
ping -c 1 210.52.149.2 [[ $? = 0 ]] && echo "Connected internet" && unlink $pid_file && exit fi done fi LOOP=1 while [ $LOOP -lt 250 ] do [[ -f /etc/gateways ]] && grep 192.168.0.$LOOP /etc/gateways > /dev/null && [[ $? = 0 ]] && LOOP=`expr $LOOP + 1` && continue ping -c 1 192.168.0.$LOOP if [ $? = 0 ]; then echo 192.168.0.$LOOP >> /etc/gateways
route del default
route add default gw 192.168.0.$LOOP sed '$d' /etc/resolv.conf > /etc/resolv.conf.bak
mv /etc/resolv.conf.bak /etc/resolv.conf
echo "nameserver 192.168.0.$LOOP" >> /etc/resolv.conf
ping -c 1 210.52.149.2 [[ $? = 0 ]] && echo "Connected internet" && unlink $pid_file && exit fi LOOP=`expr $LOOP + 1` done echo "Can't connect internet" unlink $pid_file

