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

Мостовой адаптер VirtualBox может пинговать, но не скручивается

Есть выделенный сервер под управлением Ubuntu Server 12.04.2. Для этого сервера есть 4 IP-адреса: A, B, C, D. Сервер сам принимает A.

На сервере теперь работают два гостя VirtualBox, оба с типом сети «Мостовой адаптер». Один гость работает под управлением Windows Server 2003 с IP-адресом B. Другой работает под управлением Arch Linux (Live CD) с IP-адресом C.

  1. В хосте Ubuntu с сетью все нормально. Я могу apt-get да и скорость загрузки хорошая.
  2. В гостевой системе Windows я могу ping www.google.com в cmd.exe, но я не могу посетить www.google.com в IE6.
  3. В гостевой системе Arch Linux я могу ping www.google.com в zsh, но curl -v www.google.com не работает. я тоже могу telnet www.google.com 80, что означает, что работают как минимум 80 / tcp и 53 / udp порты. (На самом деле на сервере нет брандмауэра iptables.)
  4. В гостевой системе Arch Linux я могу даже ssh на другую машину! (используя стандарт 22 / tcp)
  5. В гостевой системе Arch Linux я пытаюсь wget какой-то https-сайт, он застрял на «Подключение к XXX.XXX.XXX.XXX:443 ... подключен».

Я пробовал менять --nictype1 настройки виртуальной машины и / или других значений MTU в гостевой ОС, но проблема не исчезнет.

Может кто-нибудь помочь мне?

Дополнительная информация: при изменении «Мостового адаптера» на «NAT» гостевая ОС может curl www.google.com. Все хорошо. Но так как мне нужен общедоступный IP-адрес, я должен использовать «мостовой адаптер» для гостевой ОС.

Дополнительная информация 2: В гостевой ОС с "мостовым адаптером" я могу ssh другой хост, использующий 22 / tcp, я могу dig какой-то домен использует 53 / udp, но я не могу wget или curl веб-сайты, использующие 80 / tcp или 443 / tcp, но telnet www.google.com 80 или telnet www.google.com 443 Это хорошо. При использовании «NAT» все нормально.

Ну, я сам в этом разобрался.

Я случайно обнаружил, что могу curl google.com но не может curl www.google.com и поскольку первый из них намного меньше, я думаю, что это проблема с MTU или чем-то еще, из-за чего гостевая ОС не может передавать большой сегмент данных.

После поиска в Google "virtual bridged mtu" я нашел это сообщение: https://forums.virtualbox.org/viewtopic.php?f=7&t=30632&start=0

Потом я попробовал ethtool -K eth2 sg off rx off tx off tso off на сервере Ubuntu (eth2 - это мостовой интерфейс), и ... он работает как шарм! Мгновенно

Я столкнулся с той же проблемой.

MTU по умолчанию для мостового nic в vm составляет 1500. но когда я использую ping с флагом DF для определения фактического MTU, оказывается, что это 1498.

Итак, эту проблему можно решить, набрав sudo ifconfig eth0 mtu 1498 в моем хозяине.