こんにちは!データセンターの最前線で、数々のネットワークトラブルと格闘してきたシニアエンジニアの私です。
夜中に突然鳴り響くアラート音、冷え切ったサーバールームのうなり声……。ネットワークの世界では、昨日まで何何事もなく動いていたシステムが、ある日突然「あれ、外と通信できないぞ?」と機嫌を損ねることがあります。そんなとき、私たちの相棒として真っ先に駆けつけるべき強力なツールが、今回ご紹介する netstat コマンドです。
「黒い画面に英字がいっぱいで、何がなんだか分からない……」
大丈夫です!一歩ずつ、身近な例えを交えながら優しく紐解いていきましょう。ネットワークの世界の迷子を救う冒険へ、一緒に出発しますよ!
—
1. パケットの配達員はどこへ行く?「ルーティングテーブル」の正体
皆さんは、遠く離れた友人に手紙を出したことはありますか? 宛先を書いてポストに入れれば、郵便局員さんが迷うことなく届けてくれますよね。
パソコンやサーバーの世界でも全く同じことが起きています。私たちがブラウザでウェブサイトを見るとき、データ(パケット)という小さな荷物が、世界中のネットワークという複雑な道路網を駆け抜けて相手の元に届いています。このとき、「この宛先の荷物は、どの道を通って、どこへバトンタッチすればいいのか」を記した「道路地図」こそが、今回見ていくルーティングテーブル(経路制御表)なのです。
netstat -r で地図を開いてみよう
自分のパソコンが「今、どんな道順を知っているのか」を確認するには、端末を開いて netstat -r というコマンドを叩きます(※OSによっては route print でも同様の表が見られます)。
実際に画面に出てくる表は、最初は少し難しく見えるかもしれません。でも、郵便配達のルールに置き換えれば一目瞭然です。
# ターミナル(コマンドプロンプトや端末)で以下のコマンドを実行します
netstat -r
実行すると、次のような一覧が表示されます(環境によって表示形式は多少異なります)。
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
この表に並んでいる専門用語を、身近な例えで優しくほどいてみましょう。
Destination(宛先):- 例え: 「〇〇町行き」「海外行き」といった宛先のエリア名です。
Gateway(ゲートウェイ):- 例え: 自分の足では行けない遠くへ荷物を送り出すとき、最初に頼る「地元の集配所(ルーター)」の住所です。ここが
*(アスタリスク)になっている場合は、「近所だから直接手渡しできるよ」という意味になります。 Iface(インターフェース):- 例え: その荷物をどちらの玄関から外に投げ出すか、という「ドア(出口の回線)」の名前です(
eth0は有線LANポート、loは自分自身をグルッと回る内輪の通路などを指します)。
最も大切な「デフォルトゲートウェイ」
この表の一番上にある default という行に注目してください。これが、ネットワークエンジニアがトラブルシューティングの際、一番最初にチラリと確認する「デフォルトゲートウェイ」です。
これは例えるなら、「行き先がどこであれ、道順がよく分からないときは、とりあえずあの親切なおじさん(ルーター)のところに荷物を全部預けなさい」という、我が家の最強のルール(既定の送り先)です。インターネットの海へ漕ぎ出すすべてのパケットは、このデフォルトゲートウェイを通って外の世界へ旅立っていくのです。
もし「ネットにつながらない!」というトラブルに遭遇したら、まずは netstat -r を叩いて、このデフォルトゲートウェイのIPアドレスが正しく設定されているかを確認するのが、プロの現場での定石となっています。
—
2. ネットワークの「健康診断」!インターフェース統計で何が起きているかを知る
道路地図(ルーティングテーブル)が無事に確認できたら、次はその道を通る「交通量」や「トラブルの発生状況」を見てみましょう。ここで活躍するのが、インターフェース統計の確認です。
データセンターで夜を徹して障害対応をしていると、「通信が途切れ途切れになる」「なんだかウェブの表示がすごく遅い」という不具合によく出会います。そんなとき、私たちはパケットが通る玄関口(インターフェース)が、何個の荷物を送り、何個の荷物を落として(エラーにして)しまったのかを細かくチェックします。
netstat -i で玄関口の様子を覗き見する
各ネットワークポートがどれくらい元気に働いているか、あるいは疲れ果てているかを確認するには、netstat -i コマンドを使用します。
# ネットワークインターフェースごとの送受信状況(統計)を確認します
netstat -i
実行すると、次のような統計情報が表示されます。
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 124580 0 0 0 98740 2 5 0 BMRU
lo 65536 0 420 0 0 0 420 0 0 0 LRU
英字の羅列にちょっと圧倒されそうになりますが、一歩ずつ意味を紐解いていきましょう! ここを見るポイントは、大きく分けて「受け取り(RX)」と「送り出し(TX)」の2つだけです。
RX-OK/TX-OK(正常送受信数):- 無事に受け取った、あるいは送り出せた荷物の数です。この数字が順調に増えていれば、ネットワークは元気に動いています。
RX-ERR/TX-ERR(エラー数):- ここが重要です! 受け取ったけれどボロボロになっていた、あるいは送り出そうとしたけれど失敗した荷物の数です。通常、この値は「0」か、あるいは非常に少ないはずです。
RX-DRP/TX-DRP(ドロップ数):- キャパシティオーバーやメモリ不足で、泣く泣く「受け取り拒否」または「ゴミ箱行き」にしてしまった荷物の数です。
エラーの数字が増えているとき、現場で何が起きているか?
もし TX-ERR や RX-ERR の数字が、時間が経つにつれてモリモリと増えている場合、現場のエンジニアは「おや?」と身構えます。
身近な例えで言うなら、これは「配達員が荷物を落としてしまったり、宛先が汚れすぎて読めずに途方に暮れていたりする状態」です。
- 物理的なケーブルの劣化や接触不良:
古くなったLANケーブルや、ツメが折れてグラグラしているコネクタが原因で、電気信号が途中でノイズまみれになり、データが破損している可能性があります。
- 通信速度や規格のミスマッチ(オートネゴシエーションの不整合):
スイッチとサーバーの間で「どれくらいのスピードで荷物を投げ合うか」の息が合わず、片方が速すぎてキャッチしきれなくなっているケースです。
このように、ただ「繋がらない」と嘆くのではなく、netstat -i を使って「エラーの数字がどこで膨らんでいるか」を定点観測することで、原因がケーブルにあるのか、設定にあるのかという大きな手がかりを掴むことができるのです。
—
3. 実務で役立つ!日々の運用・監視でのワンポイントアドバイス
ここまで、netstat を使ったルーティングテーブルの確認方法と、インターフェースの健康状態(統計情報)の読み解き方をご紹介してきました。
インフラの世界に足を踏み入れたばかりの頃は、黒い画面に並ぶ文字を見ているだけで緊張してしまうかもしれませんが、コマンドが教えてくれる情報は、すべて「現実世界の交通事情」のデジタルな翻訳にすぎません。
- 「外と通信できないな?」と思ったら、まずは
netstat -rで地図(デフォルトゲートウェイ)を確認し、道順がきちんと指し示されているかを見る。 - 「通信が不安定だな?」と思ったら、
netstat -iで玄関口(エラー数)を覗き見して、荷物が途中で破損していないかチェックする。
この2つのステップを頭の片隅に置いておくだけで、いざという時のトラブルシューティングのスピードが劇的に変わります。
最初は難しく感じるコマンドも、何度も使っていくうちに、あなたにとって頼もしい「相棒」になってくれるはずです。焦らず、一歩ずつ、ネットワークの奥深い世界を楽しんでいきましょう! それでは、また次のデータセンターの裏話でお会いしましょう。
コメント