
ルーティングは、コンピューターがローカルネットワークまたはインターネットを介して通信する方法です。ネットワークを介して通信するには、コンピューターはトラフィックを送信するゲートウェイを知る必要があります。ゲートウェイは、ネットワーク内のルーターである可能性があります。
Linuxではrouteコマンドを使用して、IPルーティングテーブルを表示および変更します。
このチュートリアルでは、routeコマンドを使用して、ゲートウェイを介して静的ルートを追加し、トラフィックを送信する方法を説明します。
1)ルーティングテーブルを表示する
ルーティングテーブルを編集する前に、Linuxカーネル上の既存のルートを含むデフォルトのテーブルを確認することをお勧めします。
-n
でrouteコマンドを使用します 現在のカーネルIPルーティングテーブルを表示するオプション。このコマンドは、ローカルに接続されたネットワークとそのルートを識別するのに役立ちます。
次のコマンドは、ルーティングテーブルを表示します。
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
netstat -nr
を使用することもできます ネットワーク接続、ルーティングテーブル、インターフェイス統計、マスカレード接続、およびマルチキャストメンバーシップを印刷するコマンド。
netstatコマンドでルーティングテーブルを表示します:
$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
これで、ルートを表示するipコマンドができました
$ ip route show
2)新しいルートを追加します
上で述べたように、ルーティングテーブルを操作するには、 route add
を使用します。 コマンド(addはオプション)を使用して、パケットがネットワークを介して使用する静的パスを手動で示します。これは、管理者が新しいルートの値を手動で変更した場合にのみ変更される一時的な静的ルートを割り当てるために使用されます。
route addを使用する可能性はたくさんあります コマンド。
宛先ネットワーク、ネットワークのサブネットマスク、および使用するゲートウェイを指定する必要があります。
route add -net <network_address> gw <gateway> <interface_name>
または、 ip route
を使用できるようになりました コマンド、構文は次のとおりです:
ip route add <network_address> via <gateway> dev <interface_name>
たとえば、新しいルートネットワーク10.0.0.0/8を追加し、ゲートウェイIPアドレス192.168.1.1を介して:
# route add -net 10.0.0.0/8 gw 192.168.1.1 eno1
これで、 route -n
を使用してルーティングテーブルを表示できます。 :
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
netmask
を追加できます ネットマスク値を追加する場合のオプション。指定しない場合、routeコマンドはネットマスクの値を自動的に検出します。
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.100 eth0
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 192.168.1.100 255.255.255.0 UG 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 192.168.1.254 255.0.0.0 UG 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
特定のホストへのルートを追加するには、 -host
を使用します オプション。使用するゲートウェイのみを指定する必要があります。
route add -host <host_IP_address> gw <gateway>
たとえば、特定のホスト「10.0.0.10」を追加してから、ルーティングテーブルを表示してみましょう
# route add -host 10.0.0.10 gw 192.168.1.1 eno1
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
上記の例では、フラグ列の値が異なり、理解できない場合があります。
可能なフラグとその定義:
U
-ルートがアップしています
H
-ターゲットはホストです
G
-ゲートウェイを使用する
R
-動的ルーティングのルートを復元します
D
-デーモンまたはリダイレクトによって動的にインストールされます
M
-ルーティングデーモンまたはリダイレクトから変更
A
-addrconfによってインストールされます
C
-キャッシュエントリ
!コード> -ルートを拒否
3)ルートの拒否と削除
ルーティングテーブルを操作して、静的ルートを追加するだけでなく、早期に挿入したルートを削除または拒否することもできます。
ルーティングテーブルから宛先ネットワークを削除するには、 route del
を使用します カンマ:
route del -net <network_address> gw <gateway> <interface_name>
たとえば、10.0.0.0 / 8ネットワークへのルートを削除するには:
# route del -net 10.0.0.0/8 gw 192.168.1.1 eno1
出力
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
IPアドレスを禁止するが、それはまだルーティングテーブル上にあります。引き続きaddoptionパラメーターを使用しますが、コマンドの最後で reject
を使用する必要があることに注意してください。 オプション。ゲートウェイを節約できるかどうかはわかりませんが、出力インターフェイスについては触れていません。
route add -host <host_IP_address> reject
次のコマンドでは、ホスト「10.0.0.10」を拒否します:
# route add -host 10.0.0.10 reject
変更後のルーティングテーブルを表示します:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.10 - 255.255.255.255 !H 0 - 0 -
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
上記のコマンドを使用して追加されたルートは再起動しても永続的ではないため、静的ルートを構成ファイルに追加して永続的に保ちます。
Linuxディストリビューションに永続的な静的ルートを追加するには、汎用ファイル/etc/rc.localを使用できます。
UbuntuおよびDebianの場合は「/etc/ network / interfaces」という名前のファイルを使用し、RHEL/CentOSの場合は「/etc/ sysconfig / network-scripts/route-ethX」を使用します。
結論
このチュートリアルでは、routeaddコマンドを使用してLinuxで静的ルートを追加する方法を学びました。この方法では、変更しない限りルートは変更されないことに注意する必要があります。不要なルートを削除することが重要です。
Related Read: How to Permanently add Static Route in Linux