此计算机有两个接口eth0
和eth1
。 eth0
上有一个默认网关:
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上有一个指南,解释了如何在稍微简单的设置中执行此操作,但我无法弄清楚如何从他们的示例转到我的。
答案 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所述的步骤操作。我认为在您的情况下,通过sysctl
将net.ipv4.conf.eth1.rp_filter
的值修改为0就足够了
请注意,此解决方法有点安全漏洞。更好的方法是改变网络结构本身。