CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさん、こんにちは。前回より始まりました「きほんのトラブルシューティング」。前回は、サイトにアクセスできない時のトラブルシューティングとして、パブリックDNSを設定してみることを紹介しました。でも、ネットワークトラブルは、一見しただけでは問題となっている箇所を把握しづらく、原因を特定することが難しいものです。今回は、ネットワークトラブルが発生した時に最初に使うであろう、「超基本的なコマンド」をおさらいしましょう。みなさんお馴染みかと思いますが、ping と traceroute です。
ネットワークのトラブルに遭遇したとき、最初に使うだろうコマンドです。相手先に到達できるか?相手先が生きているか?を簡単にテストできます。ちなみに、「ピング」や「ピン」と呼ばれていますが、筆者の周りでは「ピング」と呼んでいる人が多いようです。
pingは、TCP/IPにおける最も基本的なコマンドで、ICMP(Internet Control Message Protocol)のサブコマンドであるechoコマンドを使って、相手先に文字列を送信し、その戻りを判断することによって状況を確認するといった、単純なパケットテストプログラムです。なお、ICMPは、TCP/IPにおける補助的なプロトコルですが、TCPでもUDPでもありません。TCPやUDPと同じトランスポート層(レイヤ4)に位置するプロトコルですが、実際にユーザーが使う場面は、この ping コマンドくらいです。
ping コマンドは以下のように発行します。
`$ ping (相手先ホスト名 or IPアドレス) `
相手先に到達した場合には、以下のように結果が表示されます。
> 64 bytes from xx.xx.xx.xx
一方、以下のように結果が表示された場合は、ホスト名の名前解決に失敗しています。これは相手先というよりも、ホスト名の指定が間違っていることが多いので、確認してからもう一度、発行してみましょう。
> cannot resolve www.hoge.huga: Unknown host
また、相手先に到達しなかった場合には、以下のように表示されます。
> Request timeout for icmp_seq
この場合は、相手先までのネットワーク経路上のポイントまで ping すると問題箇所の絞り込みができます。つまり、少なくとも、localhost(127.0.0.1)とデフォルトゲートウェイに ping すると、どこまで到達しているかを把握することができます。
なお、pingで相手先に到達しなかった場合、相手先が生きていないと思ってしまうのは、早急かもしれません。設定によっては、相手先が ping を拒否していることもありますので注意しましょう。AWSもデフォルトでは ping に応答しません。
こちらは、ネットワークの通信経路を調べるコマンドです。あるホストから別のホストまでの経路をリスト表示できます。なお、Linuxなどでは「traceroute」ですが、windowsは「tracert」です。
traceroute は、パケットヘッダに含まれるTTL(Time to Live)というフィールドの値を、1,2,3 と徐々に大きくしながらパケットを送信し、隣接したルータから「ICMP TIME EXCEEDED」という返事を受け取ることで、通信経路の確認をおこなっています。デフォルトでは、UDPプロトコルを使用しますが、オプションでTCPやICMPを使用することもできます。もし、通信経路がうまく表示できない場合は、プロトコルを変更するとうまくいくかもしれません。
traceroute コマンドは以下のように発行します。
`$ traceroute (対象のホスト名 or IPアドレス) `
TCPプロトコルを使用する場合は以下のように、-T オプションを使います。
`$ traceroute -T -p ポート番号 (対象のホスト名 or IPアドレス) `
-g オプションを使うと、経由するルーターを8個まで指定することができます。
`$ traceroute -g (ゲートウェイアドレス1), (ゲートウェイアドレス2), ... (対象のホスト名 or IPアドレス)`
-f オプションを使うと、開始するTTLの値を指定することができるので、通信経路の途中から探索することができます。
`$ traceroute -f 3 (対象のホスト名 or IPアドレス)`
なお、windowsの「tracert」では、使えるオプションが少ないです。ヘルプなどで確認して使いましょう。
今回は「ネットワークトラブルで使う超基本的なコマンド」として、ping と traceroute をおさらいしました。
ネットワークトラブルに遭遇したとき、真っ先に使うだろう2つのコマンドですが、実は奥が深いのです。これらのコマンドの詳しい中身については、また別の機会に解き明かしたいと思います。
それでは、また!
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes