Привет,
Тут столкнулся с проблемой, если коротко, то проблема выглядит так:
# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_req=1 ttl=128 time=1.50 ms
64 bytes from 10.0.0.2: icmp_req=26 ttl=128 time=0.898 ms
64 bytes from 10.0.0.2: icmp_req=27 ttl=128 time=0.624 ms
64 bytes from 10.0.0.2: icmp_req=28 ttl=128 time=0.662 ms
То есть первый пакет проскакивает нормально потом некоторое время пакеты пропадают, а потом становится все хорошо.
Конфигурация:
Вирт.машина (гость) №1 (linux)
два интерфейса: eth0 - 1.2.3.4 (br0 на стороне хоста), eth1 - 10.0.0.3 (br1 на стороне хоста)
Вирт.машина (гость) №2 (windows)
Один интерфейс eth0 - 10.0.0.2 (br1 на стороне хоста)
Конфигурация хоста:
Свежепоставленная ubuntu server 14.04, используем kvm-qemu, Все достаточно стандартно. Из конфигурации сети, самое основное интерфейс br1:
# ifconfig br1
br1 Link encap:Ethernet HWaddr fe:54:00:11:d2:f6
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::9c18:eaff:fe8d:10a4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:87375 errors:0 dropped:0 overruns:0 frame:0
TX packets:76414 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7292173 (7.2 MB) TX bytes:8053821 (8.0 MB)
# brctl show br1
bridge name bridge id STP enabled interfaces
br1 8000.fe540011d2f6 no vnet2
vnet7
# brctl showmacs br1
port no mac addr is local? ageing timer
2 52:54:00:15:84:51 no 0.68
1 52:54:00:17:b3:3a no 0.00
2 fe:54:00:15:84:51 yes 0.00
1 fe:54:00:17:b3:3a yes 0.00
В iptables и ebtables ничего нету.
Смотрим что происходит на уровне интерфейсов витр.машин (guest) на сервере вирт.машин (host)
Как выглядит такой пинг на уровне интерфейса vnet7 (вирт.машина №1, та с которой пингуем)
# tcpdump -pni vnet7
tcpdump: WARNING: vnet7: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet7, link-type EN10MB (Ethernet), capture size 65535 bytes
01:09:36.548777 ARP, Request who-has 10.0.0.2 tell 10.0.0.3, length 28
01:09:36.548994 ARP, Reply 10.0.0.2 is-at 52:54:00:15:84:51, length 28
01:09:36.549070 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 1, length 64
01:09:36.549470 ARP, Request who-has 10.0.0.3 tell 10.0.0.2, length 28
01:09:36.549596 ARP, Reply 10.0.0.3 is-at 52:54:00:17:b3:3a, length 28
01:09:36.549864 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 1, length 64
01:09:37.550364 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 2, length 64
01:09:38.557944 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 3, length 64
01:09:39.565907 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 4, length 64
01:09:40.573974 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 5, length 64
...
01:10:18.877921 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 43, length 6401:10:19.855766 ARP, Request who-has 10.0.0.2 tell 10.0.0.3, length 28
01:10:19.856088 ARP, Reply 10.0.0.2 is-at 52:54:00:15:84:51, length 28
01:10:19.886018 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 44, length 64
01:10:19.886354 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 44, length 64
01:10:20.884996 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 45, length 64
01:10:20.885248 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 45, length 64
01:10:21.884004 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 46, length 64
01:10:21.884359 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 46, length 64
01:10:24.473152 ARP, Request who-has 10.0.0.3 (52:54:00:17:b3:3a) tell 10.0.0.2, length 28
01:10:24.473282 ARP, Reply 10.0.0.3 is-at 52:54:00:17:b3:3a, length 28
Как выглядит такой пинг на уровне интерфейса vnet2 (вирт.машина №2 , ту которую пингуем).
# tcpdump -pni vnet2
tcpdump: WARNING: vnet2: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet2, link-type EN10MB (Ethernet), capture size 65535 bytes
01:09:36.548805 ARP, Request who-has 10.0.0.2 tell 10.0.0.3, length 28
01:09:36.548976 ARP, Reply 10.0.0.2 is-at 52:54:00:15:84:51, length 28
01:09:36.549077 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 1, length 64
01:09:36.549454 ARP, Request who-has 10.0.0.3 tell 10.0.0.2, length 28
01:09:36.549610 ARP, Reply 10.0.0.3 is-at 52:54:00:17:b3:3a, length 28
01:09:36.549707 ARP, Reply 10.0.0.3 is-at 52:54:00:3a:ef:da, length 28
01:09:36.549849 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 1, length 64
01:09:37.550411 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 2, length 64
01:09:37.550690 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 2, length 64
01:09:38.557979 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 3, length 64
01:09:38.558371 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 3, length 64
01:09:39.565930 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 4, length 64
01:09:39.566290 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 4, length 64
01:09:40.574000 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 5, length 64
01:09:40.574414 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 5, length 64
....
01:10:18.877940 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 43, length 6401:10:18.878408 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 43, length 64
01:10:19.855787 ARP, Request who-has 10.0.0.2 tell 10.0.0.3, length 28
01:10:19.856070 ARP, Reply 10.0.0.2 is-at 52:54:00:15:84:51, length 28
01:10:19.886038 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 44, length 64
01:10:19.886337 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 44, length 64
01:10:20.885018 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 45, length 64
01:10:20.885240 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 45, length 64
01:10:21.884029 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 23005, seq 46, length 64
01:10:21.884348 IP 10.0.0.2 > 10.0.0.3: ICMP echo reply, id 23005, seq 46, length 64
01:10:24.473135 ARP, Request who-has 10.0.0.3 (52:54:00:17:b3:3a) tell 10.0.0.2, length 28
01:10:24.473295 ARP, Reply 10.0.0.3 is-at 52:54:00:17:b3:3a, length 28
То есть видно что из одной вирт.машины пакеты успешно вылезают, доходят до второй вирт.машины, которая генерирует ответ, и этот ответ уходит неизвестно куда.