来自 vlan 设备的 ping 得到目标主机无法访问

来自 vlan 设备的 ping 得到目标主机无法访问

我把一个vlan设备eth0.100设置为192.168.1.100。 eth0 的地址为 10.137.16.108

当我使用地址 ping 时,看起来效果很好。

$ ping 10.137.16.108 -I 192.168.1.1

PING 10.137.16.108 (10.137.16.108) from 192.168.1.100 : 56(84) bytes of data.
64 bytes from 10.137.16.108: icmp_seq=1 ttl=64 time=0.153 ms
64 bytes from 10.137.16.108: icmp_seq=2 ttl=64 time=0.058 ms
64 bytes from 10.137.16.108: icmp_seq=3 ttl=64 time=0.060 ms
^C
--- 10.137.16.108 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.058/0.090/0.153/0.045 ms

但如果我使用设备名称 eth0.100 执行相同的 ping,则目标主机无法访问。

$ ping 10.137.16.108 -I eth0.100

PING 10.137.16.108 (10.137.16.108) from 192.168.1.100 eth0.100: 56(84) bytes of data.
From 192.168.1.100 icmp_seq=1 Destination Host Unreachable
From 192.168.1.100 icmp_seq=2 Destination Host Unreachable
From 192.168.1.100 icmp_seq=3 Destination Host Unreachable
^C
--- 10.137.16.108 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4024ms

我猜这是关于 arp 表的问题

$ ARP

 Address            HWtype  HWaddress   Flags Mask            Iface
 10.137.16.108        (incomplete)                          eth0.100

因为我需要 vlan 设备名称才能使用 SOL_SOCKET 和 SO_BINDTODEVICE 发送原始套接字,你能帮我吗?

谢谢

答案1

更新:

我的目标是想要操纵流量控制共享设备带宽到 10 个或更多小型虚拟机或程序。我使用 vconfig 命令创建虚拟接口并使用 tc 命令。当我使用地址作为主机和虚拟开发之间的流量时,使用 vconfig 制作的开发看起来不错。但当我使用虚拟开发标签通过 ip 协议进行流量时,它看起来有问题。

我找到了解决问题的方法。正如这篇文章:[如何在没有物理适配器的计算机上创建虚拟以太网接口?

解决方案是使用 iproute2 工具包。它创建一个对等虚拟接口。

ip link add veth0 type veth peer name veth1

添加两个虚拟设备的地址。

sudo ip addr add 10.1.1.1/24 dev veth1 && ip set dev veth1 up
sudo ip addr add 10.1.1.2/24 dev veth1 && ip set dev veth2 up

然后我可以使用 dev 名称作为 veth2 来 ping 10.1.1.1 看起来工作正常。

ping 10.1.1.1 -I veth2

 PING 10.1.1.1 (10.1.1.1) from 10.1.1.1 veth2: 56(84) bytes of data.
 64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.021 ms
 64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=0.041 ms
 ^C
 --- 10.1.1.1 ping statistics ---
 5 packets transmitted, 5 received, 0% packet loss, time 3999ms

我发现 veth 类虚拟设备有虚拟的 Mac 地址。可能它适用于 ARP 和 RARP。

veth1     Link encap:Ethernet  HWaddr 1a:8d:89:82:da:68  
      inet addr:10.1.1.1  Bcast:0.0.0.0  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

veth2     Link encap:Ethernet  HWaddr 2e:11:c9:ad:9c:e7  
      inet addr:10.1.1.1  Bcast:0.0.0.0  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

感谢您的帮助。

彼得

相关内容