Kali-linuxをオペレーティングシステムとして使用して、Oracle VMにいくつかの仮想マシンを設定しています。初めてNATネットワークを作成するとき、インターネットは一般的にうまく機能しますが、MACアドレスの変更などの操作を実行するとすぐにコンピュータとは言いますが、インターネット接続が機能しなくなりwired connection
ますconnected
。
接続が機能するには、毎回新しいNATネットワークを作成する必要がありますが、しばらくしてから停止した後は、Macアドレスを変更することに関連していると思います。私がしたことは次のとおりです。
ifconfig eth0 down
ifconfig eth0 hw ether 'new mac address'
ifconfig eth0 up
この過程で何が間違っているのかを知っている人はいますか?
現在の結果は次のとおりですifconfig
。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.4 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::a00:27ff:fe82:e693 prefixlen 64 scopeid 0x20<link>
inet6 fd17:625c:f037:2:a00:27ff:fe82:e693 prefixlen 64 scopeid 0x0<global>
inet6 fd17:625c:f037:2:8c24:fafd:c5e0:725c prefixlen 64 scopeid 0x0<global>
ether 08:00:27:82:e6:93 txqueuelen 1000 (Ethernet)
RX packets 44 bytes 11250 (10.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 423 bytes 38119 (37.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 24 bytes 1356 (1.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24 bytes 1356 (1.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
答え1
ここで観察しているのは、TCP / IPスタックの下で敷物を引っ張るときに起こることです。 :D
実際、ここには2つの現象があります。
1. デフォルトゲートウェイの欠落の落とし穴
これはとても簡単です。
走るifconfig eth0 down
デフォルトゲートウェイの削除構成ゲートウェイに関連付けられたネットワークが削除されたため、仮想マシンのルーティングテーブルです。
走るifconfig eth0 up
だろういいえデフォルトゲートウェイの復元;以前のIPアドレスとサブネットマスクのみを保持します。を実行しようとすると、「フラグ」列の下にある行は表示されませんroute -n
。G
このような場合、インターネットにアクセスしようとする仮想マシンのすべてのプログラムは、ホストが見つかりません「、または」ネットワークに接続できない「間違い。
route add default gw GATEWAYIP
デフォルトゲートウェイを復元するには、手動で実行する必要があります。
GATEWAYIP
これを実際のデフォルトゲートウェイアドレスに置き換えることを忘れないでください。この汚れた作業を実行する前に、または/etc/network/interfaces
実行route -n
コマンドを確認し(そしてその行の「ゲートウェイ」列の「フラグ」列の下を見てください)、とにかくVirtualBoxの下にG
あります。10.0.2.2
ただし、デフォルトゲートウェイを復元した後でも、仮想マシンがまだインターネットに接続できないか、より正確にはインターネットが応答できないことがわかります。その理由は…
2. 遅延ARPキャッシュの影響
イーサネットによるTCP / IPの使い方を知っていますか?ARPIPと一致するMACアドレスを見つけることが実際に通信できる唯一の方法でしょうか。
私が知っている限り、これはVirtualBoxインスタンス内で何が起こっているのかについてのタイムラインです。
- 仮想マシンが起動すると、元のMACアドレスを使用してインターネットからエントリを要求します。
- VirtualBoxのNATエンジンは、インターネットから仮想マシンにデータを再送信するために、仮想マシンのMACアドレス1も必要です。
- VirtualBoxのNATエンジンは、最初に仮想マシンがどのMACアドレスを持っているかを知らないので、ARP要求を行い、マシンはそれを使用します。オリジナルMACアドレス。
- VirtualBoxのNATエンジンは、仮想マシンのMACアドレス(および関連するIPアドレス)をARPキャッシュに保存します。;これは正常なことです。
- 仮想マシンのMACアドレスを変更しました。今、化粧をしている人IPアドレスを変更しません。。
- 仮想マシンで再インターネット要求を行うと、その要求に新しいMACアドレスが使用されます。1
- VirtualBoxのNATエンジンがあなたの要求を受けました(ただし、MACではなくIPのみを考慮してください。)通常はインターネットに配信されます。
- インターネットが応答すると、VirtualBoxのNATエンジンはこの応答を仮想マシンに転送するために仮想マシンのMACアドレスを必要とします。
- VirtualBoxのNATエンジンは、独自のARPキャッシュから仮想マシンのIPアドレスを検索します。そして発見MACアドレスの期限切れの履歴がないため、ARP要求は再発行されません。 (しかし、VirtualBox不明- 見つかったMACアドレスは古くて未使用のアドレスです。)。
- VirtualBoxのNATエンジンは、仮想マシンにインターネット応答を送信します。古い新しいアドレスの代わりにMACアドレス。
- 新しいMACアドレスを使用している仮想マシンが応答を受け取らず、タイムアウトします。kali-linux 仮想マシンのインターネットが正常に動作しません。」。
デフォルトゲートウェイ設定が変更された後も、ARPキャッシュエントリが期限切れになるか、仮想マシンのIPアドレスを変更するまで、仮想マシンのインターネットアクセスは停止され続けます。
結論
VirtualBoxのNATエンジンが内部的にARP応答をどのくらいの時間キャッシュしているかわからないので、私は提案します。解決策IPアドレスの変更仮想マシンのMACアドレスを変更した後、二次効果を防ぐため。そしてIPアドレスを変更してインターフェースを呼び出した後、あなたを確認また、デフォルトゲートウェイを再度追加します。最初のトラップを防ぐために。 (route -n | grep UG
確認用)
1VirtualBoxのNATエンジンは、各要求パケット自体で仮想マシンのMACアドレスを学習する必要があると考えることもできます。これは仕事をする方法ではありません;ランダムIP/MACアドレスのなりすましを多く許可するからです。したがって、明示的なARP要求によって要求されたMACアドレスのみがルーティングに使用/キャッシュされ、ランダムパケットで学習されません。