Назад | Перейти на главную страницу

wget работает только когда tcpdump слушает

Я запускаю две виртуальные машины через гипервизор XEN с надежным Ubuntu (версия Linaro-Developer) со следующей простой настройкой сети моста:

Серверный домен (dom0):

br0       Link encap:Ethernet  HWaddr 02:4d:04:41:96:a9  
          inet addr:141.79.67.109  Bcast:141.79.71.255  Mask:255.255.248.0
          inet6 addr: fe80::4d:4ff:fe41:96a9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4896629 errors:0 dropped:814 overruns:0 frame:0
          TX packets:1134 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:356819584 (356.8 MB)  TX bytes:277236 (277.2 KB)

eth0      Link encap:Ethernet  HWaddr 02:4d:04:41:96:a9  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4906298 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2249 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:430584499 (430.5 MB)  TX bytes:362740 (362.7 KB)
          Interrupt:44 

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:1248 (1.2 KB)  TX bytes:1248 (1.2 KB)

vif1.0    Link encap:Ethernet  HWaddr fe:ff:ff:ff:ff:ff  
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1049 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4767521 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:32 
          RX bytes:66258 (66.2 KB)  TX bytes:416912687 (416.9 MB)

гостевой домен (domU)

eth0      Link encap:Ethernet  HWaddr 00:16:3e:54:95:f5  
          inet addr:141.79.66.105  Bcast:141.79.71.255  Mask:255.255.248.0
          inet6 addr: fe80::216:3eff:fe54:95f5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4879495 errors:0 dropped:815 overruns:0 frame:0
          TX packets:1049 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:358293232 (358.2 MB)  TX bytes:80944 (80.9 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:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:672 (672.0 B)  TX bytes:672 (672.0 B)

Сеть в dom0 работает нормально (apt-get, wget). Buti n domU у меня возникла очень странная проблема: ping работает хорошо, но apt-get и wget не работают.

root@MyUbuntu:~# wget -p http://google.com
--1970-01-01 00:52:49--  http://google.com/
Resolving google.com (google.com)... 129.143.66.27, 129.143.66.29, 129.143.66.30, ...
Connecting to google.com (google.com)|129.143.66.27|:80... connected.
HTTP request sent, awaiting response... No data received.

Я устанавливаю tcpdump на dom0, чтобы отладить проблему, выполнив простую команду:

tcpdump -i br0 -n "tcp and src 141.79.66.105"

Однако всякий раз, когда tcpdump прослушивает wget, apt-get работает хорошо:

root@MyUbuntu:~# wget -p http://google.com
--1970-01-01 00:42:27--  http://google.com/
Resolving google.com (google.com)... 129.143.66.45, 129.143.66.49, 129.143.66.53, ...
Connecting to google.com (google.com)|129.143.66.45|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://www.google.de/?gfe_rd=cr&ei=qJIzVs3qJqSh8wfLma_QCw [following]
--1970-01-01 00:42:27--  http://www.google.de/?gfe_rd=cr&ei=qJIzVs3qJqSh8wfLma_QCw
Resolving www.google.de (www.google.de)... 129.143.66.38, 129.143.66.42, 129.143.66.44, ...
Reusing existing connection to google.com:80.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'google.com/index.html'

    [ <=>                                   ] 19,468      --.-K/s   in 0.003s  

1970-01-01 00:42:27 (5.84 MB/s) - 'google.com/index.html' saved [19468]

FINISHED --1970-01-01 00:42:27--
Total wall clock time: 0.09s
Downloaded: 1 files, 19K in 0.003s (5.84 MB/s)

Открывает ли tcpdump какой-либо порт, через который может проходить трафик? Любая помощь очень ценится. Спасибо.

Когда вы запускаете tcpdump, он переводит интерфейс в неразборчивый режим. Это может быть то, что позволяет данным достигать domU, пока tcpdump активен.

Вы можете проверить эту теорию, добавив --no-promiscuous-mode команде tcpdump. Или вручную установив интерфейс в неразборчивый режим.

Не знаю, как это помогает решить настоящую проблему.

При мостовом подключении физический интерфейс должен находиться в беспорядочном режиме. Это сделано для того, чтобы пакеты, адресованные мосту и виртуальным интерфейсам, можно было видеть и пересылать.

Решение состоит в том, чтобы убедиться, что ваш eth0 настроен с включенным "promisc".