WSL2でip aした結果の調査

2022年11月14日

はじめに

ip aとは

  • ipコマンドはLinuxのネットワークインターフェイスのコンフィギュレーションに関するコマンド
  • ここでのIPはInternet Protocolの略
  • ip aコマンドはip addrコマンドの省略形で、ネットワークインターフェイスのデバイスとIPv4とIPv6のアドレスを全て表示する

WSL2でip aをした結果

  • 調査のついでにdockerも起動した
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: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000 
     link/ether a2:63:37:cc:8c:c8 brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000 
     link/ether 16:2b:20:71:8a:d0 brd ff:ff:ff:ff:ff:ff
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 
     link/ether 00:15:5d:4c:26:18 brd ff:ff:ff:ff:ff:ff 
     inet 172.21.254.173/20 brd 172.21.255.255 scope global eth0 
         valid_lft forever preferred_lft forever 
     inet6 fe80::215:5dff:fe4c:2618/64 scope link 
        valid_lft forever preferred_lft forever
5: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 
     link/ipip 0.0.0.0 brd 0.0.0.0
6: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 
     link/sit 0.0.0.0 brd 0.0.0.0
7: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
     link/ether 02:42:20:e2:db:fc brd ff:ff:ff:ff:ff:ff 
     inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 
         valid_lft forever preferred_lft forever
17: br-63b0d6609416: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
     link/ether 02:42:ca:a0:6b:19 brd ff:ff:ff:ff:ff:ff 
     inet 172.19.0.1/16 brd 172.19.255.255 scope global br-63b0d6609416 
         valid_lft forever preferred_lft forever 
     inet6 fe80::42:caff:fea0:6b19/64 scope link 
         valid_lft forever preferred_lft forever
19: vetha575b05@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-63b0d6609416 state UP group default 
     link/ether a2:22:94:bd:ae:a8 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
     inet6 fe80::a022:94ff:febd:aea8/64 scope link 
         valid_lft forever preferred_lft forever21: veth9918d66@if
20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-63b0d6609416 state UP group default 
     link/ether 02:e1:02:f5:dd:de brd ff:ff:ff:ff:ff:ff link-netnsid 1 
     inet6 fe80::e1:2ff:fef5:ddde/64 scope link 
         valid_lft forever preferred_lft forever

表示の基本構造

  • 一行目
    • 最初の数字
      • インターフェイスインデックス(ifindex)と呼ばれる数字で、各インターフェイスが固有の値を持つ
      • 基本的に同じifindexのインターフェイスは生成されないため、値が飛び飛びになることがある
    • ifindexの後の文字列
      • インターフェイス名。各インターフェイスが固有の値を持つ
      • 一度リストから削除されて再追加される場合、そのインターフェイス名が使われてなければ同じインターフェイス名が使われることもある
    • <>の中
      • インターフェイスフラグ。インターフェイスの管理状態(administrative state)を示す。
    • <>の後
      • インターフェイスの設定内容。「key value」のセットで順に示されている。
      • 各key / valueの意味は後述
  • linkの行
    • データリンク層の情報
    • 各インターフェイスのMACアドレス、ブロードキャストMACアドレスが示される
    • MACアドレスについてはこちら(MACアドレスとIPアドレスについて)にもまとめています
  • inetの行
    • IPv4アドレスとスコープ(アドレスの適用範囲)の情報
  • inet6の行
    • IPv6アドレスとスコープ(アドレスの適用範囲)の情報

設定値の詳細

インターフェイスフラグ

こちらに詳細が書かれています
http://linux-ip.net/gl/ip-cref/ip-cref-node17.html

カーネルレベルのフラグは下記のページのloctlsに書かれています
https://man7.org/linux/man-pages/man7/netdevice.7.html#DESCRIPTION

インターフェイス設定のプロパティ

keykeyの意味value
mtuMaximum Transmission Unitの略。一回の転送で送信可能なIPパケットの最大データサイズ。数値が設定される。65536の場合は65536 Byte一回で送信可能。
qdiscQueueing Disciplineの略。キューイング規則のことで、送信パケットの送信順序の変更、遅延、廃棄等の機能を提供するスケジューラの設定。tcコマンドで操作できる。調査中。
stateインターフェイスデバイスの状態(稼働中かどうか)。
一行目の<>内が管理状態(administrative state)であるのに対し、この項目では動作状態(operational state)を示す。
UP:インターフェイスの電源がON、リンクパルスを他の端末から受け取り、インターフェイスもドライバーも完全に通信準備ができている状態。
DONW:接続先がない状態。
UNKNOWN:不明な状態。ドライバーに動作状態が設定されていない場合はUNKNOWNになる。
groupインターフェイスグループ。こちら(Linux(Ubuntu)のInterface groupについて)に調べた結果を書いた。インターフェイスグループの名前またはID番号(?)。デフォルト値は、名前:default、ID番号:0
qlenQueue lengthの略。キューに送られるパケット長。数値が設定される。デフォルト値は1000。[10]

IPアドレスのスコープ設定

設定値説明
globalどこでも有効
siteそのLAN内(ルーター以下のイメージ)でのみ有効
linkそのインターフェイス上でのみ有効
hostそのホストデバイスのみで有効
例:loopbackなど

参考)https://serverfault.com/questions/63014/ip-address-scope-parameter

各項目詳細

その他参考にしたサイト

  1. https://man7.org/linux/man-pages/man8/ip-address.8.html
  2. https://phoenixnap.com/kb/linux-ip-command-examples
  3. https://qiita.com/jinnai73/items/26865da11f667f57c5e4
  4. http://linux-ip.net/gl/ip-cref/ip-cref-node17.html
  5. https://ameblo.jp/bakery-diary/entry-12618075556.html
  6. https://slacknotebook.com/checking-network-configs-on-linux-using-ip-command/
  7. https://www.kernel.org/doc/Documentation/networking/operstates.txt
  8. https://unix.stackexchange.com/questions/497907/interface-both-up-and-down
  9. https://man.cx/ifconfig(1)
  10. https://www.coverfire.com/articles/queueing-in-the-linux-network-stack/