我正在尝试创建一个 NAT 功能以便一次完成 2 项任务。
- 公网用户可以访问FTP服务器
- LAN 中的用户可以使用相同的 WAN 地址 203.XXX访问 FTP 服务器
network topology
[---] win10 PC
\ / [ - ] 10.0.0.4
[wireless router]------------- [ _ ]
WAN:203.x.x.x _______
LAN gateway:10.0.0.138 / / laptop **linux FTP server**
/______/ iptables **NAT running here**
\ \ wlan0:10.0.0.113
\_______\ port:20,21
passive:6000:7000
现在 FTP 服务器只能通过 LAN 访问ftp://10.0.0.113 我想将端口转发到本地 FTP 服务器,这样任何用户都可以使用 WAN 地址 203.xxx 登录 FTP 服务器。我使用 Windows 10 进行测试,它们位于同一个 LAN 中。
*nat
:PREROUTING ACCEPT [280:86644]
:INPUT ACCEPT [79:4030]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -j LOG
-A PREROUTING -d 203.213.238.12/32 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.0.0.113:21
-A PREROUTING -d 203.213.238.12/32 -p tcp -m tcp --dport 20 -j DNAT --to-destination 10.0.0.113
-A PREROUTING -d 203.213.238.12/32 -p tcp -m tcp --dport 6000:7000 -j DNAT --to-destination 10.0.0.113
-A OUTPUT -j LOG
-A OUTPUT -d 203.213.238.12/32 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.0.0.113:21
-A OUTPUT -d 203.213.238.12/32 -p tcp -m tcp --dport 20 -j DNAT --to-destination 10.0.0.113
-A OUTPUT -d 203.213.238.12/32 -p tcp -m tcp --dport 6000:7000 -j DNAT --to-destination 10.0.0.113
-A POSTROUTING -j LOG
-A POSTROUTING -d 10.0.0.113/32 -o wlan0 -p tcp -m tcp --dport 21 -j SNAT --to-source 10.0.0.138:21
-A POSTROUTING -d 10.0.0.113/32 -o wlan0 -p tcp -m tcp --dport 20 -j SNAT --to-source 10.0.0.138
-A POSTROUTING -d 10.0.0.113/32 -o wlan0 -p tcp -m tcp --dport 6000:7000 -j SNAT --to-source 10.0.0.138
COMMIT
# Completed on Thu Mar 2 19:40:51 2017
# Generated by iptables-save v1.4.21 on Thu Mar 2 19:40:51 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [412:52590]
-A INPUT -i wlan0 -j ACCEPT
-A FORWARD -o wlan0 -j ACCEPT
-A FORWARD -i wlan0 -j ACCEPT
COMMIT
我不确定我错过了什么或者配置中存在一些逻辑错误。任何帮助都会得到适当的帮助。
答案1
端口转发是在路由器上设置的,它允许您将进入该接口的指定端口的所有流量发送到特定地址(和端口)。这通常在家用路由器上完成,以将流量从路由器的公共端转发到私有端。
重定向内部流量,您可能需要在路由器的内部接口上设置转发语句,或者考虑使用目标服务器的内部网络地址,或者使用内部网络上服务器的 FQDN 并允许内部 DNS 服务器进行转换。
如果它是路由器的配置,您给出的 iptables 示例可能会有效。