不使用 NAT 功能在两个有线接口之间进行路由

不使用 NAT 功能在两个有线接口之间进行路由

我有两个内部网络(我不想/有互联网访问),我将我的 Ubuntu 14.04(具有 eth0 和 eth1 网络接口)连接到这两个网络。我从 eth0(网络 192.168.0.0)直接连接另一台 PC1。此外,我还从 eth1(网络 10.1.1.0)直接连接了另一台 PC2。我想从 PC1 ping 到 PC2,无论方向如何,但到目前为止我都无法成功。

当前的 IP 配置为:

- Ubuntu-eth0 has 192.168.0.1
- PC1 has 192.168.0.2
- Ubuntu-eth1 has 10.1.1.1
- PC2 has 10.1.1.2

Ubuntu /etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.0.1
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255

auto eth1
iface eth1 inet static
    address 10.1.1.1
    network 10.1.1.0
    netmask 255.255.255.0
    broadcast 10.1.1.255

Ubuntu /etc/sysctl.conf 还有:

net.ipv4.ip_forward = 1

这是在终端中运行的内容:

~$ sudo iptables -A FORWARD  -i eth0 -o eth1 -j ACCEPT 
~$ sudo iptables -A FORWARD  -i eth1 -o eth0 -j ACCEPT 
~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

通过此配置,我可以从 PC2 ping 通 PC1,但是由于我启用了 nat 功能,我无法从 PC1 ping 通 PC2,而且 PC2 也没有其真实 IP(通过 PC1 中的 Wireshark 看到)。

如何在没有 nat 功能的情况下建立通信通道?我希望的结果是使用目的地的真实 IP ping PC1 -> PC2 和 PC2 -> PC1。我按照许多链接和教程操作,但尚未成功。

提前致谢。

答案1

不要跑

sudo iptables -A FORWARD  -i eth0 -o eth1 -j ACCEPT 
sudo iptables -A FORWARD  -i eth1 -o eth0 -j ACCEPT 
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

net.ipv4.ip_forward = 1只需像您在 中所做的那样打开 IP 转发即可/etc/sysctl.conf

相关内容