はじめに
ネットワークナビゲーターの皆さん、ようこそ!あなたは急成長中のテックスタートアップにジュニアシステム管理者として採用されました。今朝、重要なWebサーバーがオフラインになり、ユーザーから社内ポータルにアクセスできないという報告が上がっています。
シニア管理者は会議中で手が離せないため、あなたに初期診断が任されました。腕の見せ所です!あなたのミッションは、サーバーのネットワーク状態を体系的に調査し、根本原因を特定して接続を復旧させることです。さあ、サーバーをオンラインに戻しましょう!
- 一時的にそのチャレンジをスキップし、Linux学習パスの後のガイド付きラボに進んでください。
- 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) を使用します。
タスク
- ポート
8000への着信トラフィックを許可するファイアウォールルールを追加してください。 - SSHトラフィック(ポート22)への着信を許可するファイアウォールルールを追加してください。
- ファイアウォールを有効にして、新しいルールを適用してください。
要件
- すべての操作に
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設定の検証、接続テスト、開いているポートの調査、そして最後にファイアウォールの設定を行うことで、問題を無事に診断・解決しました。社内ポータルはオンラインに戻り、チームからの信頼も得られたことでしょう。
あなたは ip、ifconfig、ping、ss、ufw といったLinuxネットワークの基本的なツールをしっかりと理解していることを証明しました。この論理的で段階的なトラブルシューティングプロセスは、システム管理者にとって不可欠なスキルであり、あなたのキャリアにおいて非常に価値のあるものとなるでしょう。これからもスキルを磨き続けてください!



