学习了iptables一段时间真的佩服这家伙的功能之强大!
这几天我遇见的问题是让我的路由器支持多端口管理,内网用户只能通过80端口访问设置页面,而外网只能通过用户自定义的端口访问,比如1234
iptables实现的原理:
访问:凡是非内网IP访问路由的外网且端口为1234的均把此包的端口改为80
返回:凡是从外网口发出的且目的ip为非内网ip,且源端口为80,都把目的端口改为1234,达到远程访问的目的
命令:
1234端口的都改为80端口
iptables -t nat -A PREROUTING -i eth2.5 -s ! 192.168.31.1/24 --dport 1234 -p tcp -j DNAT --to-destination 192.168.5.155:80
禁止外网用80端口访问
iptables -t nat -A PREROUTING -p tcp -i eth2.5 --dport 80 -j DROP
禁止外网用80端口iptables -t nat -A PREROUTING -p tcp -i eth2.5 --dport 80 -j DROP
其实iptables支持+为通配符,在man里面有介绍,这样就把所有eth开头的网卡都实现了!
iptables -t nat -A PREROUTING -i eth+ -s ! 192.168.31.1/24 --dport 1234 -p tcp -j DNAT --to-destination 192.168.5.155:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -s ! 192.168.31.1/24 -i eth+ -j DROP