完全にソフトウェアで実装された仮想ネットワークデバイスです。
しかし、この実装は実際にどのように達成され、どのように操作しますか?
私の知る限り、IPはローカルルーティングテーブルでローカルとしてマークされています。
ip route show table local
ローカルとしてマークされたIPに送信すると、ループバックデバイスがトリガーされます。 しかし、この検出は純粋にルーティングテーブルまたは他のカーネル操作によって行われますか?
編集:私の最終的な目標は、ラップデバイスのインターフェイス(2つのwlanアダプター)でデータグラムを送信すると、ローカルループではなくネットワークの実際のトラフィック/データグラムになるように、ループデバイス構成を操作することです。インターフェース1-> WLAN->インターフェース2およびNOT:インターフェース1->ループ->インターフェース2
ルーティングテーブルを介して完全に処理されます。
楽しみたいなら、仮想マシンで試すのはとても簡単です。私はあなたがこれを試すマシンで起こるかもしれないことに対して責任を負いません。
まず、lo
のネットマスクを255.255.0.0に変更します。
Sudo ip addr del 127.0.0.1/8 dev lo; Sudo ip addr add 127.0.0.1/16 dev lo
では、lo
を見てみましょう。
$ ip -4 addr show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
inet 127.0.0.1/16 scope Host lo
127.1.1.1へのパケットはどこに行きますか?
$ Sudo ip route get 127.1.1.1
127.1.1.1 via 172.16.22.2 dev eth0 src 172.16.22.130
cache mtu 1500 advmss 1460 hoplimit 64
別のターミナルでpingを開始します。
$ ping 127.1.1.1
Eth0のICMPトラフィックを監視しましょう:
$ Sudo tcpdump -i eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
07:28:42.060077 IP 172.16.22.130 > 127.1.1.1: ICMP echo request, id 5665, seq 4, length 64
07:28:43.059920 IP 172.16.22.130 > 127.1.1.1: ICMP echo request, id 5665, seq 5, length 64
リモートマシン上のlo
のネットマスクを255.255.0.0に変更し、ネットワークインターフェースにIPアドレス127.1.1.1を追加する演習を行います。 ICMP応答が戻ってくるのを見ることができます。ルーターがうまく動作しない可能性があることに注意してください。