ip コマンドはネットワーク設定コマンドのスタンダード。システムのネットワークパラメータを表示したり設定するコマンドです。 広く使われていた ifconfig が非推奨となり多くのディストリビューションでバンドルされなくなりました。 net-tools などの追加パッケージをインストールしなければなくなり、 ip コマンドへの移行が推奨されています。
システムのすべてのネットワークを表示させる
$ ip addr
$ ip a
上記の2つのコマンドはネットワークデバイスの IPアドレスとプロパティを表示させるコマンドであり、出力結果は同じです。 オブジェクト addr (address の略)の代わりに a だけでも表示させることができます。
enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 40:xx:xx:xx:xx:a1 brd ff:ff:ff:ff:ff:ff
altname enx40xxxxxxxxa1
inet 192.xxx.x.6/24 brd 192.xxx.x.255 scope global dynamic noprefixroute enp4s0
valid_lft 53997sec preferred_lft 53997sec
inet6 2400:2410:xxx:xxx:xxxx:1623:3414:4f9a/64 scope global dynamic noprefixroute
valid_lft 14396sec preferred_lft 12596sec
inet6 fe80::7bab:xxxx:xxxx:6239/64 scope link noprefixroute
valid_lft forever preferred_lft forever
ifconfig -a とほぼ同じ情報が表示されます」。
L1 (インターフェースの基本情報と状態)
最初の行は、インターフェースの物理的な状態や設定を示しています。
インターフェイス名について
enp4s0 は物理的なデバイスにつけられたインターフェイス名です。旧来のように eth0 ではなく、 なぜ enp4s0 という奇妙なインターフェイス名が割り当てられているのかというと、多くの Linux ディストリビューションが systemd/udev に移行したことによって新たな命名ルール「Predictable Network Interface(予測可能なネットワークインターフェイス)」の下でデバイスに名前が割り当てられるようになったからです。
新ルールになった理由として、旧来のようにカーネルがデバイスを検知した順番にインターフェイス名を eth0 、 eth1 、wlan0 、wlan1 というように割り振ると、誤ったネットワークインターフェースに適用されてしまう危険性があるためです。
例えば、カーネルのブート前に以前起動したときとは違うデバイス構成にしてしまえば、インターフェイス名が変わってしまう場合があり、その回線向けに設定したファイヤーウォールが無意味になってしまいます。
これを解決するため、 systemd では Predictable Interface Names を採用し、より細かくハードウェアの物理的な位置をもとに割り振るようになりました。 en は「Ethernet 」(イーサネット)。p は「PCI bus 6」 イーサネットカードのポート(バス)番号。s は「slot/function 0」スロット番号といった意味があります。
このように安定性と管理性が大幅に向上します。
参考:freedesktop.org – Predictable Network Interface Names
<BROADCAST,MULTICAST,UP,LOWER_UP> の意味
不等号(<>)に囲まれた情報はそのインターフェイスのステータスを示しています。
| 解説 | |
|---|---|
| BROADCAST | ブロードキャストが有効になっている |
| MULTICAST | マルチキャストが有効になっている |
| UP | ネットワークインターフェイスが有効状態 |
| LOWER_UP | (Driver signal L1 up) 物理層リンクが確立している |
| RUNNING | デバイスが作動中である |
| LOOPBACK | ループバック状態 |
【補足】例えば、ケーブルが抜けていてもネットワークインターフェースが有効になっていれば <UP> となります。接続状態を確認するには <LOWER_UP> が表示されている必要があります。
その他の基本プロパティと状態
| 解説 | |
|---|---|
| mtu 1500 | 最大送信単位(Maximum Transmission Unit)。一度に送信できるパケットの最大サイズが 1500 バイトであることを示す。 ・mtu 9000 なら Jumbo Frame |
| qdisc fq_codel | ・qdisc(Queueing Discipline) はどのパケット送信制御アルゴリズムが使われているのかを示している。 ・ fq_codel(Fair Queueing Controlled Dely) は systemd のデフォルトで低遅延を実現するための比較的新しい方式。他にも10種類ほどあるがここでは省略。 |
| state UP | インターフェースが現在アクティブであることを示す。非アクティブの場合DOWN。 |
| group default | インターフェースグループ。 ・高度なネットワーク制御で使用。一般利用では default |
| qlen 1000 | 送信キューの長さ.送信まちパケット数。 |
| scope link | 送信先はローカルネットワーク内のみ。 |
L2(データリンク層情報)
2行目は物理的なハードウェア(MACアドレス)に関する情報を示している。
link/ether 40:xx:xx:xx:xx:a1 brd ff:ff:ff:ff:ff:ff
altname enx40xxxxxxxxa1
llink/ether | イーサネットデバイスであることを示す。無線の場合は wireless |
40:xx:xx:xx:xx:a1 | システムに搭載されている NIC(ネットワークカード)固有の MACアドレスを示す。48bit ハードウェア識別子。 ・ 40:xx:xx まではベンダID(OUI) |
brd ff:ff:ff:ff:ff:ff | レイヤー2(データリンク層)におけるブロードキャストアドレス(通常は全ビットが 1 )。 |
altname enx40xxxxxxxxa1 | MAC アドレスをベースにした名前で、システム内部で識別用に使われることがある。 |
L3 (IPv4 アドレス情報)
inet で始まる行は、 IPv4 のネットワーク設定情報を示している。
inet 192.xxx.x.6/24 brd 192.xxx.x.255 scope global dynamic noprefixroute enp4s0
valid_lft 53997sec preferred_lft 53997sec
inet | ・デバイスに割り当てられた IPv4アドレス。 ・/24 はサブネットマスク(CIDR)が 255.255.255.0 であることを示す。 |
brd | ネットワーク内でのブロードキャストアドレス。 |
scope global | このアドレス(IPv4)がグローバルに有効であることを示す。 ・scope global : 送信先はグローバル。 ・scope link : ローカルネットワーク内。 ・scope host : 自システムのみ。 |
dynamic | DHCP サーバーなどによって動的に割り当てられたことを示す。 |
noprefixroute | アドレスが割り当てられた際に、カーネルが自動的にルーティングテーブルに経路を追加しない設定 ・NetworkManager や systemd-networkd が管理している場合によく見られる。 |
valid_lft 53997sec | 「Valid Lifetime(有効期限) 」の略。DHCP のリース期間に関連する「有効期限」。 ・最長の有効期限を示す ・このIPアドレスが約15時間使用可能 |
preferred_lft 53997sec | 「Preferred Lifetime (推奨期限)」の略 |
L3 (IPv6 アドレス情報)
inet6 から始まる行は IPv6 アドレス情報を表しています。
inet6 2400:2410:xxx:xxx:xxxx:1623:3414:4f9a/64 scope global dynamic noprefixroute
valid_lft 14396sec preferred_lft 12596sec
inet6 fe80::7bab:xxxx:xxxx:6239/64 scope link noprefixroute
valid_lft forever preferred_lft forever
1行目にはグローバルアドレスが表示され、2行目にはリンクローカル(内線)が表示されています。
inet6 | IPv6 のアドレス ・fe80 で始まるアドレスはリンクローカルアドレスと呼ばれる。 |
scope | このアドレス(IPv6)が現在どのような送受信設定か示す。 ・scope global : 送信先はグローバル。 ・scope link : ローカルネットワーク内。 ・scope host : 自システムのみ。 |
| dynamic | DHCP サーバーなどによって動的に割り当てられたことを示す。 |
| noprefixroute | アドレスが割り当てられた際に、カーネルが自動的にルーティングテーブルに経路を追加しない設定 ・NetworkManager や systemd-networkd が管理している場合によく見られる。 |
valid_lft | 「Valid Lifetime(有効期限) 」の略。IPv6アドレスの寿命を示す。通常DHCPを使用している場合、秒単位で数値が表示される。 ・IPv6 のリンクローカルアドレス(fe80)は通常、期限なし(forever)で保持されう。 |
preferred_lft | 「Preferred Lifetime (推奨期限)」の略。 |
このシステムのネットワーク状態は有線 LAN ケーブルがしっかり接続され、DHCP サーバーから正常に IPアドレスを取得して通信ができる健全な状態にあることがわかります。
NetworkManager が、DHCP から取得した IPv4 アドレスを動的に制御しつつ、IPv6 はローカル通信用に自律的に構成を完了させている
valid_lft forever と preferred_lft forever ってなに?
valid_lft と preferred_lft は、その IPアドレスがいつまで有効か、を表しているパラメーターです。IPv6 は無限にアドレスを生成できると言われているのに、なぜ期限が存在するのかというと DHCPサーバーのルーティングテーブル(住所録)には限界があるのとネットワークの健全性を保つために定期的に使われていない古いアドレスを放棄させ、再整理・最適化するためにあります。またプライバシーの観点でも必要な期限です。
- preferred_lft「Preferred Lifetime(推奨期限):外部への通信を行う際、そのアドレスを送信元アドレスとして優先的に選択すべき期間を定義します(これにより、特定のアドレスプレフィックスを段階的に廃止・移行させることが可能になります)。
- valid_lft「Valid Lifetime、有効期限」:そのアドレス自体がいつまで使用可能かを定義します。これはDHCPのリース期間に直接対応するものです。
もともと IPv6 のパラメータですが、一部の IPv4 DHCPクライアントで転用(再利用)されています。
IPv4 の DHCP には本来このような(推奨 / 有効を分ける)概念がないため、通常は「Valid Lifetime(有効)」と同じ値が設定されます。
IPv6 では、アドレスが「推奨(Preferred)」期間を過ぎると「期限切れ間近(Deprecated)」という状態になります。この状態では、既存の通信は維持されますが、新しい通信の送信元としては使われなくなります。IPv4ではこの区別がないため、基本的には「リース期間=有効期限」というシンプルな扱いになります。
forever の意味
forever は、そのアドレスは自動的に消滅することはない(無期限)ことを示しています。
通常、以下のようなケースで forever になります。
- 静的に設定したアドレス: 手動で設定したアドレスや、設定ファイルで固定したアドレス。
- ループバックアドレス (::1): 常に存在する必要があるため。
- リンクローカルアドレス (fe80::…): OS によって自動生成され、基本的には消えることがないため。
お わ り
image from Thomas Jensen




コメント