在两个接口之间路由/转发数据包

在两个接口之间路由/转发数据包

我需要通过 VMWare 机器路由我的 PC 网络流量。我考虑的设置是使用具有两个接口的虚拟机并强制 PC 将流量发送到VMNet1而不是Ethernet(使用接口度量或路由)。设置如下图所示:

在此处输入图片描述

我已经启用ip_forward/proc/sys/net/ipv4/,但似乎还不够。

在 PC 中我可以访问ens33ens37

  • 从 PC ping 192.168.1.3 没问题
  • 从 PC ping 192.168.1.4 没问题
  • ARP 表 (arp -a) 在 192.168.1.5 的条目中显示 192.168.1.3-4
  • 我无法通过 VMNet1 ping 192.168.1.1(ping -S 192.168.1.5 192.168.1.1)

在虚拟机中:

  • 正在 Ping 192.168.1.1仅有的通过 ens37 是可以的 (ping -I ens37 192.168.1.1)

问题
通过以上详细信息,我认为我的问题是在虚拟机中路由/转发传入的数据包ens33ens37那么如何做到这一点?

更多信息:

~$ ip route
default via 192.168.1.1 dev ens37 proto static metric 101 
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.3 metric 100 
192.168.1.0/24 dev ens37 proto kernel scope link src 192.168.1.4 metric 101 

~$ networkctl status -a
● 1: lo
       Link File: /usr/lib/systemd/network/99-default.link
    Network File: n/a
            Type: loopback
           State: carrier (unmanaged)
         Address: 127.0.0.1
                  ::1

● 2: ens33
       Link File: /usr/lib/systemd/network/99-default.link
    Network File: n/a
            Type: ether
           State: routable (unmanaged)
            Path: pci-0000:02:01.0
          Driver: e1000
          Vendor: Intel Corporation
           Model: 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
      HW Address: 00:0c:29:2e:5e:a0 (VMware, Inc.)
         Address: 192.168.1.3
                  fe80::a71c:e329:2378:4972

● 3: ens37
       Link File: /usr/lib/systemd/network/99-default.link
    Network File: n/a
            Type: ether
           State: routable (unmanaged)
            Path: pci-0000:02:05.0
          Driver: e1000
          Vendor: Intel Corporation
           Model: 82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
      HW Address: 00:0c:29:2e:5e:aa (VMware, Inc.)
         Address: 192.168.1.4
                  fe80::20c:29ff:fe2e:5eaa
         Gateway: 192.168.1.1 (TP-LINK TECHNOLOGIES CO.,LTD.)
                  fe80::1 (TP-LINK TECHNOLOGIES CO.,LTD.)

~$ ip neigh
192.168.1.103 dev ens37 lladdr 3c:bb:fd:3d:25:00 REACHABLE
192.168.1.103 dev ens33  FAILED
192.168.1.1 dev ens37 lladdr 90:f6:52:03:3b:00 STALE
192.168.1.100 dev ens37 lladdr 40:61:86:e2:dd:00 STALE
192.168.1.1 dev ens33  FAILED
192.168.1.5 dev ens33 lladdr 00:50:56:c0:00:00 STALE


C:\WINDOWS\system32>arp -a

Interface: 192.168.1.100 --- 0x10
  Internet Address      Physical Address      Type
  192.168.1.1           90-f6-52-03-3b-00     dynamic
  ...

Interface: 192.168.1.5 --- 0x1e
  Internet Address      Physical Address      Type
  192.168.1.3           00-0c-29-2e-5e-a0     dynamic
  192.168.1.4           00-0c-29-2e-5e-a0     dynamic
  ...

编辑:
我意识到尽管有网络,我的设置仍然不太正确,我的意思是在一个系统中使用具有相同子网的多个接口是错误的,所以我更改了设置:

在此处输入图片描述

答案1

这可能是由于反向路径过滤。您可以尝试禁用它。数据包在不同的接口上接收和发送,并且使用 rp_filter 的默认行为,数据包将被丢弃。来源:https://access.redhat.com/solutions/53031

相关内容