使用されている IP スタックの数はいくつですか?

使用されている IP スタックの数はいくつですか?

以下のコマンド出力:

~$ 
~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether f0:ff:ff:f9:f1:06 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether ff:ff:ff:ff:ff:44 brd ff:ff:ff:ff:ff:ff
~$ 
~$ 
~$ 
~$ 
~$ 
~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether f0:ff:ff:f9:f1:06  brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ff:ff:ff:ff:ff:44 brd ff:ff:ff:ff:ff:ff
    inet 192.168.68.103/24 brd 192.168.68.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 5181sec preferred_lft 5181sec
    inet6 fe80::6fff:7fff:7ddd:3ddf/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
~$ 
~$ 
~$ 
~$ 
~$ 
~$ route -nNvee
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
0.0.0.0         192.168.68.1    0.0.0.0         UG    600    0        0 wlp2s0   0     0      0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp2s0   0     0      0
192.168.68.0    0.0.0.0         255.255.255.0   U     600    0        0 wlp2s0   0     0      0
~$ 
~$ 
~$ 

  1. 2 つの IPv4 スタック (Linux ネットワーク サブシステム) が実行されていると言えますか? 1 つはeno1インターフェイス用で、もう 1 つはwlp2s0インターフェイス用です...

  2. 私の理解では、各ネットワーク スタック (ipv4 または ip6 など) ごとにルーティング テーブルと eth インターフェイスがあります。ipv4スタック (Linux ネットワーク サブシステム) もありますか? はいの場合、ルーティング テーブルにインターフェイスが表示されないのloはなぜですか?route -nVeelo

答え1

ネットワーク名前空間ごとに、OS ネットワーク データ構造のインスタンスが 1 つあります。これを 1 つの「スタック」としてカウントできます。また、異なるネットワーク プロトコル スタック (IPv4 と IPv6、または Linux でまだサポートされている古いスタックなど) を個別にカウントすることもできます。その場合は、ネットワーク名前空間ごとに 1 つずつになります。

ネットワーク名前空間内のすべてのネットワーク インターフェイスは、同じネットワーク スタック (異なるプロトコルをカウントする場合は複数) に属します。特定のインターフェイス (ルーティング、ファイアウォール) を参照するテーブルやインターフェイスごとのテーブル (アドレス割り当て) が多数ありますが、それらは同じカーネル データ構造インスタンスに属しています。

ループバック インターフェイスもこの点では違いはありませんが、ネットワーク スタックで特別な役割を果たします (ローカル アドレスからローカル アドレスへの送信が関係するたびに使用され、専用のローカル IP アドレスを割り当てる方法も提供します)。したがって、ネットワーク名前空間 (つまりネットワーク スタック) ごとに 1 つのループバック インターフェイスがあります。

答え2

まず、実行しているコマンドは、リンク- 物理インターフェース (MAC アドレスがここに表示されるのはそのためです) - コマンドの方がshow ip addr適している可能性があります。

おそらく、この例では、IPv4 スタック 1 つと IPv6 スタック 1 つの合計 2 つの IP スタックのみが実行されています。

見分ける便利な方法は、何が見えているかで判断することiptablesですip6tables

単一の IPv4 スタック上で実行されているものはすべて を通じてアクセス可能でありiptables、単一の IPv6 スタック上で実行されているものはすべて を通じてアクセス可能であると言うのは、おそらく良い抽象化でしょうip6tables。これは、あなたが提供した情報ではおそらく真実です。 -- を含むすべてのインターフェイスは、lo同じスタックによってサービスされています。

おそらく、同じプロトコルで複数の独立したスタックを実行する唯一の方法は、ネットワーク名前空間または仮想化。

答え3

インターフェイスeno1には IPv4 アドレスがありませんが、インターフェイスにはwlp2s0あります。

インターフェースloには IPv4 アドレスもあります。

全体として、2 つの IPv4 スタックが実行されています。

関連情報