Linux 服务器作为路由器 - 问题

Linux 服务器作为路由器 - 问题

我对 Linux 相当陌生,我正在尝试在我的环境中测试一些东西。
我设置了一个 Linux 服务器(fedora)来连接 2 个网络。
服务器有第三个 natted 网卡(通过 virtualbox 与我的主机共享)。
我可以成功地从 Linux 服务器进行浏览,但如果我尝试从任何客户端 ping 8.8.8.8 或类似的内容,它就不起作用。
客户端默认路由已到位; iptables 允许 icmp。

我缺少什么?

答案1

正如上面评论的,如果有更多信息,我们可以做得更好。下面建议的解决方案期望iptables已设置为允许输入/输出流量。无论如何,你可能会错过两件事。

您需要明确允许转发流量。您需要修改 /etc/sysctl.conf` 添加以下行。

net.ipv4.ip_forward=1

此外,您还需要伪装传出流量。伪装将所有数据包的传出 IP 地址重写到具有 NAT 附加网卡的主机。您可以启用伪装,如下所示。注意 NAT 接口名称。

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

替换eth0为您的 NAT 接口的名称。

故障排除技巧

  1. 从客户端 Ping Linux 服务器的主机接口地址。如果成功,客户端就能够访问默认网关。
  2. 从客户端 Ping Linux 服务器的 nat 接口地址。如果成功,iptables firewall则允许 ICMP 流量。如果没有,您需要检查iptables firewall配置。
  3. 完成上述步骤后,唯一剩下的就是outgoing rulespostrouting masquerade。您可能需要再次检查一下。

答案2

你们是对的。我错过了 POSTROUTING 伪装和转发,如下所示:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 
iptables -A FORWARD -i eth0 -j ACCEPT 
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

相关内容