本文不谈什么是 iptables 和 iptables 的使用方法,只给出实例。

  • 环境介绍
  • linux 2.4 +
  • 2个网络接口
  • Lan口:10.1.1.254/24 eth0
  • Wan口:60.1.1.1/24 eth1
  • 目的:实现内网中的节点(10.1.1.0/24)可控的访问internet。
  • 首先将Lan的节点pc的网关指向10.1.1.254。

确定你的linux的ip配置无误,可以正确的ping通内外的地址。同时用route命令查看linux的本地路由表,确认指定了可用的ISP提供的默认网关。

打开linux的转发功能:

1
2
sysctl net.ipv4.ip_forward=1
```将FORWARD链的策略设置为DROP,这样做的目的是做到对内网ip的控制,你允许哪一个访问internet就可以增加一个规则,不在规则中的ip将无法访问internet.  

iptables -P FORWARD DROP

iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

1
(Deven:因为是让内网上网,因此对于代理服务器而言POSTROUTING(经过路由之后的包应该要把源地址改变为60.1.1.1,否则包无法返回))  

iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -j SNAT –to 60.1.1.1

1
比如我想让10.1.1.9这个地址访问internet,那么你就加如下的命令就可以了。  

iptables -A FORWARD -s 10.1.1.9 -j ACCEPT

iptables -A FORWARD -s 10.1.1.99 -d 3.3.3.3 -j ACCEPT

iptables -A FORWARD -s 10.1.1.0/24 -p tcp –dport http -j ACCEPT

1
2
3
  
  
资料参考:http://xstarcd.github.io/wiki/Linux/iptables_forward_internetshare.html