核心代码:
注意:请打开内核的转发功能:
echo "1" >/proc/sys/net/ipv4/ip_forward
#######################################################
NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward //开启转发功能
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth2 -j SNAT --to-source 10.18.46.22 //NAT
-s 172.16.1.0/24 需要替换的源IP
-o eth2 出外网的那张网卡
--to-source 将源地址替换.
Appendix:
通过修改配置文件/etc/sysconfig/network在这个文件中添加:FORWARD_IPV4="YES".设置开机打开转发.
#########################################################################
限速:limit
对单个IP限速:
iptables -A FORWARD -s 172.16.1.1/24 -m limit --limit 60/s -j ACCEPT // "60/s" 指的是包的大小,根据MTU值(默认)1500可以计算出速度:60*1500/1024 = 88 KB/s
iptables -A FORWARD -s 172.16.1.1/24 -j DROP //上面两个规则是一起工作的,也就是说,当包的个数超过60/sec的时候,执行本规则.
#########################################################################
MASQUERADE:动态NAT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
#########################################################################
DNAT:重定向,一般用于内网架设服务器,供外网使用,只要在防火墙上增加一条iptables即可。
iptables -t nat -A PREROUTING -d 10.18.46.17 -p tcp --dport 80 -j DNAT --to 10.18.46.168:8080
为了让包返回时,还是按照原路返回,可以再增加一条SNAT
iptables -t nat -A POSTROUTING -d 10.18.46.168 -p tcp --dport 80 -j SNAT --to 10.18.46.17
#########################################################################
透明Squid
iptables -t nat -A PREROUTING -i em1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
当然还要修改Squid的配置文件:/etc/squid/squid.conf
http_port 3128 transparent(对于现在的squid,都是只要加上一句squid就够了,老的版本请另外查询)
Appendix:
杀掉squid: sudo kill -9 `ps aux | grep squid | grep -v grep | awk '{print $2}'`
重新开启squid:sudo squid -z
sudo squid -s
其中:sudo squid -X
sudo squid -k parse 可以用来检查配置文件的语法.
##########################################################################
附带一个网址,个人认为讲的非常好:
http://www.opsers.org/linux-home/videos/chapter-netfilter-iptables-raiders.html