什么是内核IP转发?相关问题

adr*_*rhc 4 iptables forwarding

这个问题与什么是内核 ip 转发中的答案和评论有关?

来自@LawrenceC

帖子1:

因此,在上面的示例中,如果您在 NIC 2 上有 Internet 连接,您可以将 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
Run Code Online (Sandbox Code Playgroud)

为什么我会使用FORWARD(根据POST2)如果前已经仅通过设置完成ip_forward(根据POST1):

echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)

cg9*_*909 5

设置一般ip_forward允许数据包转发。出于安全原因,某些 Linux 发行版可能不允许转发数据包,例如,如果设置错误。iptablesip_forward

/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

设置规则以允许来自eth0到eth1已建立连接的响应或类似相关数据包的数据包。

/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

设置显式规则以允许来自 的数据包eth1到eth0。

无论默认配置如何,这都允许客户端eth1访问后面的服务器。eth0iptables