如何配置 iptables 规则以将 2 个 eth 连接到网络(转发和伪装)

如何配置 iptables 规则以将 2 个 eth 连接到网络(转发和伪装)

需要一些关于配置转发和伪装 iptables 规则的帮助

鉴于我有以下配置:

交换机1---- (eth1)-----路由器---- (eth2)-----交换机2
                                             |
                                             |
                                         (eth0)
                                             |
                                             |
                                      互联网

多台 PC 也通过 switch1 和 switch2 连接

我在 Ubuntu 服务器上运行此网络,我假设 eth1 和 eth2 具有相同的 IP 地址,因为所有连接 PC 的默认网关都是此路由器的 IP 地址。

所以我所做的是:

  • /etc/sysctl.conf并取消注释net.ipv4.ip_forward = 1
  • /etc/rc.local并添加 iptables 规则,例如:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


  • 对于路由器网络接口的配置,请转到/etc/网络/接口

    自动 lo
    iface lo inet 环回自动

    eth0
    iface eth0 inet 静态
    地址 10.151.74.30
    网络掩码 255.255.255.252
    网关 10.151.74.29

    自动 eth1
    iface eth1 inet 静态
    地址 172.16.0.1
    网络掩码 255.255.255.0

    自动 eth2
    iface eth2 inet 静态
    地址 172.16.0.1
    网络掩码 255.255.255.0

    所以问题是,所有通过 eth2 连接到路由器的 PC 都无法连接到互联网(tuntap),但所有通过 eth1 连接的 PC 都可以。

    因此,我在配置 iptables 时是否遗漏了什么?还是我误解了?
    非常感谢您的帮助和建议。我一个月前才开始学习计算机网络,所以基本上需要指导。非常感谢 :)

  • 答案1

    您不能让两个接口使用相同的 IP 地址。此外,即使您将一个接口的 IP 地址更改为同一网络中的另一个地址(例如 172.16.0.2),它也不会正常工作。

    为什么需要在同一网络中使用 2 个接口?交换机交换机1交换机2见面了吗或者他们分开了?

    如果它们互相看到,那么你的配置肯定有问题。

    如果没有,你可以设置另一个网络交换机2,例如 172.16.1.0/24,一切都应该没问题。

    echo 1 > /proc/sys/net/ipv4/ip_forward顺便说一句:如果您有,net.ipv4.ip_forward = 1则不需要/etc/sysctl.conf

    相关内容