问题描述:
- 路由器拨号上网
- 路由器已设置DDNS, 且外网用户可通过域名访问内网机器上的http服务.
- 内网用户无法用域名访问此http服务, 但可用内网IP访问.
分析问题:
造成内网无法用域名访问同一内网http服务的原因可能是路由器不支持 “NAT 回流”(NAT loopback) 或未打开此功能. 此问题大部分出现在使用刷了 dd-wrt 的路由器上, dd-wrt 官网明确不支持NAT回流.
解决方法:
在 dd-wrt 的命令中加输入以下内容, 保存为防火墙命令,并运行命令或重启路由. 之后便可用域名访问内网http服务了.
1 |
iptables -t nat -I POSTROUTING -o br0 -s 192.168.0.188/24 -d 192.168.0.188/24 -j MASQUERADE |
将上面例子中的 “192.168.0.188” 换成你的http服务器ip.
一级路由器 Wan1 公网IP ,Lan 192.168.50.1 DD-WRT
映射 任何IP 端口85 192.168.50.254端口 85
二级路由器 Wan 192.168.50.254 Lan 192.168.10.1 Tomato DualWAN(默认支持回流的)
映射 任何IP 端口85 192.168.50.200端口 85
Http服务器接在二级路由lan口 IP192.168.10.200:85
一级路由加入命令:
iptables -t nat -I POSTROUTING -o br0 -s 192.168.50.254/24 -d 192.168.50.254/24 -j MASQUERADE
iptables -t nat -I POSTROUTING -o br0 -s 192.168.10.200/24 -d 192.168.10.200/24 -j MASQUERADE
iptables -t nat -I POSTROUTING -o br0 -s 192.168.50.254/24 -d 192.168.10.200/24 -j MASQUERADE
iptables -t nat -I POSTROUTING -o br0 -s 192.168.10.200/24 -d 192.168.50.254/24 -j MASQUERADE
还是不支持回流啊
多级的没有做过. 可能不支持.
请问“192.168.0.188/24”中的24是代表HTTP服务所使用的端口吗?
我的是 DD-WRT v24SP2-MULTI (10/31/11) std, 用上面的命令语句没有效果,求指教~
24是子网掩码, 代表255.255.255.0. http://www.subnet-calculator.com/ 这里可以计算子网, 用你的ip和子网替换一下就可以了。
我的服务器IP是192.168.1.15,路由器IP是192.168.1.1,那么我的子网应该也是24吗?
子网在你路由器里看, 或者看你服务器本地连接里面的子网掩码也可以。
不支持 NAT loopback 的路由器,相当蛋疼,说什么因为“安全原因”,安全是第一位的吗?艹 http://en.wikipedia.org/wiki/NAT_loopback#NAT_loopback
困扰我多星期的问题,终於给我找到答案,网上多的是说什麽关防火墙.端囗影射…..没有一个说得出来,跟来就不是那回事,无意中在网上找到这里.终於解决问题了.谢谢你.