ホストが特定のネットワークにローミングすると、QEMU「ユーザーネットワーク」でDNS解決が停止するのはなぜですか?

ホストが特定のネットワークにローミングすると、QEMU「ユーザーネットワーク」でDNS解決が停止するのはなぜですか?

私はラップトップでGNOME Boxを使用しています。ラップトップがネットワーク(イーサネット、別の場所のWi-Fi、またはUSBモデムとして機能する携帯電話)間を移動するたびに、ゲストコンピュータはデフォルト設定を使用して自動的にインターネット接続を取得します。

ゲストシステムはホストにブリッジされず、ホストのLANには表示されません。訪問者のMACアドレスを上書きしました。フレームをホストのLANに転送する前。

基本的にQEMUは SLRP ゲスト用のユーザーネットワークバックエンドと仮想ネットワークアプライアンス...

ユーザーネットワークQEMU内で完全なTCP / IPスタックを提供し、このスタックを使用して仮想NATネットワークを実装する「slirp」を使用して実装されました。

QEMUの最後で最も奇妙なネットワーキングオプションはデフォルトオプションでもあります。その機能は「ユーザーモードネットワークスタック「to vlan。ネットワークスタックは、ip、tcp、udp、dhcp、tftpなどのプロトコルを独立して実装したものです。たとえば、有効なアドレスでdhcp要求に応答したり、tftpに応答してvlanのフレームを処理したりできます。 . ホストファイルシステムファイルからファイルをインポートしたり、パケットデータを転送したりできる udp/tcp ソケットを作成します。

ネットワークスタックは、qemuプロセス自体内で実行されます。たとえば、これらの要求を処理するための独立したdhcpまたはtftpプロセスはありません。スタックは、udp / tcpパケットからアプリケーションデータを解凍し、それをqemuプロセスとターゲットプロセスを接続するソケットに渡すことによって効果的にプロキシとして機能します。

上記の文脈では、「vlan」は「エミュレートされた」LANを意味します。IEEE 802.1Q VLAN ID を意味するものではありません。

デフォルトでは、ゲストは10.0.2.0/24ネットワークで10.0.2.15 IPアドレスを持ちます。ゲートウェイは10.0.2.2です。 DNSサーバーは10.0.2.3です。ゲストは10.0.2.2ゲートウェイIPに接続してホストにアクセスできます。

ここに画像の説明を入力してください。

特定のWi-Fiネットワークでは、すべてのゲストコンピュータがインターネットにアクセスできるわけではありません。私が見つけたインターネット不足に関する別の質問QEMU下のゲストでは、特定の設定の下でDNSがデフォルトで機能しない可能性があることがわかりました。だから私は私を確認しました。訪問者のIPを介してWebサイトにアクセスできます。さらに、IPv4接続を手動で設定し、デフォルトの10.0.2.3以外に他の既知のリゾルバ(8.8.8.8など)をバックアップとして追加すると、解像度も復元されます。

ローカル管理者によると、Wi-Fiネットワークでは、ローカルコンピュータとゲストコンピュータを分離するためにVLANタグが有効になっています。もちろん、VLANが問題であれば、単に問題を解決するのではなく、インターネットアクセスが完全に中断されます。

このネットワークのもう1つの特徴は、最初のDNSリゾルバがほとんどの要求を拒否するように構成されていることです。 2番目のパーサー8.8.8.8が提供されていますが、QEMUはそれを使用していないようです。

他のデバイスでも問題は持続します。私はIntelワイヤレステクノロジを搭載した2つの完全に異なるラップトップを試しました。この問題は、Debian「Buster」、「Bullseye」、「Sid」10.4以降から発見されました。

ベストアンサー1

デフォルトの「ユーザーモード」ネットワークでは、QEMUはホスト上の最初のDNSネームサーバーのみを使用します。したがって、そのネームサーバーが正しく検証されない場合、QEMUはホスト上のセカンダリネームサーバーとして構成できる他のネームサーバーに置き換えられません。これにより、ゲストのインターネット接続が明らかに失われますが、ホストは代替ネームサーバーを使用してまだ問題を「隠す」ことができます。

これは既知のQEMU動作であり、QEMUで修正されるとは予想されません。これは男の名言です。2011年のDebianバグレポートログ#625689:

いいえ、これらの制限はまだ文書化されておらず、修正が困難であるか、実際に問題を引き起こす価値がない可能性があります。 2つの理由があります。まず、ユーザーモードネットワーキングは深刻な作業には適していません。オフロードネットワーキングにはブリッジを使用する必要があります。これは約100倍速く、実際に動作します(例:ICMP)。第二に、実装は非常に簡単です。 DNSの場合、ゲスト(NATボックスなど)のパケットをホスト/resolv.confからネームサーバーに転送します。同時。したがって、この問題を解決するには、qemuは単純なNAT「デバイス」ではなくDNSのアプリケーションレベルのプロキシである必要があります。

まず、ホストにいくつかのジャンクを追加すると、nameserver問題を簡単に再現できます。/etc/resolv.confゲストはすぐにスピーチを中止しました。

Debianクライアントの場合、ネットワークを復元するには、他の既知のリゾルバ(8.8.8.8など)をネットワークに追加するだけです/etc/resolv.conf。これらの設定変更は、クライアントを再起動しても保持されません。

おすすめ記事