iptables nat 内网共享上网
Contents
本文不谈什么是 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的转发功能:
|
|
将FORWARD链的策略设置为DROP,这样做的目的是做到对内网ip的控制,你允许哪一个访问internet就可以增加一个规则,不在规则中的ip将无法访问internet.
|
|
这条规则规定允许任何地址到任何地址的确认包和关联包通过。一定要加这一条,否则你只允许lan IP访问没有用,至于为什么,下面我们再详细说。
|
|
这条规则做了一个SNAT,也就是源地址转换,将来自10.1.1.0/24的地址转换为60.1.1.1
(Deven:因为是让内网上网,因此对于代理服务器而言POSTROUTING(经过路由之后的包应该要把源地址改变为60.1.1.1,否则包无法返回))
|
|
有这几条规则,一个简单的nat路由器就实现了。这时你可以将允许访问的ip添加至FORWARD链,他们就能访问internet了。 比如我想让10.1.1.9这个地址访问internet,那么你就加如下的命令就可以了。
|
|
也可以精确控制他的访问地址,比如我就允许10.1.1.99访问3.3.3.3这个ip
|
|
或者只允许他们访问80端口。
|
|
更多的控制可以自己灵活去做,或者查阅iptables的联机文档。
资料参考:http://xstarcd.github.io/wiki/Linux/iptables_forward_internetshare.html