linux iptables

核心代码:

注意:请打开内核的转发功能:

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 

posted on 2011-09-16 18:20  vincent Van Gogh  阅读(207)  评论(0编辑  收藏  举报

导航