Envaderを利用して、routeコマンド/pingコマンドについて学ぶ


30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。

今回はEnvaderを利用して、routeコマンドとpingコマンドの使い方について学びました。
更なる理解を深めるために、自分のために記事を書こうと思います。

Envaderとは、Linux環境をブラウザで学べるオンライン学習サービスです。
環境構築が不要で、間違えても環境を再起動するだけで元どおりにできるので、色々試したい時に重宝しています。

Envaderが気になる方はリンクを貼っておきますので、参考までにどうぞ。

コース一覧

今回使用したシナリオ

はじめに

routeコマンドを学ぶ上で理解しておかなければならないのが、ルーティング ルーティングテーブル デフォルトゲートウェイの3つは抑えておいた方が良いと感じました。
でないと、routeコマンドを使用した時に表示される内容が理解できないためです。

今回参考にさせていただいた記事一覧

ルーティングとは

【 route 】コマンド――ルーティングテーブルを管理する

pingコマンドについて詳しくまとめました 【Linuxコマンド集】

ルーティング

複数のネットワーク間でデータが正しく届くように、パケットが通過する経路(ルート)を最適になるように制御することルーティングと表現するようです。
経路選択、経路制御、とも呼ばれています。
この仕事を担っているのが主にルータになります。

ルーティングテーブル

ルーティングをする際に必要な情報を格納しているのがルーティングテーブルです。
ルーティングテーブルには、パケットの宛先、次の転送先が記載されています。
もう少しわかりやすい表現をすると、ネットワーク上の通信経路の一覧情報のことです。
このルーティングテーブルを表示させることができるのが、routeコマンドなのです。

ルーティングテーブルが正しく設定されていないと、ネットワークにはつながっているけどインターネットに接続できていない!といったトラブルが発生するとか。。。

ルーティングテーブルを作る方法

どうやってルーティングテーブルを作成しているのか?作成されるのか?
これには大きく分けて2種類の方法があります。
1つ目は手動でルータに設定する静的(スタティック)ルーティング
2つ目はルータ同士が通信して自動で設定してくれる動的(ダイナミック)ルーティングです。

私的には動的(ダイナミック)ルーティングで勝手に設定してくれた方が楽で良さそうに感じますが、それぞれメリットデメリットがあるみたいなので、一概にどちらが良いかは言えないみたいです。

ルーティングとは
の記事が分かりやすかったです。

デフォルトゲートウェイ

異なるネットワーク同士を接続する時に、通信の出入り口の役割を果たす機器の事です。
なんか表現が難しいですが、自分の家のPCやスマホから、インターネットへアクセスする際の通信の中継点がデフォルトゲートウェイと言われています。

一般的にはルータがデフォルトゲートウェイとしての役割を担います。

routeコマンド

routeコマンドでは、ルーティングテーブルの確認、設定をすることができます。

基本的な書式

# ルーティングテーブルを表示させる
route オプション

# ルーティングテーブルに経路情報を追加する
route add パラメータ

# ルーティングテーブルから経路情報を削除する
route del パラメータ

routeコマンド オプション

オプション 説明
-F カーネルのルーティングテーブルを表示する
-C カーネルのルーティングキャッシュを表示する
-4 IPv4の情報を表示する
-6 IPv6の情報を表示する

実際にrouteコマンドを叩いてみます。

envader@172-19-1-2:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.19.1.1      0.0.0.0         UG    0      0        0 eth0
172.19.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0

これがルーティングテーブルです。
ただこれだけだと何がどう表示されているのか分からないため、下記に項目の説明を書きます。

項目 説明
Destination 宛先のネットワークもしくはホストのIPアドレス(defaultはデフォルトゲートウェイの意味)
Gateway デフォルトゲートウェイのIPアドレス(*だった場合は未設定)
Genmask 宛先のサブネットマスク(ホストは255.255.255.255、デフォルトゲートウェイは0.0.0.0)
Flags 経路の状態 U:経路が有効 H:宛先はホスト G:ゲートウェイを使用 !:経路は無効
Metric 宛先までの距離
Ref ルートの参照数
Use 経路の参照回数
Iface この経路を使うネットワークインターフェイス

先ほどのrouteコマンドの実施結果によると、宛先のネットワークはデフォルトゲートウェイで、デフォルトゲートウェイのIPアドレスは172.19.1.1であることが分かります。

今回はEnvaderの環境上、ルーティングテーブルの経路情報の追加などはできませんでした。

# デフォルトゲートウェイを172.30.0.1に設定する場合
envader@172-19-1-2:~$ route add default gw 172.30.0.1
SIOCADDRT: Operation not permitted

つまり、これは手動で設定を追加していると言うことなので、静的(スタティック)ルーティングの方法ということですね!

pingコマンド

指定したホスト(IPアドレス)にICMPというプロトコルのecho request/echo replyのパケットを送り、その反応を表示するコマンドです。

どんな時に利用するのか?ですが、WebサーバーにアクセスしてもWebページが表示されない場合、Webサーバーソフトウェアがダウンしているのか、ホスト自身がダウンしているのかなどを確認する時に利用するみたいです。

pingコマンドでは、パケットを送る回数を指定できるのですが、特に指定しないとCtrl+cキーを押すまでパケットを送るようになります。

pingコマンド オプション

オプション 説明
-c 数字 数字の回数分だけICMPパケットを送る
-i 数字 数字の間隔(秒)ごとにパケットを送る(デフォルトは1秒)
その他のオプションも多数ありました。
こちらのサイトが分かりやすかったのでよかったらどうぞ。

pingコマンドについて詳しくまとめました 【Linuxコマンド集】

pingコマンドの実行結果

pingコマンドを実行してみます。

envader@172-19-1-2:~$ ping envader.plus
PING envader.plus (216.239.34.21): 56 data bytes
64 bytes from 216.239.34.21: icmp_seq=0 ttl=121 time=1.706 ms
64 bytes from 216.239.34.21: icmp_seq=1 ttl=121 time=1.978 ms
64 bytes from 216.239.34.21: icmp_seq=2 ttl=121 time=1.733 ms
64 bytes from 216.239.34.21: icmp_seq=3 ttl=121 time=1.863 ms
64 bytes from 216.239.34.21: icmp_seq=4 ttl=121 time=1.949 ms
64 bytes from 216.239.34.21: icmp_seq=5 ttl=121 time=1.974 ms
^C--- envader.plus ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.706/1.867/1.978/0.111 ms

以下実行結果内容

表示 説明
bytes pingコマンドを実行するのに送信したデータのバイト数(パケットデータサイズ)
from 数字 fromの後は接続確認先のIPアドレス
icmp_seq ICMPパケットデータの何番目のデータ送信かの意味
ttl ICMPパケットの最大生存期間(通過するルータ数)ネットワーク機器を通過するたびに1ずつ消費されて、0になったら通信データは破棄される
time pingコマンドを実行したコンピュータがパケットデータを発してから、相手からのレスポンスが戻ってくるまでの時間

最後の行のround-trip min/avg/max/stddev = 1.706/1.867/1.978/0.111 msは、通信速度の統計データらしい。
左の数字から、
最速値(min) 平均値(avg) 最遅値(max) 通信速度の偏差(stddev)となっているみたいです。

max速そうなのに

pingコマンドの注意点

pingコマンドはパケットデータを一気にネットワークや送信相手の機器に送りつけてしまうため、ネットワークに負担をかけてしまうみたいです。

なので、ネットワークに関係するユーザーやネットワーク管理者に実施の連絡をしておくことが推奨されていました。

ネットワークにかける負担を軽減するためにも、-cオプションで回数を制限するなどの方法を取った方が良いとされています。

まとめ

Envaderを利用して、route pingコマンドについて学びました。

ルーティング、ルーティングテーブル、デフォルトゲートウェイなどなど、少しずつですが理解が深まりました。
ただ、まだまだ勉強は必要ですね。

最後まで読んでいただき、ありがとうございました。