ping 请求未在一个方向转发

Pet*_*ber 5 networking linux routing gateway linux-networking

编辑:就在我完成这篇超长的帖子时,我解决了我的问题。我根本没有在我的 Windows 防火墙中启用 ping 回复,这就是为什么我无法从网络 1 或 2 ping 网络 0 上的计算机(见下文)。当然,当我尝试 ping 网络 0 上的互联网路由器时,它不起作用,因为我忽略了在其上设置非默认网关,就像我在 Windows 上设置的一样。

所以,我给你一个“正确”的方法来设置一个 linux box 作为子网之间的简单网关。请记住在客户端上正确设置所有网关(简单规则:默认网关应该是到 Internet 的路由,然后为连接到子网中其他网关的每个子网设置 1 个网关。

我正在创建一个带有连接 3 个子网的 Ubuntu linux 机器的测试网络。这是我的拓扑:

               ***********************
               * Internet Router     *
               *    192.168.2.1      *
               ***********************
                         *                   ***************
                         *                   *  Client 0   *
                   ***************           *192.168.2.117*
                   * Switch      * * * * * * *  Windows    *
                   ***************           ***************
                         *                               
                         *  192.168.2.0/24 = Network 0
                         *
 Network 1         ***************        Network 2
192.168.1.0/24     *    eth0     *       10.25.0.0/16
       * * * * * * *             * * * * * * * 
      *            *eth1     eth2*           * 
      *            *             *           * 
      *            *             *           * 
*************      * Ubuntu Srvr *      *************
*192.168.1.5*      ***************      * 10.25.0.5 *
*           *                           *           *
* client 1  *                           * client 2  *
*           *                           *           *
*************                           *************
Run Code Online (Sandbox Code Playgroud)

我的 ubuntu 服务器的 /etc/network/interfaces 文件是:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.2.192
    network 192.168.2.0
    netmask 255.255.255.0
    broadcast 192.168.2.255
    gateway 192.168.2.1

# Subnet 1
auto eth1
iface eth1 inet static
    address 192.168.1.1
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255

auto eth2
iface eth2 inet static
    address 10.25.0.1
    network 10.25.0.0
    netmask 255.255.0.0
    broadcast 10.25.255.255
Run Code Online (Sandbox Code Playgroud)

net.ipv4.ip_forward=1在 /etc/sysctl.conf 中取消了注释

我也运行了命令 echo 1 > /proc/sys/net/ipv4/ip_forward

客户端 1 的默认网关是 192.168.1.1

客户端 2 的默认网关是 10.25.0.1

网络 0 上的客户端 0 有 3 个网关:

  1. 默认值:192.168.2.1(互联网路由器)
  2. 192.168.1.0/24: 192.168.2.192 (ubuntu eth0)
  3. 10.25.0.0/16: 192.168.2.192 (ubuntu eth0)

我正在用 ping 测试这个设置。

  1. 我可以从网络 0 ping 任何网络上的任何计算机。
  2. 我可以通过网络 1 或 2 ping 网络 1 或 2 上的任何计算机。
  3. 问题是我无法从网络 1 或 2 ping网络 0 上的任何计算机

使用 iptraf,我看到 eth1 上的 ping req 从 192.168.1.5 到 192.168.2.117

但是,我没有看到回应。

...刚刚想通了(见开头的编辑)。如果你做到了这一步,很抱歉让你失望了。

Pet*_*ber 1

当我完成这篇超长的文章时,我解决了我的问题。我根本没有在 Windows 防火墙中启用 ping 回复,这就是为什么我无法从网络 1 或 2 ping 网络 0 上的计算机(见下文)。当然,当我尝试 ping 网络 0 上的互联网路由器时,它不起作用,因为我忽略了像在 Windows 上那样在其上设置非默认网关。

因此,我为您提供“正确”的方法来将 Linux 盒子设置为子网之间的简单网关。只需记住正确设置客户端上的所有网关(简单规则:默认网关应该是到互联网的路由,然后为连接到子网中其他网关的每个子网设置 1 个网关。