用iptables实现网页重定向


需求1

内网用户,无论其在IE地址栏内输入任何网址,都被系统强制跳转到路由器主页(192.168.1.1)


解决办法: 


iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.1.1:80



这样不管在浏览器里面打入什么地址都自动显示192.168.1.1的首页。


缺陷1

这种方案对路由器可以上网没有问题,但是当路由器没有上网时,就会失效。

彼时,用户在PC上敲击网址后,首先进行DNS查询,由于网络不通,DNS必然失败,从而导致PC压根就不会

发送HTTP的报文出去。这样,就不存在数据的重定向。

补充方案:一种可行的方案是,在没有上网时,通过DNS欺骗来达到重定向的目的。不过这样需要修改DNS的源码。


缺陷2

如果网页的上指定了特殊的端口,也会失效。

虽然我们使用了多端口,但是仅限于80或者8080(也可以更多),但是无法穷举所有的用例,所以还是存在这种风险。




需求2

外网用户可以访问WEBUI,也就是常说的通过GUI进行远程管理。


最初的想法是通过httpd来绑定外网地址和网口,但是每次联网需要重启httpd;不是一个很好的体验。

最近仔细研究了一下iptables,觉的完全可以通过PREROUTING链的DNAT实现类似的功能即可。代码如下:

iptables -t nat -A PREROUTING -p tcp -i ppp0 -m multiport --dport 80,8080 -j DNAT --to-destination 192.168.1.1:80

效果如下:

root# iptables -t nat -L PREROUTING -n -v
Chain PREROUTING (policy ACCEPT 2155 packets, 289K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           multiport dports 80,8080 to:192.168.1.1:80


或者

iptables -t nat -A PREROUTING -p tcp -d <your wan ip address> -m multiport --dport 80,8080 -j DNAT --to-destination 192.168.1.1:80


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值