IP ルーティング シリーズの第 1 部では、Linux IP ルーティングの基礎を学びました。
Route コマンドは、IP ルーティング テーブルを表示/操作するために使用されます。主に、インターフェイスを介して特定のホストまたはネットワークへの静的ルートを設定するために使用されます。
この記事では、route コマンドを使用して Linux でルーティング テーブルを操作する方法について説明します。
最初に、いくつかの基本的なルート コマンドの例を使用してルーティングがどのように行われるかを説明し、次に、ネットワークでルートをセットアップする方法について、サンプル ネットワーク アーキテクチャを使用して説明します。
I.ルーティングはどのように行われますか?
1.既存のルートを表示
route コマンドは、デフォルトでカーネル ルーティング テーブル エントリの詳細を表示します。この例では、route コマンドが実行されているシステムの IP アドレスは 192.168.1.157 です。
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
上記のコマンドは、宛先がネットワーク範囲 192.168.1.0 ~ 192.168.1.255 内にある場合、ゲートウェイが *、つまり 0.0.0.0 であることを示しています。
パケットがこの IP 範囲内で送信されると、宛先の MAC アドレスが ARP プロトコルによって検出され、パケットはその MAC アドレスに送信されます。
ARP とは何かを知らない場合は、まず ARP プロトコルの仕組みを理解する必要があります。
この IP 範囲内にない宛先にパケットを送信するために、パケットはデフォルト ゲートウェイに転送されます。デフォルト ゲートウェイは、そのパケットのさらなるルーティングを決定します。これについては後ほど説明します。
デフォルトでは、route コマンドは出力にホスト名を表示します。以下に示すように、-n オプションを使用して数値の IP アドレスを表示するように要求できます。
$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.1.10 0.0.0.0 UG 0 0 0 eth0
2.デフォルト ゲートウェイの追加
ネットワーク内にないパケットをゲートウェイ アドレスに転送するように指定できます。
次の route add コマンドは、デフォルト ゲートウェイを 192.168.1.10 に設定します。
$ route add default gw 192.168.1.10
これで、route コマンドは次のエントリを表示します。
$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 default gateway.co.in 0.0.0.0 UG 0 0 0 eth0
これで、マシンにデフォルト ゲートウェイが追加されました。正常に動作しているかどうかを確認するには、外部ホスト (google.com など) に ping を実行して ICMP パケットを送信します。
$ ping www.google.com
以下は、上記の ping コマンドが実行されたときに発生する一連のイベントです。
<オール>上記の 2 つの例は、ネットワーク内でルーティングがどのように行われるかについての良いアイデアを示しています。これで、route コマンドで使用できるその他のコマンド ライン オプションが表示されます。
3.カーネルのルーティング キャッシュ情報の一覧表示
カーネルはルーティング キャッシュ情報を維持して、パケットをより高速にルーティングします。 -C フラグを使用して、カーネルのルーティング キャッシュ情報を一覧表示できます。
$ route -Cn Kernel IP routing cache Source Destination Gateway Flags Metric Ref Use Iface 192.168.1.157 192.168.1.51 192.168.1.51 0 0 1 eth0 192.168.1.157 74.125.236.69 192.168.1.10 0 0 0 eth0 . . .
4.特定のホストまたはネットワークへのルーティングを拒否する
特定のホスト/ネットワークへのパケットのルーティングを拒否したい場合があります。そのためには、次のエントリを追加してください。
$ route add -host 192.168.1.51 reject
以下に示すように、その特定のホスト (つまり、先ほど拒否した .51 ホスト) にアクセスできません。
$ ping 192.168.1.51 connect: Network is unreachable
ただし、ネットワーク内の他のホストには引き続きアクセスできます (たとえば、.52 ホストには引き続きアクセスできます)。
$ ping 192.168.1.53 PING 192.168.1.53 (192.168.1.53) 56(84) bytes of data. 64 bytes from 192.168.1.53: icmp_seq=1 ttl=64 time=7.77 ms
ネットワーク全体 ( 192.168.1.1 – 192.168.1.255 ) を拒否する場合は、次のエントリを追加します。
$ route add -net 192.168.1.0 netmask 255.255.255.0 reject
これで、そのネットワーク内のどのホストにもアクセスできなくなります (例:.51、.52、.53 など)。
$ ping 192.168.1.51 connect: Network is unreachable $ ping 192.168.1.52 connect: Network is unreachable $ ping 192.168.1.53 connect: Network is unreachable
II.サンプル ネットワーク アーキテクチャ (ルーティングを理解するため)
残りの例では、次のサンプル ネットワーク アーキテクチャを使用しましょう。
以下の図では、2 つの個別のネットワーク (192.168.1.0 と 192.168.3.0、サブネット マスクは 255.255.255.0 ) があります。
3 枚のネットワーク カードを備えた「GATEWAY」マシンもあります。 1 枚目のカードは 192.168.1.0 に接続され、2 枚目のカードは 192.168.3.0 に接続され、3 枚目のカードは外界に接続されます。
5. 192.168.3.* を 192.168.1.* からアクセス可能にする
ここで、192.168.3 に ping できるようにルーティング エントリを追加する必要があります。 192.168.1 からの一連の IP アドレス。シリーズ。私たちの共通点は GATEWAY マシンです。
したがって、192.168.1.* ネットワーク内の各マシンには、以下に示すようにデフォルト ゲートウェイが追加されます。
$ route add default gw 192.168.1.10
192.168.1.1 が 192.168.3.1 に ping を実行すると、192.168.1.10 経由で GATEWAY に到達します。
GATEWAY で、次のルーティング エントリを追加します。
$ route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.3.10
これで、192.168.3.* ネットワークにアドレス指定されたすべてのパケットが 192.168.3.10 インターフェイス経由で転送され、アドレス指定されたマシンにパケットが配信されます。
6. 192.168.1.* を 192.168.3.* からアクセス可能にする
これは、以前に行ったことと非常によく似ています。
したがって、192.168.3.* ネットワークの各マシンには、以下に示すようにデフォルト ゲートウェイが追加されます。
$ route add default gw 192.168.3.10
GATEWAY で、次のルーティング エントリを追加します。
$ route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.10
192.168.3.* マシンが 192.168.1.* マシンに ping できるようになりました。
7.インターネット アクセスを許可する (外部世界)
前の 2 つの例では、2 つの異なるネットワークを相互接続しています。
次に、これら 2 つの異なるネットワークからインターネットにアクセスする必要があります。そのために、次のように、外部世界に接続されている 125.250.60.59 にデフォルト ルーティング (ルーティング ルールが一致しない場合) を追加できます。
$ route add default gw 125.250.60.59
これがどのように機能するかです:
<オール>