用于此设置的Linux nat/iptables配置

Spa*_*ker 7 linux routing iptables nat

我有一个4 linux(CentOS)机器的实验设置:

在此输入图像描述

所有4台机器都使用不同的网络进行内部连接,并且可以ping其他直接连接的接口.但是只有PC4才能访问互联网.

我正在尝试设置iptable规则,允许PC1能够通过PC4访问互联网,但我不知道如何做到这一点.

我试图在PC2,PC3和PC4的出接口添加NAT:

iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,你能不能给我一些想法如何在这样的设置中我可以使PC1访问10.0.0.1网络?

Sat*_*ish 16

启用IP转发.

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

永久设置编辑/etc/sysctl.conf并设置01

net.ipv4.ip_forward = 1
Run Code Online (Sandbox Code Playgroud)

要启用sysctl.conf中所做的更改,您需要运行该命令

sysctl -p /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

Iptables NAT规则

# /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)

  • 好吧,我知道了,surprisngly我只需要NAT在最后的PC,而对于其余的我只需要启用IP转发,不得不删除默认的转发chaing拒绝规则,使用iptables FORWARD -D 1和它的工作 (3认同)
  • 您应该将此标记为正确答案 (2认同)