インフラエンジニアの羅針盤

インフラエンジニア1〜3年目のための技術ガイド

Linuxネットワーク設定とトラブルシューティング・DNS名前解決解説【LinuC102】

公開
,
LinuC Level 1 第15回 主題1.06 ネットワークの基礎



サーバーがネットワークに接続できない、外部と通信が疎通しないといった障害が発生した際、インフラエンジニアには「下位層から上位層へと論理的に切り分ける体系的なトラブルシューティング能力」が求められます。LinuC 102試験の主題1.07「ネットワークの基礎」後半(1.07.2〜1.07.4)は、3つのトピック合計で重要度10という試験内最大級のウェイトを占めます。本稿では、現代の標準コマンド(ip, nmcli, ss)と旧コマンド(ifconfig, route, netstat)の完全対比、障害調査の5段階手順、そしてDNSクライアント設定(/etc/resolv.conf, /etc/hosts, /etc/nsswitch.conf)を、実機検証ログとともに論理的に解説します。

  • ipコマンド体系(ip addr, ip link, ip route)を用いたIPアドレス付与、インターフェース制御、およびデフォルトゲートウェイ設定を説明できる状態を目指します
  • NetworkManagerのCLIツールであるnmcliによる接続プロファイル管理と設定永続化の流れを把握します
  • 通信障害発生時における5段階の論理的切り分け手順(物理リンク ➔ 自ノードIP ➔ ゲートウェイ ➔ 外部経路 ➔ DNS名前解決)を習得します
  • ssコマンド(-tulpn)による待受ポートと稼働プロセスの監視手法を身につけます
  • クライアント側DNS名前解決の仕組み(/etc/nsswitch.confによる優先度制御、/etc/hosts/etc/resolv.conf)と調査ツール(dig, host)を使いこなせるようにします
項目 仕様・設定値
検証機ホスト名 linuc-node01
ディストリビューション AlmaLinux 9.8 (Olive Jaguar)
ネットワーク管理デーモン NetworkManager 1.48.10
主要ネットワークIF eth0(IP: 192.168.2.138/24, デフォルトGW: 192.168.2.137)
DNSリゾルバ 192.168.2.137(/etc/resolv.conf 参照先)
対象試験 LinuC レベル1 102試験(主題1.07.2〜1.07.4 重要度合計10)
目次
  1. 1. 現代Linuxのネットワーク設定:ipコマンドとNetworkManager
    1. 1.1 iproute2ツール群(ip addr, ip link, ip route)の基本体系
    2. 1.2 IPアドレスの確認と動的設定(ip addr show, add, del)
    3. 1.3 インターフェースの起動・停止(ip link set dev up/down)
    4. 1.4 デフォルトゲートウェイとルーティングテーブル(ip route)
    5. 1.5 NetworkManagerの制御ツール(nmcli, nmtui)と設定永続化
    6. 1.6 ホスト名の管理(hostname, hostnamectl, /etc/hostname)
  2. 2. ネットワーク診断とトラブルシューティングの5段階手順
    1. 2.1 ステップ1:自ホスト自身のIPとNIC状態の確認
    2. 2.2 ステップ2:デフォルトゲートウェイへの到達性確認
    3. 2.3 ステップ3:インターネット向けルーティングと経路追跡
    4. 2.4 ステップ4:待受ポートとサービスソケットの監視(ss -tulpn vs netstat)
    5. 2.5 ステップ5:特定ポートへの対話型疎通確認(nc: netcat)
  3. 3. クライアント側DNS設定と名前解決メカニズム
    1. 3.1 DNSクライアント設定ファイル(/etc/resolv.conf)
    2. 3.2 静的名前解決テーブル(/etc/hosts)の役割と書式
    3. 3.3 名前解決の優先順位制御ファイル(/etc/nsswitch.conf)
    4. 3.4 DNS問い合わせ調査コマンドの使い分け(dig, host, nslookup)
  4. 4. レガシーコマンドとの完全対応マトリクス
  5. 5. 実機ハンズオン演習:AlmaLinux 9でルーティング・ソケット・DNSを調査
    1. 5.1 実機検証環境の確認
    2. 5.2 演習1:ip route によるデフォルトゲートウェイとメトリック値の確認
    3. 5.3 演習2:ss -tulpn によるSSHおよび時刻同期ポートの監視
    4. 5.4 演習3:/etc/nsswitch.conf と dig コマンドによる名前解決挙動の検証
  6. 6. LinuC 102試験対策まとめとコマ問頻出チェック
    1. 6.1 コマンド・設定ファイル完全対比マトリクス
    2. 6.2 コマ問(記述式)頻出キーワード一覧表
    3. 6.3 Ping-t演習へのブリッジ(対象分野と推奨学習順)
  7. 7. まとめと次回予告

1. 現代Linuxのネットワーク設定:ipコマンドとNetworkManager

かつてLinuxで長年親しまれてきたnet-toolsパッケージ(ifconfig, route, arp等)は、Linuxカーネルの高度なネットワーク機能を扱いきれなくなり、非推奨となりました。現在ではiproute2パッケージのipコマンドが標準となっています。

Linuxネットワーク障害の論理的5段階切り分けフローチャート
図1: Linux ネットワーク障害の論理的5段階切り分けフローチャート

1.1 iproute2ツール群(ip addr, ip link, ip route)の基本体系

ipコマンドは、対象とするオブジェクトを指定するサブコマンド形式を採用しています。

  • ip addr(省略形: ip a): IPアドレスの表示・追加・削除(L3設定)。
  • ip link(省略形: ip l): 物理・論理ネットワークインターフェースの状態管理(L2設定)。
  • ip route(省略形: ip r): ルーティングテーブル(経路情報)の管理。
  • ip neigh(省略形: ip n): ARPテーブル(近隣キャッシュ)の管理。

1.2 IPアドレスの確認と動的設定(ip addr show, add, del)

IPアドレスの確認および一時的な追加・削除を行うコマンドです。

  • IPアドレスの一覧表示

    [user01@linuc-node01 ~]$ ip addr show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        inet 127.0.0.1/8 scope host lo
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        inet 192.168.2.138/24 brd 192.168.2.255 scope global noprefixroute eth0

    簡潔に1行で確認したい場合は ip -brief addr を実行します。

  • 一時的なIPアドレスの追加

    [user01@linuc-node01 ~]$ sudo ip addr add 192.168.2.200/24 dev eth0

    1つの物理インターフェースに複数のIPアドレス(IPエイリアス)を直接追加できます。

  • IPアドレスの削除

    [user01@linuc-node01 ~]$ sudo ip addr del 192.168.2.200/24 dev eth0

1.3 インターフェースの起動・停止(ip link set dev up/down)

NIC自体のリンク状態を有効化または無効化します。

# eth0 インターフェースの停止
[user01@linuc-node01 ~]$ sudo ip link set dev eth0 down

# eth0 インターフェースの起動
[user01@linuc-node01 ~]$ sudo ip link set dev eth0 up

1.4 デフォルトゲートウェイとルーティングテーブル(ip route)

パケットが別のネットワーク(インターネット等)へ向かう際の出口となる「デフォルトゲートウェイ」の設定です。

[user01@linuc-node01 ~]$ ip route show
default via 192.168.2.137 dev eth0 proto static metric 100 
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.138 metric 100 

手動でデフォルトゲートウェイを追加または削除するコマンド:

# デフォルトゲートウェイの追加
[user01@linuc-node01 ~]$ sudo ip route add default via 192.168.2.1 dev eth0

# デフォルトゲートウェイの削除
[user01@linuc-node01 ~]$ sudo ip route del default

1.5 NetworkManagerの制御ツール(nmcli, nmtui)と設定永続化

ipコマンドで追加した設定はメモリ上の一時的なものであり、システム再起動やネットワーク再起動で消失します。設定を永続化するために、現在のEnterprise LinuxではNetworkManagerを利用します。

  • nmcli: コマンドラインからNetworkManagerを制御するツール。
    # 接続プロファイル一覧の確認
    [user01@linuc-node01 ~]$ nmcli connection show
    
    # eth0のIPアドレスを固定(手動)設定に変更
    [user01@linuc-node01 ~]$ sudo nmcli con mod eth0 ipv4.addresses 192.168.2.138/24
    [user01@linuc-node01 ~]$ sudo nmcli con mod eth0 ipv4.gateway 192.168.2.137
    [user01@linuc-node01 ~]$ sudo nmcli con mod eth0 ipv4.dns "192.168.2.137 8.8.8.8"
    [user01@linuc-node01 ~]$ sudo nmcli con mod eth0 ipv4.method manual
    
    # 設定を反映(再接続)
    [user01@linuc-node01 ~]$ sudo nmcli con up eth0
  • nmtui: テキストベースの対話型GUI(CUIメニュー)画面でIPアドレスやホスト名を編集するツール。

1.6 ホスト名の管理(hostname, hostnamectl, /etc/hostname)

  • hostname: 現在のホスト名を表示(または一時変更)。
  • hostnamectl status: 詳細なホスト名情報、OSバージョン、カーネル情報を表示。
  • hostnamectl set-hostname <new_host>: ホスト名を恒久的に変更(/etc/hostname ファイルが自動更新されます)。

2. ネットワーク診断とトラブルシューティングの5段階手順

通信不通の問い合わせを受けた場合、下位レイヤーから順番に検査を進めることで原因を迅速に特定できます。

2.1 ステップ1:自ホスト自身のIPとNIC状態の確認

まず、自身のインターフェースが正常にリンク(UP)しており、正しいIPアドレスが付与されているかを確認します。

[user01@linuc-node01 ~]$ ip link show eth0
# state UP であることを確認

# ループバックアドレスへのpingでTCP/IPスタック自体の正常性を確認
[user01@linuc-node01 ~]$ ping -c 2 127.0.0.1

2.2 ステップ2:デフォルトゲートウェイへの到達性確認

同一LAN内のルーター(デフォルトゲートウェイ)へICMP Echo要求(ping)を送信し、ローカルL2/L3の疎通を確認します。

[user01@linuc-node01 ~]$ ping -c 3 192.168.2.137
PING 192.168.2.137 (192.168.2.137) 56(84) bytes of data.
64 bytes from 192.168.2.137: icmp_seq=1 ttl=64 time=0.412 ms
64 bytes from 192.168.2.137: icmp_seq=2 ttl=64 time=0.385 ms

-c <count> オプションで送信パケット数を指定します。指定しない場合、LinuxではCtrl+Cを押すまで無制限に送信し続けます。

2.3 ステップ3:インターネット向けルーティングと経路追跡

宛先ホストに至るまでのルーター(ホップ)を経路追跡します。

  • traceroute <host>: パケットのTTL(Time To Live)を1から順に増やしながら送信し、途中の各ルーターからのICMP Time Exceeded応答を収集して経路と応答時間を一覧表示します。デフォルトではUDPパケットを使用しますが、-I でICMP、-T でTCPパケットに切り替え可能です。
  • tracepath <host>: root権限を必要とせず一般ユーザーで実行可能な経路追跡ツール。経路上のPath MTU(最大転送単位)を自動探索する特徴があります。

2.4 ステップ4:待受ポートとサービスソケットの監視(ss -tulpn vs netstat)

自サーバーでサービスが正しく起動し、ポートをリッスンしているかを確認するには ss(Socket Statistics)コマンドを用います。従来の netstat よりもカーネル空間からの情報取得が高速です。

[user01@linuc-node01 ~]$ sudo ss -tulpn
Netid State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp   UNCONN 0      0          127.0.0.1:323       0.0.0.0:*   users:(("chronyd",pid=753,fd=5))
tcp   LISTEN 0      128          0.0.0.0:22        0.0.0.0:*   users:(("sshd",pid=819,fd=7))

必須オプションの語源:

  • -t: TCPソケットを表示
  • -u: UDPソケットを表示
  • -l: 待受中(LISTEN状態)のソケットのみ表示(省略時は接続中のみ)
  • -p: ソケットを所有しているPロセス名とPIDを表示(要root権限)
  • -n: ポート番号やIPを名前解決せずNumeric(数値)で表示(高速化)

2.5 ステップ5:特定ポートへの対話型疎通確認(nc: netcat)

ファイアウォールで特定ポートが遮断されていないか確認するには、nc(netcat)コマンドを使用します。

# 宛先サーバーのポート22が開いているか検査(-z: スキャンモード, -v: 詳細表示)
[user01@linuc-node01 ~]$ nc -zv 192.168.2.138 22
Ncat: Connected to 192.168.2.138:22.

3. クライアント側DNS設定と名前解決メカニズム

Webブラウザやコマンドが「https://personalnote.tokyo」といったドメイン名にアクセスする際、システム内部でIPアドレスへと変換するDNSクライアントの仕組みです。

Linux名前解決シーケンスと設定ファイル体系
図2: Linux クライアント側 DNS 名前解決シーケンスと設定ファイル体系

3.1 DNSクライアント設定ファイル(/etc/resolv.conf)

DNSサーバーのアドレスを登録する中核ファイルです。

[user01@linuc-node01 ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain example.com
nameserver 192.168.2.137
nameserver 8.8.8.8
ディレクティブ 設定値と動作
nameserver <IP> 問い合わせ先DNSサーバーのIPアドレス。最大3台まで記述可能で、上から順に問い合わせを試行します。
search <domain...> ドメイン名補完リスト。ホスト名単体(例: ping server01)で指定された際、server01.localdomainserver01.example.com の順に自動付与して名前解決を試みます。
domain <domain> 自ホストが属するローカルドメイン名(searchと排他、通常はsearchが優先)。

3.2 静的名前解決テーブル(/etc/hosts)の役割と書式

DNSサーバーを参照することなく、ローカル環境内で手動でIPアドレスとホスト名を固定的に紐付けるファイルです。

# 書式: IPアドレス  正式ホスト名  [別名(エイリアス)...]
127.0.0.1   localhost localhost.localdomain
192.168.2.130 db-server.local db01

3.3 名前解決の優先順位制御ファイル(/etc/nsswitch.conf)

/etc/hosts」と「DNS(/etc/resolv.conf)」のどちらを先に参照するかを決定している設定ファイルが /etc/nsswitch.conf(Name Service Switch)です。

[user01@linuc-node01 ~]$ grep '^hosts:' /etc/nsswitch.conf
hosts:      files dns myhostname

この記述は、「まず files/etc/hosts)を調べ、見つからなければ dns(DNSサーバー)へ問い合わせる」という順序を定めています。試験で極めて高い確率で問われる設定行です。

3.4 DNS問い合わせ調査コマンドの使い分け(dig, host, nslookup)

  • dig <domain>: 最も詳細なDNS応答情報(ヘッダ、QUESTION、ANSWER、権威セクション、クエリ所要時間等)を出力する標準調査コマンド。
    # 簡潔にIPアドレスのみ取得する場合
    [user01@linuc-node01 ~]$ dig +short personalnote.tokyo
    
    # 特定のDNSサーバーを指定して問い合わせる場合(@マークを付与)
    [user01@linuc-node01 ~]$ dig @8.8.8.8 personalnote.tokyo A
  • host <domain または IP>: 正引きおよび逆引きを簡潔に出力する使いやすいツール。
  • nslookup <domain>: 伝統的な対話型/非対話型DNS問い合わせツール。

4. レガシーコマンドとの完全対応マトリクス

試験対策および古い運用手順書の読み解きのために、新旧コマンドの対応関係を網羅します。

管理操作 現代の標準コマンド (iproute2) 旧コマンド (net-tools) 備考
IPアドレス表示 ip addr show ifconfig ip a で省略可
IPアドレス追加 ip addr add <IP/CIDR> dev <dev> ifconfig <dev>:0 <IP> エイリアスIF不要
NICの起動 / 停止 ip link set dev <dev> up / down ifconfig <dev> up / down L2リンク制御
ルーティング表示 ip route show route -n / netstat -r ip r で省略可
デフォルトGW追加 ip route add default via <GW> route add default gw <GW> via キーワード必須
ARPテーブル確認 ip neigh show arp -an 近隣ノードMAC確認
ソケット・ポート監視 ss -tulpn netstat -tulpn オプション文字は同一

5. 実機ハンズオン演習:AlmaLinux 9でルーティング・ソケット・DNSを調査

実機linuc-node01のネットワーク設定と名前解決プロセスをハンズオンで確認します。

5.1 実機検証環境の確認

現在のホスト名と接続状態を確認します。

[user01@linuc-node01 ~]$ hostnamectl
 Static hostname: linuc-node01
       Icon name: computer-vm
         Chassis: vm
  Operating System: AlmaLinux 9.8 (Olive Jaguar)
            Kernel: Linux 5.14.0-687.42.1.el9_8.x86_64

5.2 演習1:ip route によるデフォルトゲートウェイとメトリック値の確認

ルーティングテーブルを詳細に確認します。

[user01@linuc-node01 ~]$ ip route
default via 192.168.2.137 dev eth0 proto static metric 100 
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.138 metric 100 

metric 100 は経路の優先度(コスト)であり、値が小さい経路が優先的に利用されます。

5.3 演習2:ss -tulpn によるSSHおよび時刻同期ポートの監視

稼働しているデーモンのポート番号とPIDを確認します。

[user01@linuc-node01 ~]$ sudo ss -tulpn
Netid State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
udp   UNCONN 0      0          127.0.0.1:323       0.0.0.0:*    users:(("chronyd",pid=753,fd=5))
tcp   LISTEN 0      128          0.0.0.0:22        0.0.0.0:*    users:(("sshd",pid=819,fd=7))
tcp   LISTEN 0      128             [::]:22           [::]:*    users:(("sshd",pid=819,fd=8))

SSHデーモンが全インターフェース(0.0.0.0:22 および [::]:22)で待ち受けていることが分かります。

5.4 演習3:/etc/nsswitch.conf と dig コマンドによる名前解決挙動の検証

名前解決の優先度定義を確認し、DNS問い合わせを実行します。

# 優先度設定を確認
[user01@linuc-node01 ~]$ grep '^hosts:' /etc/nsswitch.conf
hosts:      files dns myhostname

# リゾルバの確認
[user01@linuc-node01 ~]$ cat /etc/resolv.conf | grep nameserver
nameserver 192.168.2.137

6. LinuC 102試験対策まとめとコマ問頻出チェック

主題1.07.2〜1.07.4における記述式問題(コマ問)の最頻出ポイントを総整理します。

6.1 コマンド・設定ファイル完全対比マトリクス

機能・用途 設定ファイル / コマンド 最重要キーワード
DNSサーバー指定 /etc/resolv.conf nameserver <IP>, search <domain>
静的ホスト解決 /etc/hosts IPアドレス ホスト名
名前解決優先度 /etc/nsswitch.conf hosts: files dns
IPアドレス操作 ip addr show, add, del
デフォルトGW追加 ip route add default via <IP> via キーワード
待受ポート確認 ss -tulpn -t(TCP), -u(UDP), -l(Listen), -p(Proc), -n(Num)
DNS調査 dig, host dig @server domain, +short

6.2 コマ問(記述式)頻出キーワード一覧表

以下の設問に対するコマンド名、オプション、または設定キーワードを想起してください。

  • 問題1: 問い合わせ先DNSサーバーのIPアドレスを指定する、/etc/resolv.conf のディレクティブ名は何か?
  • 問題2: ホスト名単体で名前解決を試みた際、自動付与するドメイン名リストを指定する /etc/resolv.conf のディレクティブ名は何か?
  • 問題3: /etc/hosts とDNSサーバーのどちらを優先して名前解決するかを定義している設定ファイルはどこか?
  • 問題4: デフォルトゲートウェイ 192.168.1.1 を追加する ip route コマンドの書式において、ゲートウェイIPの直前に置くキーワードは何か?
  • 問題5: リッスンしている全TCP/UDPソケットを数値・プロセス名付きで表示するssコマンドの代表的オプションの組み合わせは何か?
  • 問題6: 特定のDNSサーバー 8.8.8.8 を指定してドメイン情報を問い合わせる際、digコマンドでサーバー名の直前に付与する記号は何か?
  • 問題7: 宛先ホストまでの通信経路上のMTU(最大転送単位)を探索しながら経路追跡を行うコマンドは何か?
解答と解説を見る
設問 正解(記述内容) 補足・別解
問題1 nameserver 最大3台まで指定可
問題2 search 単一指定は domain
問題3 /etc/nsswitch.conf hosts: files dns
問題4 via ip route add default via 192.168.1.1
問題5 -tulpn(または -tulnp, -anp等) netstatでも同等
問題6 @(アットマーク) dig @8.8.8.8 domain
問題7 tracepath tracerouteとは異なりroot不要

6.3 Ping-t演習へのブリッジ(対象分野と推奨学習順)

LinuC 102試験の主題1.07(合計重要度10)は、試験全体の合否を左右する最大得点源です。

  • 主題1.07:ネットワークの基礎
    • 「基本的なネットワーク設定」分野(重要度4):ip addr addip link set dev upip route add default vianmcliの書式記述問題を徹底反復します。
    • 「基本的なネットワークの問題解決」分野(重要度4):ss -tulpnの各文字の意味、ping -ctraceroutetracepathの相違、ncの使い方を完璧にします。
    • 「クライアント側のDNS設定」分野(重要度2):/etc/resolv.confnameserver/search/etc/hostsの書式、/etc/nsswitch.confdig @serverの記述を固めます。

第15回 二段階復習チェックリスト

【最優先】102試験合格必須チェック項目(10選)

  • IPアドレス表示・追加コマンド(ip addr show, ip addr add 192.168.1.10/24 dev eth0
  • リンク有効化・無効化(ip link set eth0 up/down
  • ルーティングテーブル確認とデフォルトゲートウェイ追加(ip route show, ip route add default via 192.168.1.1
  • NetworkManager CLI操作(nmcli connection show, nmcli con up <接続名>
  • 疎通確認コマンド(ping -c 4 <ホスト>)と経路追跡(traceroute / tracepath
  • ソケット待機状態の調査(ss -tulpn)とTCP/UDPの判別
  • DNS問い合わせ先指定ファイル(/etc/resolv.confnameserver ディレクティブ)
  • ドメイン自動補完(/etc/resolv.confsearch ディレクティブ)
  • 静的名字解決ファイル(/etc/hosts の書式: IP アドレス ホスト名 別名)
  • 名前解決の優先順序定義ファイル(/etc/nsswitch.confhosts: files dns

【実務へ前進】余力があれば押さえる発展項目

  • ポート疎通テストツール(nc -zv <ホスト> <ポート>)を用いたFW遮断の早期切り分け
  • DNSレコード詳細調査コマンド(dig <ドメイン> any +noall +answer, host -t mx <ドメイン>
  • 旧式コマンド(ifconfig, route, netstat)と新世代iproute2ツールの対応関係

7. まとめと次回予告

  • ネットワーク管理は ip コマンド(addr, link, route)が標準であり、永続化には nmcli を使用します
  • 障害調査は「①リンク ➔ ②IP ➔ ③ゲートウェイ ➔ ④ルーティング ➔ ⑤DNS」の順で切り分けるのが論理的アプローチです
  • ソケット確認には ss -tulpn を用い、ポート疎通確認には nc -zv を活用します
  • 名前解決は /etc/nsswitch.conf の定義に従い、通常は /etc/hosts/etc/resolv.confnameserver)の順序で探索されます
  • DNS問い合わせ調査には dighost を使用します

次回は主題1.09「システムサービス」より、「システム時刻管理とシステムログ(chronyによるNTP同期、systemd-journaldとrsyslog、logrotate)」を詳しく解説します。

前の記事
次の記事