web-dev-qa-db-ja.com

VirtualBoxブリッジアダプターはpingを実行できますが、カールできません

Ubuntu Server 12.04.2を実行する専用サーバーがあります。このサーバーには、A、B、C、Dの4つの使用可能なIPがあります。サーバー自体がAになります。

サーバーは2つのVirtualBoxゲストを実行しており、どちらも「ブリッジアダプター」ネットワークタイプです。 1つのゲストはIPアドレスBを使用してWindows Server 2003を実行しています。もう1つのゲストはIPアドレスCを使用してArch Linux(Live CD)を実行しています。

  1. Ubuntuホストでは、ネットワークは問題ありません。できます apt-get、ダウンロード速度は良好です。
  2. Windowsゲストでは、ping www.google.com cmd.exeで、IE6でwww.google.comにアクセスできません。
  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ゲストで、いくつかのhttpsサイトをwgetしようとしましたが、「Connecting to XXX.XXX.XXX.XXX:443 ... connected」でスタックしました。

変更してみました--nictype1 VMの設定、またはゲストOSでの異なるMTUの設定、あるいはその両方ですが、問題は解決しません。

誰か助けてもらえますか?

追加情報:「ブリッジアダプター」を「NAT」に変更すると、ゲストOSはcurl www.google.com。すべて順調。しかし、パブリックIPが必要なため、ゲストOSには「ブリッジアダプター」を使用する必要があります。

追加情報i 2:「ブリッジアダプター」を備えたゲストOSでは、22/tcpを使用して他のホストをsshできます。53/ udpを使用して一部のドメインをDigできますが、wgetまたはcurlウェブサイトで80/tcpまたは443/tcpを使用しているが、telnet www.google.com 80またはtelnet www.google.com 443 結構です。 「NAT」を使用する場合、すべてが正常です。

6
Zhuoyun Wei

さて、私は自分でこれを理解しました。

私は偶然curl google.comができませんcurl www.google.comと、最初の方がかなり小さいので、これはMTUか何かの問題であり、ゲストOSが大きなデータセグメントを転送できない原因になっていると思います。

「virtual bridged mtu」をグーグル検索した後、私はこの投稿を見つけました: https://forums.virtualbox.org/viewtopic.php?f=7&t=30632&start=

その後、ethtool -K eth2 sg off rx off tx off tso off Ubuntuサーバーで(eth2はブリッジインターフェイスです)、...魅力のように動作します!すぐに

7
Zhuoyun Wei

同じ問題が発生しました。

vmのブリッジnicのデフォルトMTUは1500です。しかし、DFフラグでpingを使用して実際のMTUを検出すると、1498であることがわかります。

したがって、この問題は、ホストにSudo ifconfig eth0 mtu 1498と入力することで解決できます。

0
Samuel Deng