LinuC レベル1 102試験対策シリーズの第3回です。今回は ネットワーク基礎 を、AlmaLinux 9.6 と Ubuntu 24.04 の 2台構成で動かしながら学びます。TCP/IP の階層、IPv4 アドレス、サブネット、ポート番号といった基礎概念から、ip コマンドと nmcli による実機操作までを扱います。
環境前提
- ディストロ:AlmaLinux 9.6(NetworkManager)/ Ubuntu 24.04 LTS(netplan・参考)
- ユーザー:developer(sudo NOPASSWD)
- 検証環境:Hyper-V on Windows 11、2 NIC 構成(External 192.168.1.0/24 + Internal 10.0.10.0/24)
- 関連VM:linuc-alma(192.168.1.132 / 10.0.10.132)・linuc-ubuntu(192.168.1.133 / 10.0.10.133)
- 本回は linuc-alma を中心に操作し、linuc-ubuntu には疎通確認のみ行います
今ここマップ
LinuC 102 試験対策シリーズ(全12回)
第1回 シェル環境のカスタマイズ
第2回 Bashスクリプト入門
▶ 第3回 ネットワーク基礎 ← いまここ
第4回 ネットワークトラブルシューティングとDNS
第5回 ユーザ・グループ管理と sudo 設定
第6回 ジョブスケジューリングと時刻管理
第7回 ログ管理実践
第8回 メール配送エージェント(MTA)の基本
第9回 ファイアウォールと SELinux 入門
第10回 暗号化によるデータ保護
第11回 クラウドセキュリティの基礎
第12回 オープンソースの文化
この記事で身につくこと
- TCP/IP の4層モデルと主要プロトコル(IP/TCP/UDP/ICMP)の役割を説明できる
- IPv4 アドレス・サブネットマスク・CIDR 表記の関係を理解する
- ポート番号と Well-Known ポート(22/53/80/443)を区別できる
ip addr/ip route/ip linkで現在のネットワーク状態を読めるnmcliで NetworkManager の接続情報を確認できる
第1章:「ネットワーク」を再定義する
1.1 通信の本質は「宛先と差出人がある手紙」
ネットワーク通信は、本質的には手紙のやり取りに似ています。差出人(自分の IP アドレスとポート)、宛先(相手の IP アドレスとポート)、封筒(プロトコルが規定する形式)、便箋(データ本体)。これだけです。
違いはスピードと信頼性。1秒間に何百万通もやり取りでき、必要なら「届いたか確認する仕組み」も使えます。それを支えるのが TCP/IP プロトコル群 です。
1.2 なぜ階層化するのか(誰のために)
TCP/IP は階層化されています。なぜ単純に「全部一体で設計する」のではなく、わざわざ層に分けるのか。
- アプリケーション開発者のため:HTTP やデータベースの上だけ気にすればよい。下層の有線・無線・光ファイバーを意識する必要がない
- 運用エンジニアのため:障害発生時に「物理層なのか/IP 層なのか/TCP 層なのか/アプリ層なのか」とレイヤー単位で切り分けられる
- ハードウェアエンジニアのため:電気信号やフレームの仕様だけに集中できる。上層が増えても影響を受けない
- 後の変化に備えるため:物理層が銅線から光ファイバーへ変わっても、上層のアプリは変えなくてよい
これが「関心の分離」という設計思想です。各層は自分の責務だけ果たし、上下の層の中身は気にしない。
第2章:TCP/IP の4層モデル
2.1 4層モデルと7層モデルの対応
| TCP/IP 4層 | OSI 7層 | 代表プロトコル | 住所の単位 |
|---|---|---|---|
| アプリケーション層 | 5〜7(セッション/プレゼン/アプリ) | HTTP, SSH, DNS, SMTP, FTP | サービス(ポート) |
| トランスポート層 | 4 | TCP, UDP | ポート番号 |
| インターネット層 | 3 | IP(IPv4/IPv6), ICMP | IP アドレス |
| リンク層(ネットワークインターフェース層) | 1〜2(物理/データリンク) | Ethernet, ARP | MAC アドレス |
LinuC 試験では TCP/IP 4層モデル が問われます。OSI 7層は概念モデル、TCP/IP 4層は実装モデル、と覚えると整理しやすいです。
2.2 各層の責務
- リンク層:同じセグメント(LAN)内の機器間でフレームをやり取りする。MAC アドレスを使う。スイッチが活躍する層
- インターネット層:セグメントを超えて目的地までパケットを運ぶ。IP アドレスとルーティング。ルーターが活躍する層。ICMP(ping で使うやつ)もここ
- トランスポート層:プロセス(ポート)単位で通信を区別する。TCP(信頼性あり)と UDP(信頼性なし、速い)が代表
- アプリケーション層:HTTP・SSH・DNS など、人間が認識する「サービス」の層。下層の存在は意識しなくてよい
2.3 カプセル化 ── データが下りていく仕組み
データが各層を下りるとき、それぞれの層がヘッダ(封筒の宛名書き)を付けていきます。これを カプセル化 と呼びます。
[Ethernet ヘッダ | IP ヘッダ | TCP ヘッダ | HTTP データ | ... ]
↑MAC ↑IP ↑ポート ↑実データ
リンク層 ネット層 トランス層 アプリ層

受信側では逆順にヘッダを外していき、最終的にアプリにデータが届きます。LinuC 試験で深いビット単位は問われませんが、「IP ヘッダにはアドレスがある」「TCP ヘッダにはポート番号がある」という対応は押さえます。
📖 試験Tipsボックス1:TCP/IP 4層モデル
主題:1.07.1(重要度:高)
出題パターン:「TCP/IP モデルは何層構成か?」「IP プロトコルは何層に属するか?」「HTTP は何層か?」「ICMP は何層か?」
暗記ポイント
- 4層(リンク層
- インターネット層
- トランスポート層
- アプリケーション層)
- IP はインターネット層
- TCP・UDP はトランスポート層
- HTTP・SSH・DNS はアプリケーション層
- ICMP はインターネット層(ping で使う)
- ARP はリンク層
第3章:IPv4 アドレスとサブネット
3.1 IPv4 アドレスは 32bit を 4つに区切った数字
IPv4 アドレスは 32 bit(4 byte)の値で、人間が読みやすいように 8 bit ずつ4つに区切って 10進数で書きます。これを ドット区切り 10進表記 と呼びます。
192.168.1.132
↓ 各オクテットは 0〜255
11000000.10101000.00000001.10000100 ← 2進表記
└── ネットワーク部 ──┘└─ ホスト部 ─┘ ← 区切りはサブネットマスク次第
3.2 サブネットマスクと CIDR 表記
32 bit のうち、上位の何 bit が「ネットワーク部」かを指定するのが サブネットマスク です。
| サブネットマスク | CIDR 表記 | 使えるホスト数 | 例 |
|---|---|---|---|
| 255.255.255.0 | /24 | 254(ネットワーク・ブロードキャストを除く) | 192.168.1.0/24 |
| 255.255.0.0 | /16 | 65534 | 172.16.0.0/16 |
| 255.0.0.0 | /8 | 16777214 | 10.0.0.0/8 |
| 255.255.255.252 | /30 | 2 | 2点間リンク用 |
CIDR(Classless Inter-Domain Routing)表記は「192.168.1.0/24」のようにアドレスとサブネット bit 数をスラッシュで連結します。現代の表記はほぼこれです。
3.3 特殊アドレス
- ネットワークアドレス:ホスト部がすべて 0(例:192.168.1.0/24 の
192.168.1.0)。ネットワーク自体を指す。ホストに割り当てない - ブロードキャストアドレス:ホスト部がすべて 1(例:192.168.1.0/24 の
192.168.1.255)。セグメント内の全ホスト宛て - ループバック:
127.0.0.0/8(特に127.0.0.1= localhost)。自分自身を指す
3.4 プライベートアドレス(RFC1918)
インターネットには出さず、組織内でしか使わない 3 つの範囲が予約されています。
| 範囲 | CIDR | 用途 |
|---|---|---|
| 10.0.0.0 〜 10.255.255.255 | 10.0.0.0/8 | 大規模組織。今回の Internal NIC(10.0.10.0/24) |
| 172.16.0.0 〜 172.31.255.255 | 172.16.0.0/12 | 中規模組織。Docker のデフォルトもここ |
| 192.168.0.0 〜 192.168.255.255 | 192.168.0.0/16 | 家庭用ルーター。今回の External NIC(192.168.1.0/24) |
本検証環境ではすべてプライベートアドレスを使っています。インターネットへ出る際は NAT(後述・実機検証は次回以降)で公開 IP に変換されます。
📖 試験Tipsボックス2:IPv4 アドレスとサブネット
主題:1.07.1(重要度:高)
出題パターン:「IPv4 アドレスは何 bit か?」「/24 のサブネットマスクは?」「/24 で使えるホスト数は?」「プライベートアドレス3範囲は?」「ループバックアドレスは?」
暗記ポイント
- 32 bit
- /24 = 255.255.255.0 = 254 ホスト
- プライベート:10/8、172.16/12、192.168/16
- ループバック:127.0.0.0/8(127.0.0.1)
- ネットワーク部はホスト部すべて0、ブロードキャストはホスト部すべて1
第4章:プロトコルとポート
4.1 TCP と UDP と ICMP
| プロトコル | 層 | 特徴 | 用途例 |
|---|---|---|---|
| TCP | トランスポート | コネクション型、3 way handshake、信頼性、再送制御 | SSH、HTTP、メール |
| UDP | トランスポート | コネクションレス、ヘッダが軽い、速い、信頼性なし | DNS、NTP、動画ストリーミング |
| ICMP | インターネット | 制御メッセージ、エラー通知、疎通確認 | ping、traceroute |
ざっくりした覚え方:信頼が必要なら TCP、速度が必要なら UDP、生存確認なら ICMP。
4.2 ポート番号の3区分
- Well-Known(0〜1023):予約済み。サーバープロセスが listen するときに使う。root 権限がないと bind できない
- Registered(1024〜49151):登録済み。各種アプリ用
- Dynamic/Ephemeral(49152〜65535):クライアントが一時的に使う

4.3 覚えておきたい Well-Known ポート
| ポート | プロトコル | サービス |
|---|---|---|
| 22 | TCP | SSH |
| 25 | TCP | SMTP(メール送信) |
| 53 | UDP(一部 TCP) | DNS |
| 80 | TCP | HTTP |
| 123 | UDP | NTP(時刻同期) |
| 443 | TCP | HTTPS |
linuc-alma で実行 ──ポート↔サービス名のマッピングは /etc/services に書かれています。
実行コマンド:
$ grep -E '^(ssh|http|domain|smtp|ntp)\s' /etc/services | head
実行結果:
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
smtp 25/tcp mail
smtp 25/udp mail
domain 53/tcp # name-domain server
domain 53/udp
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
ntp 123/tcp
このファイルは情報源で、ポートを開けるかどうかとは別の話です。実際に listen しているかは ss コマンドで確認します(第7章)。
📖 試験Tipsボックス3:プロトコルとポート
主題:1.07.1(重要度:高)
出題パターン:「SSH のポートは?」「DNS のポートとプロトコルは?」「TCP と UDP の違いは?」「Well-Known ポートの範囲は?」
暗記ポイント
- SSH 22/TCP / SMTP 25/TCP / DNS 53/UDP+TCP / HTTP 80/TCP / NTP 123/UDP / HTTPS 443/TCP
- TCP = 信頼性(3 way handshake)
- UDP = 速度(コネクションレス)
- ICMP = 制御(ping)
- Well-Known: 0〜1023
- ポート↔サービス名は
/etc/services
第5章:「いま」を見る ── ip コマンド
ここからは linuc-alma で実機操作します。linuc-alma で実行
5.1 ip addr ── IP アドレスを見る
実行コマンド:
$ ip -4 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
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 192.168.1.132/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 10.0.10.132/24 brd 10.0.10.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
読み方:
- lo ── ループバック(自分自身)。
127.0.0.1/8 - eth0 ── 物理 NIC その1。
192.168.1.132/24(External Switch 経由でホストや外部と通信) - eth1 ── 物理 NIC その2。
10.0.10.132/24(Internal Switch 経由で linuc-ubuntu と通信) - state UP ── リンクは有効
- scope global ── 外部から到達可能なグローバルスコープ
- brd 192.168.1.255 ── ブロードキャストアドレス
5.2 ip route ── 経路を見る
パケットを送るときに「どの NIC から、どのゲートウェイを経由するか」を決めるのが ルーティングテーブル です。
実行コマンド:
$ ip route show
実行結果:
default via 192.168.1.1 dev eth0 proto static metric 102
10.0.10.0/24 dev eth1 proto kernel scope link src 10.0.10.132 metric 103
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.132 metric 102
読み方:
- default via 192.168.1.1 dev eth0 ── どこにも該当しないときは 192.168.1.1(ホームルーター)に投げる。これが デフォルトゲートウェイ
- 10.0.10.0/24 dev eth1 scope link ── 10.0.10.0/24 宛ては eth1 から直接送る(同じセグメント)
- 192.168.1.0/24 dev eth0 scope link ── 192.168.1.0/24 宛ては eth0 から直接送る
- metric ── ルートの優先度。値が小さい方が優先される
5.3 ip link ── MAC とリンク状態を見る
実行コマンド:
$ ip link show
実行結果:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:15:5d:01:63:54 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:15:5d:01:63:55 brd ff:ff:ff:ff:ff:ff
link/ether 00:15:5d:01:63:54 が MAC アドレスです。先頭3バイトは OUI(Organizationally Unique Identifier)と呼ばれ、製造ベンダーで決まっています。00:15:5d は Microsoft Hyper-V の OUI で、これを見れば「Hyper-V の仮想 NIC だ」とわかります。
5.4 ip コマンドで一時変更(参考)
ip コマンドは設定変更もできますが、再起動で消えます。これがヒヤリハットの種です(第10章)。
# (参考・実行はしない)
$ sudo ip addr add 192.168.1.250/24 dev eth0 # 一時的に追加
$ sudo ip addr del 192.168.1.250/24 dev eth0 # 一時的に削除
$ sudo ip link set eth1 down # リンクダウン(一時)
$ sudo ip link set eth1 up # リンクアップ(一時)
「設定」ではなく「現在状態の操作」と覚えると安全です。永続化は次節の nmcli を使います。
5.5 hostname と hostnamectl
実行コマンド:
$ hostname
$ hostnamectl status
実行結果:
linuc-alma
Static hostname: linuc-alma
Icon name: computer-vm
Chassis: vm
Virtualization: microsoft
Operating System: AlmaLinux 9.6 (Sage Margay)
CPE OS Name: cpe:/o:almalinux:almalinux:9::baseos
Kernel: Linux 5.14.0-570.12.1.el9_6.x86_64
Architecture: x86-64
Hardware Vendor: Microsoft Corporation
Hardware Model: Virtual Machine
Firmware Version: Hyper-V UEFI Release v4.1
永続的にホスト名を変更するときは sudo hostnamectl set-hostname 新ホスト名 を使います(実機操作は本回では行いません)。
第6章:永続化 ── NetworkManager と nmcli
6.1 NetworkManager の役割
AlmaLinux 9 を含む現代の RHEL 系では NetworkManager がネットワーク設定の主役です。CUI のフロントエンドが nmcli、TUI のフロントエンドが nmtui。設定ファイルは /etc/NetworkManager/system-connections/ に保存されますが、直接編集ではなく nmcli で操作します。
6.2 接続定義の一覧
linuc-alma で実行
実行コマンド:
$ nmcli connection show
実行結果:
NAME UUID TYPE DEVICE
eth0 1fb1293a-b218-3ae7-a8a5-b4b4713edc9b ethernet eth0
eth1 2d2adca2-0914-321b-a68a-7d7c8d9d5bc6 ethernet eth1
lo 2aefea0b-aaca-45a6-8990-ff9e701ac586 loopback lo
「接続定義」(connection)と「デバイス」(device)は別の概念です。デバイスは物理/仮想 NIC、接続定義はそれに紐付く設定セット。1つのデバイスに複数の接続定義を持たせて切り替えることもできます(ラップトップで自宅/会社プロファイルを切り替えるイメージ)。
6.3 デバイスの状態
実行コマンド:
$ nmcli device status
実行結果:
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み eth0
eth1 ethernet 接続済み eth1
lo loopback 接続済み (外部) lo
STATE は LANG=ja_JP.UTF-8 のため日本語表示です。試験では connected と英語で問われるので、両方の表記を覚えておきます。
6.4 接続の詳細
実行コマンド:
$ nmcli connection show eth0 | head -8
実行結果:
connection.id: eth0
connection.uuid: 1fb1293a-b218-3ae7-a8a5-b4b4713edc9b
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: eth0
connection.autoconnect: はい
connection.autoconnect-priority: -999
connection.autoconnect-retries: -1 (default)
connection.autoconnect: はい はブート時に自動接続する設定です(試験では yes と問われる)。
6.5 永続的に変更するコマンド(参考)
本記事では検証環境を壊さないため実行しませんが、実務でよく使うパターンを紹介します。
# DNS サーバーを追加(永続)
$ sudo nmcli connection modify eth0 +ipv4.dns 1.1.1.1
# 設定を反映(接続を再有効化)
$ sudo nmcli connection up eth0
# 固定 IP に変更(永続)
$ sudo nmcli connection modify eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.200/24 \
ipv4.gateway 192.168.1.1
# DHCP に戻す
$ sudo nmcli connection modify eth0 ipv4.method auto
Ubuntu の場合:netplan(/etc/netplan/*.yaml)で管理します。sudo netplan get で現在値を読み取り、sudo netplan apply で反映。本シリーズでは AlmaLinux 中心のため詳細は割愛しますが、概念は同じです。
📖 試験Tipsボックス4:ip コマンドと nmcli
主題:1.07.2(重要度:高)
出題パターン:「IP アドレス確認コマンドは?」「ルーティングテーブル確認は?」「永続的に IP を変更するコマンドは?」
暗記ポイント
ip addr(旧ifconfig)ip route(旧route)ip link(リンク状態と MAC)- 一時設定:
ip addr add/delip route add/del(再起動で消える) - 永続化:
nmcli connection modify(RHEL 系) - Ubuntu は netplan(
/etc/netplan/*.yaml) ifconfigroutenetstatは非推奨(ipss系に置き換わった)
第7章:開いているポートを見る ── ss コマンド
サーバーがどのポートで待ち受けているか(listen)、どんな接続が確立しているか(established)を見るには ss コマンドを使います(旧 netstat の後継)。
7.1 リスニングポート一覧
linuc-alma で実行
実行コマンド:
$ ss -tuln
実行結果:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*
udp UNCONN 0 0 [::1]:323 [::]:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
オプションの意味:
-tTCP のみ-uUDP も含める-llisten 状態のみ-n数値表示(ホスト名・サービス名解決をしない)-pプロセス情報も表示(要 sudo)
読み取れること:
tcp LISTEN 0.0.0.0:22── sshd が全 IP・ポート 22 で待ち受け(IPv4)tcp LISTEN [::]:22── 同じくポート 22(IPv6)udp UNCONN 127.0.0.1:323── chrony がローカル管理用に UDP 323 を開く
7.2 接続状態の全表示
実行コマンド:
$ ss -tan | head
実行結果:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
ESTAB 0 52 192.168.1.132:22 192.168.1.100:64653
LISTEN 0 128 [::]:22 [::]:*
ESTAB(確立済み)の行は、Windows ホスト(192.168.1.100)からこのサーバー(192.168.1.132:22)に SSH 接続している様子です。-a は all(listen 含む全状態)、-n は数値表示。
TCP 状態には次のようなものがあります:LISTEN(待ち受け)/ SYN-SENT(接続要求中)/ ESTABLISHED(確立)/ FIN-WAIT(切断処理中)/ TIME-WAIT(最終待機)/ CLOSE-WAIT(相手の切断待ち)。
第8章:linuc-ubuntu と疎通確認
2 NIC 構成なので、External 経路と Internal 経路の両方で linuc-ubuntu に疎通を取れます。linuc-alma で実行
8.1 ICMP(ping)で疎通確認
実行コマンド:
$ ping -c 3 192.168.1.133 # External 経由
$ ping -c 3 10.0.10.133 # Internal 経由
実行結果:
PING 192.168.1.133 (192.168.1.133) 56(84) bytes of data.
64 バイト応答 送信元 192.168.1.133: icmp_seq=1 ttl=64 時間=0.557ミリ秒
64 バイト応答 送信元 192.168.1.133: icmp_seq=2 ttl=64 時間=0.370ミリ秒
64 バイト応答 送信元 192.168.1.133: icmp_seq=3 ttl=64 時間=0.365ミリ秒
--- 192.168.1.133 ping 統計 ---
送信パケット数 3, 受信パケット数 3, 0% packet loss, time 2044ms
rtt min/avg/max/mdev = 0.365/0.430/0.557/0.089 ms
PING 10.0.10.133 (10.0.10.133) 56(84) bytes of data.
64 バイト応答 送信元 10.0.10.133: icmp_seq=1 ttl=64 時間=0.400ミリ秒
64 バイト応答 送信元 10.0.10.133: icmp_seq=2 ttl=64 時間=0.374ミリ秒
64 バイト応答 送信元 10.0.10.133: icmp_seq=3 ttl=64 時間=0.502ミリ秒
--- 10.0.10.133 ping 統計 ---
送信パケット数 3, 受信パケット数 3, 0% packet loss, time 2046ms
rtt min/avg/max/mdev = 0.374/0.425/0.502/0.055 ms
両経路ともに疎通しています。-c 3 は 3 回送ったらやめる指定。RTT は約 0.4ms 前後で、Internal 経路の方がわずかに速い傾向です。
8.2 SSH(TCP 22)の疎通確認
TCP レベルの疎通は ssh コマンドで試せます。鍵が配布されていない場合は認証で拒否されますが、その前に「TCP 22 へ到達できているか」が確認できます。
実行コマンド:
$ ssh -o BatchMode=yes -o ConnectTimeout=5 -o StrictHostKeyChecking=no developer@10.0.10.133 hostname
実行結果:
Warning: Permanently added '10.0.10.133' (ED25519) to the list of known hosts.
developer@10.0.10.133: Permission denied (publickey,password).
「Permission denied」が返ってきた = TCP 22 までは届いていて、SSH のホスト鍵交換も完了し、認証フェーズに入った という意味です。ファイアウォールやルーティングは正しく抜けています。鍵認証の設定は第10回(暗号化)で扱います。
現場での使いどころ
- 新規サーバー受領時の確認:
ip addrip routehostnamectlnmcliで「いまの構成」を読み取る。「与えられた IP は何か、ゲートウェイはどこか、自分は何という名前か」 - 障害切り分けのレイヤー順:物理(リンク状態
ip link)→ IP(ip addr)→ ルート(ip route)→ ファイアウォール(次回・第9回)→ アプリ(ss -tuln)。順番に切り分けると犯人が早く見つかる - VLAN 追加・サブネット変更:作業前に必ず
nmcli connection showで既存設定をバックアップしておく - クラウドでも論理は同じ:AWS の VPC、Azure の VNet、GCP の VPC ── 名前は違っても「IP・サブネット・ルートテーブル・セキュリティグループ」の4点セットは共通
- DHCP ↔ 固定 IP の切り替え:
nmcli connection modify eth0 ipv4.method auto/manualを覚えておくと現場で即時対応できる - ss -tulnp で「誰が何を開いているか」を把握:セキュリティ監査や、不要なポートが開いていないかの確認に。sudo 付きでプロセス情報まで取る
- 一時変更は永続化を忘れない:
ip addr addで済ませた変更は次回起動で消える。nmcli connection modifyで永続化するか、netplan の yaml に書く
第10章:ヒヤリハット ── 一時設定で済ませて翌朝サービス停止
ヒヤリハット:ip addr add で IP 追加 → 永続化忘れ → 再起動で消失
あるエンジニアが、本番サーバーに追加 IP を割り当てる作業をしていました。検証として sudo ip addr add 192.168.1.250/24 dev eth0 を実行し、外部から疎通確認 OK、関係者にも「IP 追加完了」と連絡。
ところが翌朝、深夜のメンテナンス再起動で IP が消えており、サービス停止。問い合わせが殺到。
原因:
ip addr addは 現在状態への一時操作 であり、設定ファイルに保存されない- 再起動時に NetworkManager は
/etc/NetworkManager/system-connections/の定義を読み直すため、後から追加した IP は失われる - 「動いている」「永続化されている」を混同していた
教訓:一時設定と永続化は別の作業
ipコマンドは「現在状態」、nmcli connection modifyは「設定ファイル」と頭の中で分ける- 作業手順書には必ず「永続化ステップ」を入れる。テンプレ:(1) ip コマンドで検証 → (2) 動作確認 → (3) nmcli で永続化 → (4) 再起動確認 → (5) 動作再確認
- 変更後は
nmcli connection show 接続名 | grep ipv4で永続化済み設定を読み返して確認する - 再起動して通るかを必ず確認する。再起動できない本番なら、
nmcli connection reload+nmcli connection up 接続名で擬似的に再読み込み - Ubuntu の場合は
/etc/netplan/*.yamlの編集 +sudo netplan applyで永続化 - 変更前後で
ip addrip routeの出力を保存しておき、差分を見られるようにする
やってみよう
linuc-alma で順に試してください。本回は読み取り中心で、設定変更は行いません(変更は次回以降、影響範囲を限定して扱います)。
演習1:自分の IP・ルート・MAC を読み取る
$ ip -4 addr show
$ ip route show
$ ip link show
出力から次の項目を読み取ってメモしてください。
- eth0 の IP アドレスと CIDR は?
- eth1 の IP アドレスと CIDR は?
- デフォルトゲートウェイの IP は?
- eth0 の MAC アドレスは? ベンダー(OUI)は?
演習2:NetworkManager の接続情報を確認
$ nmcli connection show
$ nmcli device status
$ nmcli connection show eth0 | grep -E "ipv4|autoconnect" | head
eth0 の ipv4.method が auto(DHCP)か manual(固定)かを確認します。autoconnect が「はい」(=yes)なら、ブート時に自動で接続されます。
演習3:開いているポートを確認
$ ss -tuln
$ ss -tan | head
$ sudo ss -tulnp # プロセス名も見たい場合
「sshd が listen しているポートは?」「いま ESTABLISHED の接続はいくつあるか?」「sudo を付けるとどんな情報が増えるか?」を観察してみます。
演習4:linuc-ubuntu に疎通確認
$ ping -c 3 192.168.1.133 # External 経由
$ ping -c 3 10.0.10.133 # Internal 経由
$ ssh -o BatchMode=yes -o ConnectTimeout=5 developer@10.0.10.133 hostname
External と Internal の両経路で疎通することを確認します。SSH は鍵未配布のため「Permission denied」で返るのが期待される結果。これは「TCP 22 まで届いているが認証で止まっている」状態で、ネットワーク的には正常です。
理解度チェック(○×形式)
- TCP/IP は 5 層モデルである(◯ / ✕)
- サブネットマスク
255.255.255.0は CIDR 表記で/24に相当する(◯ / ✕) - DNS は通常 UDP のポート 53 を使う(◯ / ✕)
ip addr add 192.168.1.250/24 dev eth0で追加した IP は、再起動後も維持される(◯ / ✕)ss -tulnはリスニング状態の TCP/UDP ポートを表示する(◯ / ✕)
解答と解説
- ✕。TCP/IP は 4 層(リンク/インターネット/トランスポート/アプリケーション)。5 や 7 と混同しないように。7 層は OSI モデル。
- ◯。
255.255.255.0は 上位 24 bit が 1 =/24。/24 は 256 アドレスのうち実用 254 ホスト。 - ◯。DNS は通常 UDP 53。ゾーン転送など長いペイロードでは TCP 53 も使う(試験では「両方」と覚えてもよい)。
- ✕。
ip addr addは一時的。再起動で消える。永続化にはnmcli connection modifyまたは/etc/netplan/*.yaml。これがヒヤリハットの典型例。 - ◯。
-tTCP、-uUDP、-llisten、-n数値表示。プロセス情報を見るなら-pも付けて sudo で実行。
次回予告
第4回は ネットワークトラブルシューティングと DNS。ping traceroute mtr dig host nslookup を使って、レイヤー別の障害切り分けと DNS クライアント設定(/etc/resolv.conf /etc/hosts /etc/nsswitch.conf)を学びます。今回読み取った ip route の知識が、経路追跡のときに再登場します。
参照リソース(自分で調べる癖をつける)
man ipman ip-addressman ip-route──ipコマンドの全機能man ss── ソケット統計の詳細man nmcliman nmcli-examples── NetworkManager の CLIman netplan── Ubuntu のネットワーク設定/etc/services── ポート↔サービス名のマッピング- RFC1918(プライベートアドレス)/ RFC791(IPv4)
- LinuC 公式範囲:
https://linuc.org/linuc1/range/102.html主題 1.07.1 / 1.07.2
LinuC 102 試験対策シリーズ 全12回
- 第1回:シェル環境のカスタマイズ:環境変数・エイリアス・履歴・ロケール
- 第2回:Bashスクリプト入門:if / for / 関数で書く現場の自動化スクリプト
- 第3回:ネットワーク基礎:TCP/IP・ip コマンド・NetworkManager(本記事)
- 第4回:ネットワークトラブルシューティングとDNSクライアント設定
- 第5回:ユーザ・グループ管理と sudo 設定の実務(useradd, visudo)
- 第6回:ジョブスケジューリングと時刻管理:cron, systemd timer, chrony, NTP
- 第7回:ログ管理実践:journalctl と rsyslog の使い分け
- 第8回:メール配送エージェント(MTA)の基本:postfix の動作確認
- 第9回:ファイアウォール(firewalld / ufw)と SELinux 入門
- 第10回:暗号化によるデータ保護:SSH鍵認証・GnuPG・OpenSSL
- 第11回:クラウドセキュリティの基礎:IAM・公開鍵管理・SSH踏み台構成
- 第12回:オープンソースの文化:主要ライセンス(GPL/MIT/Apache)とコミュニティ
