Envaderを利用して、routeコマンド/pingコマンドについて学ぶ
今回は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
コマンドについて学びました。
ルーティング、ルーティングテーブル、デフォルトゲートウェイなどなど、少しずつですが理解が深まりました。
ただ、まだまだ勉強は必要ですね。
最後まで読んでいただき、ありがとうございました。
Discussion