在RedHat9.0-->linux-2.4.20-8和CentOS 5.1.3-->linux-2.6.18上测试通过了的:
方式1:将以下全部语句复制,再粘贴到“/etc/rc.d/rc.local”文件后面,开机后就可以自动执行了。
方式2:将以下语句全部复制,再粘贴到“终端”,它将自动配置、启动、显示一次。
当前PC在网络中所处的位置如图:
=============================================脚本开始
#!/bin/sh
INTIF1="eth1"
INTIF2="eth2"
EXTIF="eth0"
EXTIP="`/sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
/sbin/depmod –a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat –F
iptables -A FORWARD -i $EXTIF -o $INTIF1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $EXTIF -o $INTIF2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF1 -o $EXTIF -j ACCEPT
iptables -A FORWARD -i $INTIF2 -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
==============================================脚本结束
之后,只要各个网段内的电脑设置网关为相应的那个网卡ethN,ip设置不冲突,就可以上网。
备注1:(参考了http://www.aboutdebian.com/proxy.htm李先静xianjimli@hotmail.com)
路由器=》
对外:60.232.100.116
对内:192.168.0.1
DNS:视环境而定
eth0=》
IP:192.168.0.2
网关:192.168.0.1
掩码:255.255.255.0
DNS:与路由器相同
eth1=》
IP:192.168.1.1
网关:空
掩码:空
DNS:空
eth2=》
IP:192.168.2.1
网关:空
掩码:空
DNS:空
...
ethN=》
IP:192.168.N.1
网关:空
掩码:空
DNS:空
这样,N个内网就可以通过N个网卡上网了...
备注2:(参考了http://www.xxlinux.com/linux/article/network/security/20060610/1205.html)
其实修改iptables同样可以用这种方式进行(其中,eth0、eth1分别是外、内网卡)。
======================================================
echo "Enable IP Forwarding..."
echo 1 >/proc/sys/net/ipv4/ip_forward
echo "Starting iptables rules..."
/sbin/modprobe iptable_filter
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp ;支持被动FTP
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_h323
/sbin/modprobe ip_nat_h323
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
/etc/rc.d/init.d/iptables restart
iptables –L
======================================================
在这个配置里面,INPUT和转发FORWARD功能的缺省值都是拒绝(DROP),这意味着在后面的INPUT和FORWARD语句中没有表明通过(ACCEPT)的都将被拒之门外。这是一个最好的安全模式,经过使用赛门铁克的在线测试,所有公网端口都是隐藏的。注意,所有内网端口都是打开的,本机对内没有安全可言。
每次修改完后,将整篇语句全部复制,再粘贴到“终端”,它将自动配置、启动、显示一次。反复修改、测试,直到达到你的要求。
iptables就是linux的防火墙,iptables规则就是linux的防火墙规则,脚本中具体命令的具体含义还在体会中...