1、目的:解决网络跨运营商互访质量不佳的问题,通过一台双网卡连接两个不同的运营商的linux主机,通过iptablse进行nat跳转,从而解决此网络问题。
2、主参考文档:Iptables 指南.chm,以下的文档均指它,下载地址:
http://www.linuxidc.com/Linux/2012-07/64851.htm
3、主要的表:
filter:筛选过滤表,不加表时,默认是这个表,用于防火墙规则过滤
nat:转发表,用于IP跳转
mangle:改包的一些属性,用于流控,QOS等,此表用得很少,可以不理它
4、安装:有些系统是自带的,有些不自带或比较老的要下载再编译安装,文档2有介绍
5、打开服务:service iptables start
加入开机启动:chkconfig iptables on
6、查看服务状态(有时显示的不准,如里面一条规则也没有时)
service iptables status –也可以用于查看所有的表链规则
7、为开启路由转发必须执行的命令
echo “1” > /proc/sys/net/ipv4/ip_forward –这个是开启转发必要的命令,但这样操作是临时的,重启机子就还原了,永久设置见下面
echo “1” > /proc/sys/net/ipv4/tcp_syncookies
echo “1” > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
8、永久设置转发功能,防止重启失效
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.tcp_syncookies = 1
# sysctl -p (使设置马上生效)
9、语法格式
iptables [-t table] command [match] [target/jump]
–table
如果不写,默认是指filter表
–command
见文档6.3
–match
见文档6.4
–target/jum
见文档6.5
10、单网卡实例:x——〉广州机房(即中转机子)120.132.152.142:9101——〉运营商219.140.165.133:80。-j MASQUERADE智能匹配,但消耗一定的cpu
iptables -t nat -A PREROUTING -p tcp –dport 9101 -j DNAT –to 219.140.165.133:80
iptables -t nat -A POSTROUTING -p tcp –dport 80 -j MASQUERADE
11、双网卡双外网实例:X——〉183.62.178.85:7001——〉158.250.56.154:7001——〉112.90.176.35:7001
iptables -t nat -A PREROUTING -d 183.62.178.85 -p tcp -m tcp –dport 7001 -j DNAT –to-destination 112.90.176.35:7001
iptables -t nat -A POSTROUTING -d 112.90.176.35 -p tcp -m tcp –dport 7001 -j SNAT –to-source 158.250.56.154
12、常用命令:
–清空nat表PREROUTING链,谨慎操作
iptables -t nat -F PREROUTING
–清空nat表POSTROUTING链,谨慎操作
iptables -t nat -F POSTROUTING
–显示明细
iptables -t nat -nvL –line
–删除编号88
iptables -t nat -D PREROUTING 88
–保存
service iptables save 或/etc/sysconfig/iptables save
–重启iptables
service iptables restart
13、配置完生成的文件
/etc/sysconfig/iptables #当前的配置
/etc/sysconfig/iptables.save #上次的配置备份
14、telnet测试
–添加静态路由—————
15、双网卡双外网的情况下,不一定所有环境两个网卡都可以ping通,这主要取决于上层网络提供商的设置,一般用户控制改变不了的。只有设置了网关的网卡可以ping通,但却不影响使用。
如果只有一个能ping通的话,那就必须添加路由的方式来解决跳转的问题。
如果两个都可以ping通,虽跳转可以成功,但出口都默认只是设置的默认网关出口,相当于网络问题只解决了一半。
16、环境说明:
eth0:IPADDR=183.62.178.85 GATEWAY=183.62.178.94 –电信网络
eth1:IPADDR=58.250.56.154 GATEWAY=58.250.56.1 –联通网络
目的访问:112.90.176.35:7001
测试路径:telnet 183.62.178.85 7001
路径说明:X——〉183.62.178.85:7001——〉158.250.56.154:7001——〉112.90.176.35:7001
设置的跳转命令如上面的11点
17、路由添加:
路由添加:# route add -net 112.90.176.0 netmask 255.255.255.0 gw 58.250.56.1 eth1
或# route add -net 112.90.176.0/24 gw 58.250.56.1 eth1
删除路由:# route delete -net 112.90.176.0 netmask 255.255.255.0 gw 58.250.56.1 eth1
或# route delete -net 112.90.176.0/24 gw 58.250.56.1 eth1
18、假设默认网关是电信,且源地址或目的地址是能判断为联通的,那么就必须对这个联通的源地址或目的地址做如上的静态路由。
19、重启机子后,路由会失效,故要把它加到/etc/rc.d/rc.local中,如果不小心重启了网卡,也会让路由失效,此时就得到/etc/rc.d/rc.local找到脚本再运行一下了。