GNU/Linux >> Linux の 問題 >  >> Linux

Linuxルート追加コマンドと例

ルーティングは、コンピューターがローカルネットワークまたはインターネットを介して通信する方法です。ネットワークを介して通信するには、コンピューターはトラフィックを送信するゲートウェイを知る必要があります。ゲートウェイは、ネットワーク内のルーターである可能性があります。

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

Linux
  1. 例を含むLinuxTeeコマンド

  2. 例を含むLinuxヘッドコマンド

  3. LinuxでのJQコマンドと例

  1. 例を含むwcLinuxコマンド

  2. Linuxのソートコマンドと例

  3. Linuxでのエコーコマンド(例付き)

  1. Linuxでのmanコマンドと例

  2. LinuxでのAWKコマンドと例

  3. LinuxでのCurlコマンドと例