MENU

今更聞けない。Pingの基礎と応用、実務で使えるPing術

Ping

どのシステムエンジニアにおいても「端末がネットワークに繋がっているだろうか?」という、最初の一歩で、Pingコマンドを使うことは当たり前に行われています。

ましてや、ネットワークエンジニアを含む、インフラエンジニアともなると、Pingコマンドを例えると「空手における、突きのようなもの」でして、基礎の基礎ともいうべきコマンドです。

今回は、今更聞けない「Pingの基礎」とその応用、更に「実業務でも使えるPing」のノウハウを、説明していきたいと思います。

目次

「今更聞けない、Pingの基礎について」

Pingコマンドで使用されるプロトコルは、ICMPであり、TCPの一種です(UDPではなく)。

「ICMP Echo」とも呼ばれるこのPingコマンドは「自分の端末と相手の端末が、うまくつながっているか?」をテストするために、有効活用されています。

先ほど、ICMPはTCPだと申し上げましたが、TCPは「一方的に送信するUDP」ではなく、相手からの応答を確認し、結果を表示します。

「Pingコマンドで何がわかるのか?」と問われると、インフラエンジニアは、下記のように、多くの情報を得ることができます。

  1. 相手端末に電力が供給され、起動中であること
  2. レイヤー3以下の通信が確立されていること(ポート開放やアプリ起動はレイヤー4以上)
  3. 相手端末に至るまでの通信経路が確立されていること
  4. 経由したゲートウェイやルータがいくつあるのか
  5. パケットの返答時間

Pingを有効活用できるエンジニアは、上記の情報から、障害や問題を切り分けることができます。

では実際に、Pingコマンドの仕様を見てみましょう。
ここでは、Windowsのコマンドプロンプトを実用しています。

ping google.com

デフォルトのPingコマンドは、指定した相手に4回のPingを試行します。
1秒毎に1度のPingを実施し、相手からの返答を5秒待ち、結果返答が帰ってきたら、次のPingを実施する、といった具合です。
Pingコマンドはシングルタスクで動作するため「1秒おきの結果を確認できるもの」ではありません。
例えば、相手の応答が3秒遅延すると、次のPing実施予定まで2秒ずれますし、1秒内に応答があっても、1秒後キッカリにPingを実施します。
そして、一行おきに、その結果とステータスを返答します。

またオプション「-t」を指定すると、コマンド中止(Ctrl + C)するまでPingを実施しますし、
オプション「-n 2」を指定すると、2回のPingを実施します。

ping google.com -t
ping google.com -n 2

このように、Pingコマンドは、様々な場面で活躍するコマンドであることを覚えておきましょう

「こんなところにも使われる!Pingを応用した技術たち」

Pingコマンドは、かなり便利なことから、様々な場面で使用されます。

Traceroute

例えば、コマンド「TraceRoute」はその代表格です。このコマンドは、目的の送信先までの経路を確認し、ゲートウェイ(通過したルータやL3スイッチ)ごとの実測値を測定して表示してくれます。

では、Windowsコマンドプロンプト上でのTracerouteを確認してみましょう。Windowsコマンドプロンプトでは、コマンド「tracert <宛先>」を指定します。

tracert yahoo.co.jp

上記、おなじみのYahoo!宛てにTracertしてみました。宛先に至るまで、12HOP、つまり12個のゲートウェイを通過したことになります。

<数字>msは返答速度、3つ並んだのは、それぞれ3回ずつ試行しているためです。

1行目で直近のルータ、2行目でプロバイダを通過し、12行目で、実際の宛先に到達していることがわかりますね。

このTracerouteで何かわかるか?というと、冗長化されたネットワークである場合(インターネットは殆どがそうですが)「どのゲートウェイを通過したのか」が確認出来るためです。

これが本来の経路と違ったルートを通過していると「冗長化ネットワークにおいて、メインとなるゲートウェイあたりが故障している」「負荷分散機能により、経路を動的に変更されている」のどちらかです。

Tracerouteコマンドは、VRRPやOSPFなどのネットワーク冗長化構成の検証試験などによく使われるコマンドなので、覚えておいて損はありません。

Health Check Monitor

いきなり、医療現場に来たみたいな響きですが、直訳すると「死活監視」と言われます。これは相手先の機器が「通信できているよね?」という確認を、定期的に行っています。

何だか小難しい機能のようにも見えますが、独自のプロトコルを持たないネットワーク機器や、監視ツールが、対象となるあて先に対して、定期的にPingを発しているに過ぎません。

しかしながら、冗長化構成をもつネットワーク機器は「メイン機器がダウンしたら、即座に代替機器として動作」しなくてはならず、とても重要な役割を持っています。

ネットワーク監視や、そのツールに関しても、この機能を用いて、日々、監視を続けているのです。

「実業務で使える!Pingコマンド術集」

「回線帯域を測定する」術

Pingコマンドに流すパケットに、ある程度の「重み」とつけてあげることで、概ねの回線帯域測定することが可能です。

実際にパケットの「重み」については、例えば、オプション「-l 60000」を指定すると、60000Byteのパケットを乗せたPingを実施できます。

ping yahoo.co.jp -l 60000

上記の平均値で出てきた、214msという数字をもとに、通信帯域の計算が可能です。
帯域を求める計算は、下記の通りです。

帯域 [Mbps] ≒ (パケット[byte] × 2) ÷ 応答時間 [ms] ÷ 1000

上記の式に当てはめると、下記の計算となります。

0.569 [Mbps] ≒ (60,000[byte] × 2) ÷ 211 [ms] ÷ 1000

このコマンドは、様々なオプションを組み合わせて使用することができ、例えば「ping yahoo.co.jp -l 60000 -t」とすることで、ひたすらPingを実施し、通信帯域の上下を監視することが可能です。

また、パケットの「重み」については、付与すればするほど、正確な帯域が数値化されます。
ですが、ロングパケットを受信拒否しているゲートウェイもあるため、せいぜい60,000Byteまでが限界でしょう。

「ネットワークの心電図」術

L2ループ発生時のトラブルシューティングや、対象端末の通信状況をチェックするのに有効です。

L2ループは、該当ネットワークが「トラフィック限界までパケットが増幅された状態」にあるため、いかなるパケットも通さない、という性質があります。

そこで、L2ループが発生したネットワーク間で「本来、疎通確認が出来るべき宛先」へ「ping <宛先> -t」を実施し、ポートの抜き差しをするなどして、被疑個所を確認していくのです。

また、リモート操作中のサーバや端末の再起動等が必要になった際、対象端末に対して「ping <宛先> -t」を実施し、再起動完了のフラグとすることもできます。

作業の片手間にコマンドプロンプトを起動し、再起動が完了するまで疎通確認を実施する、というわけです。

インフラエンジニアにとって、ちょっとしたテクニックなのですが、これが自然と実施できると、少しカッコいいですね。

「DNSのチェックとPing送信を同時に」術

Pingコマンドは、ドメインが指定された宛先に対して、nslookup(DNS正引き)を実施して、該当IPをみつけ、そのIPへPingを送信しています。

この記事において、Pingコマンドのご紹介時にわざわざドメインを指定しているのは、その理由が最もな処です。

ネットワークを調査するうえで「DNSが正常であるか?」という確認は、割と頻繁に発生するものです。

普段はIP指定でも全然かまわないのですが「このホストへ接続できない」という問合せに対して、DNSを疑うこともあるのです。

筆者プロフィール

中村京介(36歳)
ネットワークエンジニア6年目、座右の銘は「拝承!」。
零細企業の「ひとり情シス」から一念発起し、ネットワーク系エンジニアを目指す。
初回教育で鬼教官にしごかれ、赴任したとある技師の元で修業を積み、ようやく一人前に。
脱落者の多い官公庁系案件を主に手掛けながら、設計・構築兼、SIerとして前線に立つ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

管理人のよしぞと申します。
フリーランス業界で働いている管理人が、業界で働く様々な視点からフリーランスエンジニアに挑戦するためのノウハウを掲載。独立を考えている方にとって手助けになるサイトを目指しています。

目次