【发布时间】:2015-12-26 23:57:19
【问题描述】:
问题
我在我的 vagrant 节点上设置了两个网络接口。 eth1 绑定到.11 地址,eth2 绑定到.12。
当我这样做时:
ping 192.168.1.12
和
ping 192.168.1.11
...并在不同接口上监听节点上的ICMP消息
root@node1:/home/vagrant# tcpdump -i eth1 -v icmp -nn
对于eth1,我正在获取 ICMP,但是在这样做时
root@node1:/home/vagrant# tcpdump -i eth2 -v icmp -nn
我在 tcpdump 上看不到我的 ping 请求。但是,如果我将 ping 请求发送到 .12 并收听 eth1 我会看到请求,这对我来说很奇怪。因此,当我在eth1 接口上侦听时,所有 ICMP 消息都在 tcpdump 中可见 - 即使我 ping .12 地址也是如此。
当.11 被ping'ed 时,我期待看到请求发送到eth1 并在.12 被pin'ed 时看到eth2 - 为什么不是这样?
更新 1:
使用 tcpdump 收听 192.168.1.12 时可以看到广播 ping:
root@node1:/home/vagrant# tcpdump -i eth2 -v icmp -nn and src host 192.168.1.10
tcpdump: listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
05:30:21.800964 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.1.10 > 192.168.1.255: ICMP echo request, id 28770, seq 1, length 64
05:30:22.800953 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
更新 2:
广播表明 L2 和 MAC 地址有问题 - 实际上托管 vagrant 的主机有这个 ARP 表
mindaugas@Mindaugas-Lenovo-Y50-70:~$ arp -an
? (192.168.1.1) at xxxxxxxx [ether] on wlan0
? (192.168.1.12) at 08:00:27:82:f6:0c [ether] on wlan0
? (192.168.1.11) at 08:00:27:82:f6:0c [ether] on wlan0
即使接口有这些:
eth1 Link encap:Ethernet HWaddr 08:00:27:82:f6:0c
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
eth2 Link encap:Ethernet HWaddr 08:00:27:7b:8d:fd
inet addr:192.168.1.12 Bcast:192.168.1.255 Mask:255.255.255.0
将 MAC 地址添加到 ARP 表中:
? (192.168.1.12) at 08:00:27:7b:8d:fd [ether] PERM on wlan0
? (192.168.1.11) at 08:00:27:82:f6:0c [ether] PERM on wlan0
但是现在,我可以看到eth0 上的数据报,但我没有收到ping 回复消息! ...我想知道为什么会这样?
更新 3:
在我的另一台安装了虚拟机和 linux 机作为 VM 的笔记本电脑上进行了尝试。添加了两个接口 - 两个桥接适配器。相同的行为。所以这与虚拟盒子或更一般的东西有关(比如我不了解虚拟网卡的工作原理),不一定是流浪者。
使用的数据:
我在 vagrant 节点上的 ifconfig:
root@node1:/home/vagrant# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:ca:3e:f9
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feca:3ef9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:872 errors:0 dropped:0 overruns:0 frame:0
TX packets:689 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:77679 (77.6 KB) TX bytes:78655 (78.6 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:82:f6:0c
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe82:f60c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:52 errors:0 dropped:0 overruns:0 frame:0
TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7362 (7.3 KB) TX bytes:6796 (6.7 KB)
eth2 Link encap:Ethernet HWaddr 08:00:27:7b:8d:fd
inet addr:192.168.1.12 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe7b:8dfd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2444 (2.4 KB) TX bytes:2520 (2.5 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1184 (1.1 KB) TX bytes:1184 (1.1 KB)
我的流浪文件:
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "node1" do |node1|
node1.vm.box = "ubuntu/trusty64"
node1.vm.hostname = "node1"
config.vm.network :public_network, type: "dhcp", bridge: "wlan0"
config.vm.network :public_network, type: "dhcp", bridge: "wlan0"
# config.vm.network :public_network, bridge: "wlan0", ip: "192.168.1.251"
# config.vm.network :public_network, bridge: "wlan0", ip: "192.168.1.252"
config.vm.provider "virtualbox" do |v|
v.memory = 256
v.cpus = 2
end
end
【问题讨论】:
-
你在 Vagrantfile 中将
..11和..12分配到哪里? -
我相信它们是由 DHCP 自动分配的。如果我删除行
config.vm.network :public_network, type: "dhcp", bridge: "wlan0" config.vm.network :public_network, type: "dhcp", bridge: "wlan0"... 那么接口..11和..12就会消失。我也可以使用静态 IP,如注释行所示。 -
能否尝试刷新主机的 ARP 表并重试? (你 ping 的机器)
-
是的,我试过了——两个 IP 的 mac 相同(
..11和..12的 mac 相同)。当我通过向发出 ping 的机器添加静态路由来指定 mac 地址时,会到达“正确”接口(我用 tcpdump 看到它们)但没有发出回复,因此发出 ping 的机器报告丢包 100 proc。 ...有关详细信息,请参阅更新 2 和更新 3。感谢您的帮助。 -
我可以重现该问题。我也觉得很奇怪。同样
arping ...11提供与arping ...12相同的mac 地址。到目前为止,我还没有答案。
标签: networking vagrant multiple-inheritance