使用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记录前面再插入一个白名单许可访问的规则就可以。
举一反三吧。