我正在尝试打开一些本地端口(LAN),然后使用 iptables 将它们重新重定向到另一台服务器(WAN)。
这是我的配置:
#WAN
allow-hotplug eth1
auto eth1
iface eth1 inet static
#Tarjeta red WAN
address 192.168.2.2
gateway 192.168.2.1
netmask 255.255.255.0
#LAN
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.16.255
我尝试这个:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 110 -j DNAT --to 200.40.30.218:110
iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 200.40.30.218 --dport 110 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25 -j DNAT --to 200.40.30.218:25
iptables -A FORWARD -p tcp -i eth0 -o ethq -d 200.40.30.218 --dport 25 -j ACCEPT
但是,它不起作用。我也尝试将 eth0 更改为 eth1(以及将 eth1 更改为 eth0),但什么也没发生。
Starting Nmap 5.00 ( http://nmap.org ) at 2011-10-03 14:44 UYST
Interesting ports on 192.168.16.6:
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
8080/tcp open http-proxy
我正在运行 Debian。你们能帮我检查一下发生了什么吗?
编辑:IPTABLES-SAVE
# Generated by iptables-save v1.4.8 on Mon Oct 3 15:43:14 2011
*mangle
:PREROUTING ACCEPT [139993:77867651]
:INPUT ACCEPT [139385:77761761]
:FORWARD ACCEPT [186:12071]
:OUTPUT ACCEPT [173556:74341650]
:POSTROUTING ACCEPT [173734:74352988]
COMMIT
# Completed on Mon Oct 3 15:43:14 2011
# Generated by iptables-save v1.4.8 on Mon Oct 3 15:43:14 2011
*nat
:PREROUTING ACCEPT [1649:190626]
:POSTROUTING ACCEPT [6729:339646]
:OUTPUT ACCEPT [6697:337660]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 110 -j DNAT --to-destination 200.40.30.218:110
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 200.40.30.218:25
COMMIT
# Completed on Mon Oct 3 15:43:14 2011
# Generated by iptables-save v1.4.8 on Mon Oct 3 15:43:14 2011
*filter
:INPUT ACCEPT [138307:77066136]
:FORWARD ACCEPT [168:11207]
:OUTPUT ACCEPT [172288:73655708]
-A FORWARD -d 200.40.30.218/32 -i eth0 -o eth1 -p tcp -m tcp --dport 110 -j ACCEPT
-A FORWARD -d 200.40.30.218/32 -i eth0 -o ethq -p tcp -m tcp --dport 25 -j ACCEPT
COMMIT
# Completed on Mon Oct 3 15:43:14 2011
问候
答案1
看起来 MASQUERADING 未设置。在第一个 PREROUTING 语句之前添加以下内容
-A POSTROUTING -o eth0 -j MASQUERADE
因此它将会是这样的:
-A POSTROUTING -o eth0 -j MASQUERADE
-A PREROUTING -i eth0 -p tcp -m tcp --dport 110 -j DNAT --to-destination 200.40.30.218:110
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 200.40.30.218:25
另外,请确保已启用 IP 转发。您可以使用以下任一方式动态设置它:
sysctl -w net.ipv4.conf.all.forwarding =1
或者:
echo “1” > /proc/sys/net/ipv4/ip_forward
要永久更改它(这是您想要的),请在 /etc/sysctl.conf 中添加或更改 net.ipv4.conf.all.forwarding 值以:
net.ipv4.ip_forward = 1
最后一个是我认为你会如何在 Red Hat 上执行此操作,因此如果你没有该文件,你可以在 /etc/rc.local 中添加第一个命令或查找 Ubuntu 进行更改的方式。
另外,最后一个 FORWARD 语句似乎是错误的。它看起来应该是:
-A FORWARD -d 200.40.30.218/32 -i eth1 -o eth0 -p tcp -m tcp --dport 110 -j ACCEPT
-A FORWARD -d 200.40.30.218/32 -i eth1 -o eth0 -p tcp -m tcp --dport 25 -j ACCEPT
我认为这就是让它工作的方式。我重新阅读了帖子,你想将入站流量转发到 WAN 上的服务器,所以我做了上述更改来解决这个问题(这有点令人困惑,因为你通常使用 NAT 从 WAN 转到 LAN,而不是相反)。
但重要的是,您需要确保启用了 IP 转发以及 MASQUERADING。