这个问题与答案和评论相关什么是内核IP转发?
来自@LawrenceC
帖子1:
因此,在上面的示例中,如果您在 NIC 2 上有互联网连接,则可以将 NIC 2 设置为默认路由,然后从 NIC 1 传入但不属于 192.168.2.0/24 的任何流量都会通过通过网卡 2。
还有post2:
面向互联网的接口(上面的 NIC 1)需要在链上 iptables 的 POSTROUTING 中使用 MASQUERADE 规则来执行此操作。看 revsys.com/writings/quicktips/nat.html
在http://www.revsys.com/writings/quicktips/nat.html它说:
然后,您需要配置 iptables 将数据包从 /dev/eth1 上的内部网络转发到 /dev/eth0 上的外部网络。
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE /sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
为什么我会使用FORWARD
(根据帖子2)如果转发已经通过仅设置完成ip_forward
(根据帖子1):
echo 1 > /proc/sys/net/ipv4/ip_forward
答案1
设置ip_forward
允许数据包转发一般来说。iptables
出于安全原因,某些 Linux 发行版可能不允许转发数据包,例如,如果ip_forward
设置错误。
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
设置规则以允许来自 的数据包eth0
对eth1
已建立的连接进行响应或类似相关的数据包。
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
设置显式规则以允许来自eth1
到 的数据包eth0
。
这允许客户端eth1
访问后面的服务器,eth0
无论默认iptables
配置如何。