DAY 07: ネットワークナビゲーター

LinuxBeginner
オンラインで実践に進む

はじめに

ネットワークナビゲーターの皆さん、ようこそ!あなたは急成長中のテックスタートアップにジュニアシステム管理者として採用されました。今朝、重要なWebサーバーがオフラインになり、ユーザーから社内ポータルにアクセスできないという報告が上がっています。

シニア管理者は会議中で手が離せないため、あなたに初期診断が任されました。腕の見せ所です!あなたのミッションは、サーバーのネットワーク状態を体系的に調査し、根本原因を特定して接続を復旧させることです。さあ、サーバーをオンラインに戻しましょう!

重要な注意点
今後のチャレンジは、Quick Start with Linux コースの範囲を超える場合があります。
チャレンジ中に困難に直面した場合:
  1. 一時的にそのチャレンジをスキップし、Linux学習パスの後のガイド付きラボに進んでください。
  2. Labbyに相談するか、解答を確認してください。

ネットワークインターフェースの状態確認

ネットワークナビゲーターとしての最初のステップは、基本的な情報を収集することです。ネットワークハードウェアは認識され、アクティブになっていますか?サーバー上のすべてのネットワークインターフェースの状態を確認する必要があります。この作業には、現代的なツールである ip コマンドを使用します。

タスク

  • ip コマンドを使用して、すべてのネットワークインターフェースの状態と設定を表示してください。

要件

  • この確認には ip addr コマンドを使用する必要があります。

コマンドを実行すると、lo(ループバック)や eth0(または類似のもの)のようなネットワークインターフェースが表示されます。メインインターフェースの状態を確認してください。アクティブであることを示す UP と表示されているはずです。

## 出力形式の例(インターフェース名は異なる場合があります)
1: lo: 65536 qdisc noqueue state UNKNOWN group default qlen 1000 < LOOPBACK,UP,LOWER_UP > mtu
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: 1500 qdisc mq state UP group default qlen 1000 < BROADCAST,MULTICAST,UP,LOWER_UP > mtu
link/ether 00:16:3e:04:b0:40 brd ff:ff:ff:ff:ff:ff
inet 172.16.50.108/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159216sec preferred_lft 1892159216sec

ヒント

  • ip コマンドは多くのサブコマンドを持つ強力なツールです。アドレスを管理するためのサブコマンドは addr です。
  • ip addr show または短縮形の ip addr を使用できます。

IPアドレス設定の検証

インターフェースが UP であることは確認できました。しかし、IPアドレスは割り当てられていますか?IPアドレスのないインターフェースはネットワーク上で通信できません。ip addr でも確認できますが、別の古典的なコマンドである ifconfig を使って再確認してみましょう。同じ作業に対して複数のツールを知っておくことは有益です。

タスク

  • ifconfig コマンドを使用して、IPアドレスの設定を検証してください。

要件

  • ifconfig コマンドを使用する必要があります。

出力には、IPアドレスを持つネットワークインターフェースが表示されます。メインのネットワークインターフェース(eth0など)の下にある inet フィールドを探して、IP設定を確認してください。

## IP設定を示す出力例
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.50.108  netmask 255.255.255.0  broadcast 172.16.50.255
        ether 00:16:3e:04:b0:40  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0

ヒント

  • ifconfig コマンドは net-tools パッケージの一部であり、すでにインストール済みです。
  • 引数なしで ifconfig を実行すると、すべてのアクティブなインターフェースが表示されます。

リモートホストへの接続テスト

サーバーのインターフェースはアクティブで、IPアドレスも設定されています。次の論理的なステップは、外部ネットワークに到達できるかを確認することです。ここで失敗する場合、ゲートウェイやDNS設定に問題がある可能性があります。ping コマンドはこのテストに最適です。

タスク

  • GoogleのパブリックDNSサーバー 8.8.8.8 に対して、正確に 3回 ICMPパケットを送信し、インターネットへの接続性をテストしてください。

要件

  • ping コマンドを使用する必要があります。
  • 送信するパケット数を 3回 に制限する必要があります。
  • ターゲットのIPアドレスは 8.8.8.8 である必要があります。

接続が正常であれば、ターゲットIPアドレスからの応答とタイミング情報が表示されます。最後に表示される統計で、3パケット送信、3パケット受信、パケットロス0%となれば成功です。

## 成功時の出力パターン
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=4.33 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=4.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=4.30 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 4.298/4.309/4.329/0.014 ms

ヒント

  • ping コマンドは停止させるまで無期限に実行されます。
  • -c オプションを使用して、送信するパケットの数(count)を指定してください。

開いているネットワークポートの調査

接続性は良好です!では、なぜ社内ポータルにアクセスできないのでしょうか?問題はアプリケーション自体にあるかもしれません。Webサーバープロセスが実際に起動し、正しいポートで接続を待機していますか?ss (socket statistics) コマンドは、これを調査するための現代的で高速なツールです。

タスク

  • 社内ポータルはポート 8000 で実行されるはずです。ss コマンドを使用して、ポート 8000 でTCP接続を待機しているプロセスがあるか確認してください。

要件

  • ss コマンドを使用する必要があります。
  • リッスンしているTCPソケットを表示するようにコマンドを構成してください。

ポート8000でプロセスが待機している場合、待機中のソケットに関する情報が表示されます。Local Address列にポート8000が表示されている行を探してください。

## ポート8000で待機中のプロセスを示す出力例
LISTEN 0      5            0.0.0.0:8000       0.0.0.0:*    users:(("python3",pid=3765,fd=3))

ヒント

  • ss コマンドには便利なフラグがいくつかあります:
    • -t: TCPソケットを表示します。
    • -l: listening(待機中)のソケットを表示します。
    • -n: サービス名の代わりに数値のポート番号を表示します。
    • -p: ソケットを使用している process(プロセス)を表示します。
  • ss -tlnp のようにフラグを組み合わせることができます。
  • 特定のポートを探すには、ss の出力を grep コマンドにパイプします。例: ss -tlnp | grep 8000

基本的なファイアウォールルールの設定

すべて確認できました:インターフェースはアップしており、IPも設定済み、インターネット接続も良好で、アプリケーションも正しいポートで待機しています。残る大きな容疑者はファイアウォールです。ポータルへの着信トラフィックをブロックしている可能性が高いです。最後のタスクは、ポータルへのトラフィックが再び到達できるようにファイアウォールを設定することです。ファイアウォールルールを管理するためのユーザーフレンドリーなフロントエンドである ufw (Uncomplicated Firewall) を使用します。

タスク

  1. ポート 8000 への着信トラフィックを許可するファイアウォールルールを追加してください。
  2. SSHトラフィック(ポート22)への着信を許可するファイアウォールルールを追加してください。
  3. ファイアウォールを有効にして、新しいルールを適用してください。

要件

  • すべての操作に ufw コマンドを使用する必要があります。
  • ファイアウォールルールの変更には管理者権限が必要なため、sudo を使用する必要があります。

ファイアウォールルールを設定した後、sudo ufw status を実行すると、ファイアウォールがアクティブになり、ポート8000とSSH(ポート22)が許可されていることが表示されるはずです。

## ポート8000とSSHを許可してファイアウォールを有効にした後の出力例
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
8000                       ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
8000 (v6)                  ALLOW       Anywhere (v6)

ルールを追加する際は、以下のように表示されます:

Rules updated
Rules updated (v6)

ファイアウォールを有効にする際は、以下のように表示されます:

Firewall is active and enabled on system startup

ヒント

  • ufw の構文は非常にシンプルです。ポートへのトラフィックを許可するには ufw allow <port> を使用します。
  • ポート8000へのトラフィックを許可するには ufw allow 8000 を使用します。
  • SSHトラフィックを許可するには ufw allow ssh または ufw allow 22 を使用します。
  • 重要な警告: SSHポート(22)を適切に開かないと、検証が失敗します。検証はSSH接続に依存しているためです。
  • 重要な警告: 他のポートのファイアウォールルールを勝手に変更しないでください。オンラインVMの障害を引き起こす可能性があります。
  • ルールを追加した後、ufw enable でファイアウォールを有効にする必要があります。

まとめ

素晴らしい仕事です、ナビゲーター!ネットワークインターフェースの体系的な確認、IP設定の検証、接続テスト、開いているポートの調査、そして最後にファイアウォールの設定を行うことで、問題を無事に診断・解決しました。社内ポータルはオンラインに戻り、チームからの信頼も得られたことでしょう。

あなたは ipifconfigpingssufw といったLinuxネットワークの基本的なツールをしっかりと理解していることを証明しました。この論理的で段階的なトラブルシューティングプロセスは、システム管理者にとって不可欠なスキルであり、あなたのキャリアにおいて非常に価値のあるものとなるでしょう。これからもスキルを磨き続けてください!

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習