変更要約: 初版(主題2.03・副主題2.03.1〜2.03.3に対応)
3.3ネットワークの問題解決
ホスト名の設定(hostname・/etc/hostname)、名前解決に関わる/etc/hosts・/etc/resolv.conf、経路をたどるtraceroute・traceroute6・mtr、ログからの手がかり(dmesg・/var/log/syslog・/var/log/messages・systemdジャーナル)、NetworkManagerや旧来の設定ファイル群(/etc/network/・/etc/sysconfig/network-scripts/)を学びます。
「つながらない」という症状は、名前解決の失敗なのか、経路上のどこかでの喪失なのか、それともインターフェース自体の異常なのかで対処がまったく変わります。hostnameや/etc/resolv.confといった設定ファイル、traceroute・mtrによる経路追跡、dmesgやログでの裏取りを組み合わせて切り分けます。
3.3.1ホスト名と名前解決
- hostname=現在のホスト名を表示・一時変更するコマンド。恒久設定は/etc/hostnameに記述する(多くのディストリで systemd-hostnamed 経由・
hostnamectlと連携)。 - /etc/hosts=IPアドレスとホスト名の静的対応表。DNSより先に参照されるのが一般的で、ここに古い/誤ったエントリがあると名前解決の症状として現れる。
- /etc/resolv.conf=DNSクライアント設定(
nameserver行で参照先DNSサーバーを指定)。NetworkManager 環境では自動生成・上書きされることがあり、手動編集が意図せず消えることがある。 - 名前解決の切り分けにも nmcli・ip が使える(
nmcli device showでDNS設定確認、ip addrでインターフェース状態確認)。
3.3.2経路追跡とログでの裏取り
- traceroute/traceroute6=送信先までの各ホップを表示し、経路上のどこで遅延・喪失が起きているかを特定する。mtr=traceroute とping を組み合わせ、継続的に各ホップの喪失率・応答時間を監視できるツール。
- dmesg=カーネルメッセージバッファの表示(リンク断・NICドライバのエラー等の裏取りに使う)。/var/log/syslog・/var/log/messages=ディストリ系統によるシステムログの置き場所。systemd 系ではジャーナル(
journalctl)が中心。 - NetworkManager=多くのディストリで標準の接続管理デーモン。旧来の設定ファイル群=/etc/network/(Debian系 interfaces)・/etc/sysconfig/network-scripts/(RHEL系 ifcfg-*)。ディストリ系統によって設定の置き場所が異なる点が要注意。
「名前解決の切り分けは /etc/hosts → /etc/resolv.conf の順」「traceroute=経路上の各ホップ特定・mtr=継続監視」「NetworkManager 環境では resolv.conf が自動生成され手動編集が消える」「Debian系=/etc/network/interfaces・RHEL系=/etc/sysconfig/network-scripts/」 のディストリ差が定番です。ログの一次情報源は systemd 系なら journalctl、非systemd系なら syslog/messages という対比も押さえます。
「特定サイトにだけつながらない」という相談を受けたときの定番の切り分け手順を通しで見ましょう。まず名前解決を疑い、ping <ドメイン名> が失敗し ping <IPアドレス直打ち> は成功するなら名前解決の問題だと判断できます。次に/etc/hostsに該当ドメインの誤ったエントリが無いかを確認し(あればここが最優先で参照されるため即座に症状として出ます)、無ければ/etc/resolv.confのnameserver行が正しいDNSサーバーを指しているかを見ます。NetworkManager環境では、nmcliで管理している接続のDNS設定と、実際にファイルへ反映された内容がズレることがあるため、nmcli device show <if> と/etc/resolv.confを突き合わせます。名前解決に問題が無ければ経路を疑い、traceroute <宛先> で応答が途切れるホップを特定します。継続的な間欠喪失(特定時間帯だけ遅い等)が疑われる場合はmtrで継続監視し、パケットロス率が高いホップを統計的に特定します。ここまでの調査結果は必ず裏取りします。NIC自体の物理的な異常(リンクフラップ等)はdmesgにカーネルログとして残り、systemd系ディストリならjournalctl -u NetworkManagerで NetworkManager 自体の挙動(接続の再確立・失敗理由)も追えます。旧来のディストリ(非systemd・非NetworkManager運用)では/var/log/syslogや/var/log/messagesをgrepすることが同じ役割を果たし、設定ファイルの場所も/etc/network/interfaces(Debian系)か/etc/sysconfig/network-scripts/ifcfg-eth0(RHEL系)かでディストリ系統を意識する必要があります。
| 切り分けの観点 | 確認手段 | 備考 |
|---|---|---|
| ホスト名の恒久設定 | /etc/hostname | hostname コマンドは一時変更 |
| 静的な名前解決 | /etc/hosts | DNSより先に参照 |
| DNS設定 | /etc/resolv.conf | NetworkManagerが上書きしうる |
| 経路上のホップ特定 | traceroute / traceroute6 | mtr は継続監視版 |
| 旧来の設定ファイル置き場 | /etc/network/ (Debian系) / /etc/sysconfig/network-scripts/ (RHEL系) | ディストリ系統で異なる |
ひっかけ: 「/etc/resolv.conf を手動編集すれば恒久的にDNS設定が固定される」は誤りです。NetworkManager が管理する環境では自動生成により手動編集が上書きされることがあります。また「traceroute と mtr は同じ一回きりの経路表示ツール」も誤り=mtrは継続的にホップごとの統計(喪失率等)を取り続ける点が traceroute と異なります。
3.3.3この節のまとめ
- 名前解決は/etc/hosts(静的・優先)→/etc/resolv.conf(DNS。NetworkManagerが上書きしうる)の順で確認
- 経路はtraceroute/traceroute6(単発ホップ特定)/mtr(継続監視)。裏取りはdmesg・journalctl(systemd)/syslog・messages(非systemd)。設定ファイルはディストリ系統で異なる
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. ドメイン名を指定した ping は失敗するが、同じホストのIPアドレスを直接指定した ping は成功する。まず確認すべきファイルは?
Q2. 特定の時間帯だけ通信が不安定で、どのホップで断続的なパケットロスが起きているかを継続的に観測したい。適切なツールは?
Q3. RHEL系ディストリビューションで、伝統的なネットワークインターフェース設定ファイルが置かれる場所はどこ?

