典型的なネットワークトラブルについて理解する
【連載コラム:Linuxを学ぼう(18)】
サーバーを扱う上で必須と言える技術が「Linux」。今回は前回に引き続きネットワーク関連のお話です。初学者が遭遇しやすい典型的なネットワークトラブルについて解説します。
前回は正常にネットワーク接続できている状態を確認しました。
今回は特に初学者が遭遇しやすい典型的なネットワークトラブルについて解説します。
IPアドレスが割り当てられていない
いくつかのディストリビューションでは、インストール時にネットワークインターフェースの自動起動が設定されないことがあります。この場合、システム起動時にネットワークインターフェースが有効化されてネットワークに接続し、IPアドレスの割り当てが行われるという一連の動作が実行されません。
対応方法はいくつかありますが、たとえばインターフェースデバイスenp0s3にIPアドレスが割り当てられていない場合、NetworkManagerのCLIツールnmcliコマンドで以下のように実行することでネットワークインターフェースを有効にできます。
$ sudo nmcli dev connect enp0s3
デバイス 'enp0s3' が '297c9686-a34f-3734-8931-89fa9b051d30' で正常にアクティベートされました。
参照するDNSが間違っている
DNSによる名前解決が正しく行えない理由はいくつかありますが、一つに参照するDNSが間違えている場合があります。参照しているDNSは/etc/resolv.confの記述で確認できます。
$ cat /etc/resolv.conf
# Generated by NetworkManager
search xxxx.jp
nameserver 192.168.11.1
この環境の場合、IPアドレスはルーターのDHCPサーバーからDHCPで自動設定されているため、DNSの参照先もDHCPで自動設定されています。ここが間違っているのであれば、DHCPサーバーの設定を見直す必要があります。
NetworkManagerによるresolv.confの自動設定とその抑止
最近のディストリビューションでは、ネットワーク周りの管理はNetworkManagerによって一元的に管理されているため、単に/etc/resolv.confを書き換えても、次回のシステム起動時にはresolv.confが再生成されて設定が元に戻ってしまいます。
根本的に直すのであれば、NetworkManagerの管理ツールを使って正しい参照先DNSのIPアドレスを設定する必要がありますが、NetworkManagerによるresolv.confの上書きを抑止する設定も可能です。設定方法はNetworkManagerのドキュメントを参照してください
外部から接続できない
IPアドレスが正しく設定されており、pingコマンドやdigコマンドなどを使ってネットワークへの接続が正しくできていることを確認できても、外部からサーバーとして接続しようとすると接続できない、ということがよくあります。これはパケットフィルタリングが有効になっていて、外部からの接続を受け付けないようになっているためです。
パケットフィルタリングはディストリビューションによって使うツールが異なります。firewalld、nftables、iptables、ufwなど、ディストリビューションに合った設定を行って、外部からの接続を受け付けるようにする必要があります。
一番簡単な問題の切り分けは、一度パケットフィルタリングの設定をすべて無効にして、すべてのパケットを受け入れるようにすることです。安全なネットワークに接続していることを確認した上で行ってみてください。もし接続できるようになった場合には、使用するプロトコルに応じた適切なポート番号だけ接続を許可するように設定してください。
ここでは初学者が陥りがちな典型的なネットワークトラブルについて解説しました。ネットワークトラブルの症状や原因は多岐に渡るので、まずは基本的なネットワーク通信の確認、問題の切り分け、原因の特定と進められるよう、各種ツール、コマンドの使い方を覚えるようにしましょう。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
バックナンバー
第21回:外部からWebサーバーにアクセスする
第20回:Webサーバーを動かす
第19回:Webサーバーをインストールする
第17回:ネットワークの状態確認を理解する
第15回:ファイルのアクセス権を理解する
第14回:パッケージをアップデートする dnf編
第13回:PAMを理解する
第12回:グループとは何かを理解する
第11回:sudoコマンドについて理解する
第10回:suコマンドで特権ユーザーになる
第9回:ユーザー権限を理解する
第8回:SSHによるリモートログイン
第6回:Linuxイストールの実際
第5回:Linuxインストールの準備
第3回:学習環境を用意する
第2回:Linuxをどう学ぶのか
第1回:Linuxを学ぼう