SUN でルーティングのテーブルを見るには、/usr/bin/netstat コマンドを 使います。
[7]sparc01:~> netstat -rn Routing Table: Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ------ --------- 127.0.0.1 127.0.0.1 UH 0 589 lo0 202.11.98.160 202.11.98.189 U 3 1510 le0 202.11.96.0 202.11.96.10 U 2 111 bf0 202.11.101.0 202.11.101.34 U 2 246543 ba0 224.0.0.0 202.11.98.189 U 3 0 le0 default 202.11.98.190 UG 0 158373
ここで、Destination の欄は、宛て先のネットワークまたはホストをあらわしています。例えば、202.11.96.0 は、202.11.96 のネットワークのことで、そのネットワークに 行くには 202.11.96.10 のゲートウェイ(Gateway)を通る事が分かりますが、次の Flags の欄を見ると U のみがあるので、自分のインターフェース(bf0) を通って 直接出て行くのだと言うことが分かります。
Flags の意味
一方、default は、上記以外のネットワークまたはホストへ行く場合は、202.11.98.190 に転送する事を示しています。202.11.98.190 の ゲートウェイへは、202.11.98.160 のネットワークに所属しているので、202.11.98.189 の自分のインターフェース(le0)を 使って直接到達出来る事が分かります。
自分のマシンに実装されているインターフェースとホスト名との対応は、 /etc/hostname.xxx (xxx はインターフェース名で、イーサネットの場合、 le0 など)に格納されており、ホスト名と IP アドレスの関係は、/etc/hosts の内容に従って決まります。インターフェースの設定状態は、ifconfig コマンド で見ることが出来ます。
# ifconfig -a lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232 inet 127.0.0.1 netmask ff000000 bf0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 4352 inet 202.11.96.14 netmask ffffff00 broadcast 202.11.96.255 ether 8:0:20:12:6d:d5 le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500 inet 202.11.98.125 netmask ffffffe0 broadcast 202.11.98.127 ether 8:0:20:12:6d:d5 sa0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 9180 inet 202.11.101.98 netmask ffffff00 broadcast 202.11.101.255 ether 8:0:20:12:6d:d5
これを見ると、le0 のインターフェースの IP アドレスは、202.11.98.125 で、
ネットマスクが ffffffe0( 255.255.255.224 ) であり、ブロードキャスト
アドレスは 202.11.98.127 であることが分かります。
外部に到達するための出入り口が1箇所しかないような単一のネットワークならば、 その出入り口を default gateway に指定しておけばいいでしょう。一方、出入り口 へ到達するために、幾つかの内部のネットワークを経由する必要がある場合には、 そのセグメントの出入り口を gateway に指定しなければなりません。そして、 出入り口に指定されたマシンまたはルーター上でも、必要な経路情報を指定する 必要があります。
Sun で、静的な経路情報の設定を行うには、/usr/sbin/route コマンドを使います。 例えば、202.11.101.0 のネットワークに行くために、202.11.99.10 の gateway に 投げる場合には、次のように設定します。
route add net 202.11.101.0 202.11.99.10 1
一般の書式は次の通りです。
route add net destination gateway metric
静的なルーティングで、他のマシン(ルーター)を経由する場合は必ず metric に 1 を指定します。一方、gateway が自分自身のインターフェースならば、metric は 0 です。デフォルト以外のルーティングをしたい場合には、以上の設定がマシンの ブート時に自動的にされるように rc ファイルに直接記述しておきます (/etc/rc2.d/S69inet)。デフォルトルーターの設定だけは、/etc/defaultrouter に記述しておけば、自動的に設定されます。
route コマンドでは、ネットワークへの経路だけではなく、特定のホストへの ルーティングを指定することも出来ます。
route add host destination gateway metric
この場合、このホストへ行くときだけは、指定された経路を通るように出来ます。 設定した経路情報を削除する場合は、add の代わりに delete を使いますが、metric は必要ありません。
設定が完了したら必ずテストをするようにしましょう。テストには、普通 ping コマ ンドを使います。 ping では、相手との通信が出来る場合は、以下のようになります。
$ /usr/sbin/ping sparc01 sparc01 is alive
オプション -s をつけることで、さらに詳しいトラフィック情報が得られます。
$ /usr/sbin/ping -s sparc01 PING sparc01: 56 data bytes 64 bytes from sparc01 (202.11.97.xx): icmp_seq=0. time=3. ms 64 bytes from sparc01 (202.11.97.xx): icmp_seq=1. time=1. ms 64 bytes from sparc01 (202.11.97.xx): icmp_seq=2. time=1. ms 64 bytes from sparc01 (202.11.97.xx): icmp_seq=3. time=1. ms 64 bytes from sparc01 (202.11.97.xx): icmp_seq=4. time=1. ms ^C ----sparc01 PING Statistics---- 5 packets transmitted, 5 packets received, 0% packet loss round-trip (ms) min/avg/max = 1/1/3
ここで、packet loss が異常に多い場合は、ネットワークのトラフィックが
混雑しすぎているか、あるいは何らかのトラブルが考えられます。
複雑な経路をトレースするには traceroute というパブリックな コマンドがあります(但し、traceroute は TCP/IP を完全にサポートしていないよ うなネットワークでは使用できない時があります。例えば、ATM (Classical IP over ATM) がそうです)。
$ traceroute ipce4 traceroute to ipce4 (202.11.99.aa), 30 hops max, 40 byte packets 1 cisco45 (202.11.98.xxx) 4 ms 2 ms 2 ms 2 cisco5 (202.11.96.y) 3 ms 3 ms 3 ms 3 ipce4 (202.11.99.zz) 4 ms * 4 ms
この場合、ipce4 へのルーティングは、cisco45 cisco5 ipce4 という 経路を通っていることが分かります。この経路が、意図した通りかも 確かめておく必要があります。 また、TCP/IP では行きと帰りの経路が異なっていても構わないのですが、 自サイトのネットワークの中で、これが違っている場合は設定ミスである 場合が多いので、片方を調べるだけでなく、双方向で確かめる必要 があります。