« 上一篇下一篇 »

Opwrt上如何禁止某内网机器访问外网但又能被外网访问

使用opwert的朋友们有时候基于安全考虑,

需要禁止某内网服务器访问外网,但是依旧允许从外网访问该服务器

那么,如何在路由器上设置呢?简单一行就可以!


首先,假设服务器网卡mac地址是 00:11:22:33:44:55

用 iptables -L FORWARD -n  --line-numbers 查看一下当前防火墙规则:


Chain FORWARD (policy DROP)

num  target     prot opt source               destination         

1    forwarding_rule  all  --  0.0.0.0/0            0.0.0.0/0            /* !fw3: Custom forwarding rule chain */

2    FLOWOFFLOAD  all  --  0.0.0.0/0            0.0.0.0/0            /* !fw3: Traffic offloading */ ctstate RELATED,ESTABLISHED FLOWOFFLOAD

3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED /* !fw3 */

4    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID /* !fw3 */

5    zone_lan_forward  all  --  0.0.0.0/0            0.0.0.0/0            /* !fw3 */

6    zone_lan_forward  all  --  0.0.0.0/0            0.0.0.0/0            /* !fw3 */

7    zone_wan_forward  all  --  0.0.0.0/0            0.0.0.0/0            /* !fw3 */


目标就是在LAN转发规则之前,丢弃掉来自(源自)该mac地址的数据包。命令如下:

    iptables -I FORWARD -p all -m mac --mac-source 00:11:22:33:44:55  -j DROP

    #禁止该mac地址访问外网... 数据目的地不是路由器,而是外网,所以改动路由器的FORWARD 链


OK, 万事大吉。

如有必要,可以用 iptables-save 给保存一下固定好,下次启动后依旧生效,

或者把这句话写入启动脚本里,每次启动时候添加上来也行。


ps 1,附加问题,如此一来,服务器无法ntp矫正时间了,

解决方法: 设置内网的ntp服务器,例如网关192.168.1.1 上启动ntp服务,

在被禁止联外网的服务器上运行 ntpdate 192.168.1.1  #网关地址---请根据实际情况修改


ps 2,服务器如果跑支付网关等等业务类型的服务,需要连接外网其他服务器的,

在路由器该DROP记录前面再插入一个白名单许可访问的规则就可以。

举一反三吧。