【基礎】ipコマンドから紐解くネットワーク~ip route, ip neigh編~ | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

今回も、Linuxのipコマンドを紐解いていく。

 

ip route と、 ip neigh コマンドについて、

 ・コマンドそのもの

 ・コマンドの前提にあるネットワークの仕組み

 ・コマンド実行結果の読み方

について確認していきたい。

 

姉妹編はこちら。

【基礎】ipコマンドから紐解くネットワーク~ip link, ip addr編~

 

もくじ

1.ip route

 ( ルーティングテーブルとは / コマンド実行結果例 / 出力内容の意味 )

2.ip neigh

 ( ARPとは / ARPのキャッシュとは / コマンド実行結果例 /出力内容の意味 )

参考サイト

 

■ip route

ルーティングテーブル(経路情報)を確認するコマンド。
昔は単体で「route」コマンドだったらしい。

 

◎ルーティングテーブルとは

前提として、インターネット通信は、

自分(PCやスマホなど)と宛先サーバの、1:1で直接行われるものではない。

意識することはあまりないかもしれないが、間にいくつものルーターを経て、宛先サーバにたどり着く仕組みとなっている。

(※インターネット通信の基礎について、詳しくはこちらの記事参照)

 

間に入るルーターたちは、各々ルーティングテーブル(別名:経路情報)を持っている。

ルーティングテーブルは、どんなパケットがきたら、どこ宛に送れば良いかを、一覧にしてまとめたものであり、

ルーティングテーブルに基づいてパケットの転送が行われるようになっている。

 

で、このルーティングテーブル(経路情報)の中身を確認できるのが、

ip routeというコマンドである。

 

◎コマンド実行結果例

#ip route    ※「ip r」でも同じ結果出力となる

default via 10.6.32.96 dev eth1 proto static metric 101 
172.17.0.0/16 dev eth1 proto kernel scope link src 172.17.0.1

192.168.0.0/24 dev eth192 prote kernel scope link src 192.168.0.254

 

◎出力内容の意味

コマンド実行結果例の2行目を例に、番号順に内容を説明する。

①172.17.0.0/16 ②dev eth1 ③proto kernel ④scope link ⑤src 172.17.0.1

 

番号/キー(あれば) 意味
宛先ネットワーク。
②/dev 宛先ネットワークに向かうために、
どのネットワークインタフェース(NIC)から出発するか。
③/proto このルーティング情報がどのように生成されたか。
値がkernerlなら、kernelが生成(ダイナミックルーティング)。
値がstaticなら、手動作成(スタティックルーティング)。
④/scope 宛先ネットワークの種別。
値がhostなら、自分自身が宛先。
値がlinkなら、ローカルネットワークが宛先。
値がgrobalまたはscope情報省略時は外部ネットワークが宛先。
なお値がgrobalの時は、ネクストホップのルーター情報が、
別途viaキーにて示される。(コマンド実行結果例の1つめ参照)
⑤/src 送信元IPアドレス。

 

■ip neigh

ARPのキャッシュを確認するコマンド。

 

◎ARPとは何ぞや

Address Resolution Protocolの略。
IPアドレスからイーサネットのMACアドレス(LAN内のMACアドレス)を求めるプロトコル。
ブロードキャスト通信(同一ネットワーク内の全機器に対して一斉に通信)で、問い合わせ要求を行い、
指定されたIPアドレスを持つ機器からMACアドレスを確認する仕組みとなっている。

 

◎ARPのキャッシュとは何ぞや

IP⇔MACアドレスの対応関係を、通信毎にいちいち確認するのは非効率。

そのため、一度確認したIP⇔MACアドレスの対応関係は、ARPテーブルというものに保存され、

一定期間保持される仕組みが存在する。

この仕組みが、ARPのキャッシュと呼ばれるものであり、

ip neighbourコマンドでは、キャッシュの内容を確認することができるようになっている。

 

◎コマンド実行結果例

# ip neigh     ※「ip n」または「ip neighbour」でも同じ結果出力となる

10.0.2.2 dev eth0 lladdr 52:54:10:12:45:02 REACHABLE

192.168.0.11 dev eth1 lladdr 00:0c:35:0b:18:3d STALE

 

◎出力内容の意味

コマンド実行結果例の1行目を例に、番号順に内容を説明する。

①10.0.2.2 ②dev eth0 ③lladdr 52:54:10:12:45:02 ④REACHABLE

 

番号/キー(あれば) 意味
IPアドレス。
②/dev 対象IPアドレスへ通信する場合に利用する、
自分のネットワークインタフェース名。
③/lladdr キー名はLink Local Addressの略。
①のIPアドレスに対応する、MACアドレスを表す。
IPアドレス⇔MACアドレスの対応関係の情報の鮮度状態を示す。
REACHABLEなら、最近対応関係を確認更新できたという意味。
STALEの場合は、更新が最近ではないことを示す。
(STALEだとしても、対応関係が間違っているとは限らない)

 

■参考サイト

https://www.infraexpert.com/study/tcpip2.html

https://qiita.com/cafedrip/items/8f0cc9544910cba23be8

https://qiita.com/testnin2/items/7490ff01a4fe1c7ad61f

https://milestone-of-se.nesuke.com/sv-basic/linux-basic/arp-ip-neighbour/