Linuxサーバでルーティング確認するコマンドについてまとめました。
CentOSやUbuntuのOSでルーティング確認したい方は読んでください。
Linuxサーバーでルーティング確認するコマンド

Linuxサーバーでルーティングの確認をしたり、設定する時に使用するツールによってコマンドが違います。
- iproute2
 - net-tools
 
どちらのコマンドもルーティング確認できますので、ご自身の環境に合わせて使用してください。
| iproute2ツールのルーティング確認コマンド | net-toolsツールのルーティング確認コマンド | 
|---|---|
| ip route show | netstat -r | 
| route | 
net-toolsツールのルーティング確認コマンドは2つあります。
iproute2ツールでルーティング確認する
iproute2ツールでルーティング確認するコマンドを以下に示します。
ip route showまたは「ip route」だけでも良いです。
[root@localhost ~]# ip route show
default via 192.168.0.1 dev enp0s3 proto dhcp metric 100
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.4 metric 100
192.168.222.0/24 dev enp0s3 proto kernel scope link src 192.168.222.0ルーティング確認出来ました。
net-toolsツールでルーティング確認する

net-toolsツールでルーティング確認するコマンドを以下に示します。2種類あります。
netstat -r
route 実際に「netstat -r」コマンドでルーティング確認してみます。
[root@localhost ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         router          0.0.0.0         UG        0 0          0 enp0s3
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 enp0s3
192.168.222.0   0.0.0.0         255.255.255.0   U         0 0          0 enp0s3「route」コマンドでルーティング確認してみます。
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         router          0.0.0.0         UG    100    0        0 enp0s3
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
192.168.222.0   0.0.0.0         255.255.255.0   U     0      0        0 enp0s3ルーティング確認出来ました。
補足としてルーティングテーブルのFlagsの項目についてまとめます。
| ルーティング確認のFlags項目 | 意味 | 
|---|---|
| U | UPしている。有効 | 
| G | Gateway。デフォルトゲートウェイを表す | 
| H | Host。ネットワークではなくホストを表す | 
| ! | 経路を拒否。無効 | 
DNS名前解決せずにルーティング確認する方法
net-toolsツールの「netstat -r」コマンドや「route」コマンドでは「Gateway」の値がIPアドレスではなく「router」になっています。
原因はルータのIPアドレスをDNS名前解決している為です。名前解決する分処理が多くなります。
このLinuxサーバーのhostsファイルで名前解決が行われていました。実際のhostsファイルを確認します。
[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.1 router
ルーターのIPアドレスである「192.168.0.1」が「router」という名前で登録されています。
なのでルーティング確認すると「Gateway」の箇所が「router」となっていました。
解決策としてDNS名前解決せずにルーティング確認するにはnオプションを使用します。
[root@localhost ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 enp0s3
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 enp0s3
192.168.222.0   0.0.0.0         255.255.255.0   U         0 0          0 enp0s3[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 enp0s3
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
192.168.222.0   0.0.0.0         255.255.255.0   U     0      0        0 enp0s3デフォルトゲートウェイを表す「default」が「0.0.0.0」に、「router」がルーターのIPアドレスである「192.168.0.1」に変更されています。
Linuxのルーティング確認以外のコマンド

Linuxのルーティング確認以外のコマンドについてまとめます。
| やりたい事 | iproute2ツールのコマンド | net-toolsツールのコマンド | 
|---|---|---|
| ルーティング確認 | ip route | netstat -r route  | 
| ルーティング追加 | ip route add IPアドレス/マスク via GWアドレス | route add -[net/host] IPアドレス netmask マスク gw GWアドレス | 
| ルーティング削除 | ip route delete IPアドレス/マスク | route del -[net/host] IPアドレス | 
| デフォルトゲートウェイ設定 | ip route add default via DGアドレス | route add default gw DGアドレス | 

