将特定网络接口上的流量转发到特定主机

时间:2014-10-31 14:25:20

标签: iptables portforwarding

此计算机有两个接口eth0eth1eth0上有一个默认网关:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.2.1        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth1

我需要使用iptables设置规则,以便将eth1上的所有传入流量代理到10.0.1.1

请注意,eth0与静态IP地址10.0.2.2相关联,eth1是动态的。

port forwarding with netfilter上有一个指南,解释了如何在稍微简单的设置中执行此操作,但我无法弄清楚如何从他们的示例转到我的。

1 个答案:

答案 0 :(得分:0)

以您提供的the link为基础,using the conntrack module rather than the state module除外:

# Activate forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Forward packets coming in from the outside
iptables -t nat -A PREROUTING  -p tcp -i eth1 -j DNAT --to-destination 10.0.1.1
# Make responses on the internal network go through the firewall
iptables -t nat -A POSTROUTING -p tcp -d 10.0.1.1 -j SNAT --to-source 10.0.2.2
# Allow forwarded packets
iptables        -A FORWARD     -p tcp -d 10.0.1.1 -j ACCEPT -m conntrack --ctstate NEW,ESTABLISHED,RELATED

要在内核中禁用reverse path filtering,请按照here所述的步骤操作。我认为在您的情况下,通过sysctlnet.ipv4.conf.eth1.rp_filter的值修改为0就足够了 请注意,此解决方法有点安全漏洞。更好的方法是改变网络结构本身。