iptables -t nat -A PREROUTING -p tcp --dport 80 -d 电信IP -j DNAT --to-destination 192.168.0.100
iptables -t nat -A PREROUTING -p tcp --dport 80 -d 网通IP -j DNAT --to-destination 192.168.0.100
端口回流(内网可以通过外网IP访问映射后的服务器)
iptables -t nat -A POSTROUTING -p tcp -s 192.168.0.0/24 --dport 80 -d 192.168.0.100 -j SNAT --to-source 192.168.0.1
[注]:上述规则应放到 NAT 规则之前
常见问题(FAQ)
1. 不能实现 “交叉访问” 到服务器
即:会出现外网电信用户只能通过电信IP访问到服务器,而通过网通IP访问不了;
同理,网通用户只能通过网通IP访问到服务器,而通过电信IP却访问不了。也就是只是单纯地解决了 “内网访问哪里,走哪条线路”
答:电信用户通过网通IP访问时,数据到达了服务器上,本应该从网通的线路返回的,但最终却从电信的线路出去了,这样的数据会被上层网关丢弃。
此时需要加入 “原路返回路由” ,实现 “从哪条线来的,依然从哪条线返回“。
2. 外网用户不能交叉访问映射后的内网服务器
即:电信用户可以通过电信IP访问到内网服务器,网通用户可以通过网通IP访问到内网服务器
但是:网通用户不能通过电信IP访问到内网服务器,电信用户也不能网通IP访问到内网服务器
答:路由缓存引起的,给内核打补丁,或每隔 2 秒左右刷新路由缓存
3. 内网用户不能通过外网IP访问内网服务器
答:a. 没有做SNAT(端口回流),加入回流规则即可
b. 加入 ”原路返回路由“ 时,没有将局域网的路由加入进去
上一页 [1] [2]