おれさまラボの実験ノート

実際に手を動かして理解を深めるブログ。

Linux ルートテーブルの読み方

はじめに

Linux のルートテーブルは netstat -rnroute -n で確認できます。DestinationGateway、Genmask あたりはよく見るのですが、それ以降の情報はあまり見る機会がありませんでした。気になったので調べてまとめてみました。

環境

Amazon Linux 2 で確認しています。

$ cat /etc/*-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Amazon Linux release 2 (Karoo)

netstatroutenet-tools に含まれ、バージョンは以下のとおりです。

$ netstat --version
net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH
HW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64

ルートテーブルの確認

netstat -r コマンドでルートテーブルを確認できます。

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.255.1.1      0.0.0.0         UG        0 0          0 eth0
10.255.1.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.169.254 0.0.0.0         255.255.255.255 UH        0 0          0 eth0

route -n コマンドでも似た内容が表示されます。

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.255.1.1      0.0.0.0         UG    0      0        0 eth0
10.255.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.169.254 0.0.0.0         255.255.255.255 UH    0      0        0 eth0

Destinationnetstat/route)

宛先のIPアドレスが書かれています。

0.0.0.0 は特殊なアドレスで、デフォルトゲートウェイのアドレスを指します。

Gatewaynetstat/route)

ゲートウェイネクストホップ)のアドレスが書かれています。

0.0.0.0 は特殊なアドレスで、デフォルトゲートウェイを指します。

Genmask(netstat/route)

サブネットマスクのことです。

Genmask の由来は "general" と "netmask" をあわせたものだと言われています。

💬:networking - Difference between "genmask" and "netmask"? - Server Fault

Flags(netstat/route)

  • U:送信経路がリンクアップしていることを示しています。
  • G:送信経路がゲートウェイ宛であることを示しています。
  • H:宛先がネットワークではなく、完全指定のホストアドレス(/32)であることを示しています。

他にもフラグがあるようですが、このくらい知っておけば大丈夫だと思います。

💬:Understanding Routing Table - nixCraft

MSS(netstat

Maximum Segment Size を表します。

"0" という値が何を意味するのかよく分からなかったので誰か知っていたら教えて下さい。

Window(netstat

TCP window size を表します。

ここも "0" という値が何を意味するのかよく分からなかったので誰か知っていたら教えて下さい。

irtt(route)

Initial Round Trip Time を表します。

Initial RTT は TCP Three Way Handshake を見て決定される往復時間のことで、TCP window size の計算に使われるそうです。OS の TCP スタックで処理される Three Way Handshake を見ることで、アプリケーションの影響を受けない純粋な RTT を計測できるとされています。

Iface(netstat/route)

ルーティングインターフェースを表します。

Metric(route)

ネクストホップまでの距離 (通常はホップ数でカウント)を表します。最近のカーネルでは使われていません。

Ref(route)

ルートの参照数を表しますが、Linux カーネルでは使われないそうです。

Use(route)

ルートの検索回数を表します。

参考資料

📰:https://docs.oracle.com/cd/E19504-01/805-1756/troubleshoot6-19973/index.html

📰:networking - Difference between "genmask" and "netmask"? - Server Fault

📰:【 netstat 】 ネットワーク関連の統計情報を表示する | 日経クロステック(xTECH)

📰:Determining TCP Initial Round Trip Time | Packet-Foo | Network Packet Capture and Analysis

📰:Understanding Routing Table - nixCraft

以上