本記事には広告(アフィリエイトリンク)が含まれます。

ネットワーク基礎 LinuC102 第3回

広告

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回 オープンソースの文化

この記事で身につくこと

  1. TCP/IP の4層モデルと主要プロトコル(IP/TCP/UDP/ICMP)の役割を説明できる
  2. IPv4 アドレス・サブネットマスク・CIDR 表記の関係を理解する
  3. ポート番号と Well-Known ポート(22/53/80/443)を区別できる
  4. ip addr / ip route / ip link で現在のネットワーク状態を読める
  5. 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サービス(ポート)
トランスポート層4TCP, UDPポート番号
インターネット層3IP(IPv4/IPv6), ICMPIP アドレス
リンク層(ネットワークインターフェース層)1〜2(物理/データリンク)Ethernet, ARPMAC アドレス

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        ↑ポート     ↑実データ
   リンク層      ネット層     トランス層    アプリ層
TCP/IP 4階層モデルを示した図。上からアプリケーション層(HTTP・SSH・DNS、ユーザーが使うサービスを提供)、トランスポート層(TCP・UDP、識別子はポート番号)、インターネット層(IP・ICMP、識別子はIPアドレス)、リンク層(Ethernet・ARP、識別子はMACアドレス)の4段で構成される。右側の下向き矢印は、送信時にデータがアプリ層からリンク層へ各層のヘッダを付加されていくカプセル化を表している。
図 03-01. TCP/IP 4階層モデル

受信側では逆順にヘッダを外していき、最終的にアプリにデータが届きます。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/24254(ネットワーク・ブロードキャストを除く)192.168.1.0/24
255.255.0.0/1665534172.16.0.0/16
255.0.0.0/81677721410.0.0.0/8
255.255.255.252/3022点間リンク用

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.25510.0.0.0/8大規模組織。今回の Internal NIC(10.0.10.0/24)
172.16.0.0 〜 172.31.255.255172.16.0.0/12中規模組織。Docker のデフォルトもここ
192.168.0.0 〜 192.168.255.255192.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インターネット制御メッセージ、エラー通知、疎通確認pingtraceroute

ざっくりした覚え方:信頼が必要なら TCP、速度が必要なら UDP、生存確認なら ICMP。

4.2 ポート番号の3区分

  • Well-Known(0〜1023):予約済み。サーバープロセスが listen するときに使う。root 権限がないと bind できない
  • Registered(1024〜49151):登録済み。各種アプリ用
  • Dynamic/Ephemeral(49152〜65535):クライアントが一時的に使う
IPアドレスとポート番号の関係を建物と部屋にたとえた図。サーバ(IPアドレス 10.0.10.133)を1つの建物に見立て、その中にポート 22(SSH)、ポート 25(SMTP)、ポート 53(DNS)、ポート 80(HTTP)という部屋が並んでいる。通信相手は「IPアドレスでまず建物に届き、ポート番号でその中の部屋(サービス)にたどり着く」ことを示し、IPアドレスとポート番号のセットで通信相手が一意に定まることを表している。
図 03-02. IPアドレスとポート番号 ── 建物の住所と部屋番号

4.3 覚えておきたい Well-Known ポート

ポートプロトコルサービス
22TCPSSH
25TCPSMTP(メール送信)
53UDP(一部 TCP)DNS
80TCPHTTP
123UDPNTP(時刻同期)
443TCPHTTPS

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:5dMicrosoft 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/del ip route add/del再起動で消える
  • 永続化:nmcli connection modify(RHEL 系)
  • Ubuntu は netplan(/etc/netplan/*.yaml
  • ifconfig route netstat は非推奨ip ss 系に置き換わった)

第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           [::]:*   

オプションの意味:

  • -t TCP のみ
  • -u UDP も含める
  • -l listen 状態のみ
  • -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 addr ip route hostnamectl nmcli で「いまの構成」を読み取る。「与えられた 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 addr ip 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.methodauto(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 まで届いているが認証で止まっている」状態で、ネットワーク的には正常です。

理解度チェック(○×形式)

  1. TCP/IP は 5 層モデルである(◯ / ✕)
  2. サブネットマスク 255.255.255.0 は CIDR 表記で /24 に相当する(◯ / ✕)
  3. DNS は通常 UDP のポート 53 を使う(◯ / ✕)
  4. ip addr add 192.168.1.250/24 dev eth0 で追加した IP は、再起動後も維持される(◯ / ✕)
  5. ss -tuln はリスニング状態の TCP/UDP ポートを表示する(◯ / ✕)

解答と解説

  1. 。TCP/IP は 4 層(リンク/インターネット/トランスポート/アプリケーション)。5 や 7 と混同しないように。7 層は OSI モデル。
  2. 255.255.255.0 は 上位 24 bit が 1 = /24。/24 は 256 アドレスのうち実用 254 ホスト。
  3. 。DNS は通常 UDP 53。ゾーン転送など長いペイロードでは TCP 53 も使う(試験では「両方」と覚えてもよい)。
  4. ip addr add は一時的。再起動で消える。永続化には nmcli connection modify または /etc/netplan/*.yaml。これがヒヤリハットの典型例。
  5. -t TCP、-u UDP、-l listen、-n 数値表示。プロセス情報を見るなら -p も付けて sudo で実行。

次回予告

第4回は ネットワークトラブルシューティングと DNSping traceroute mtr dig host nslookup を使って、レイヤー別の障害切り分けと DNS クライアント設定(/etc/resolv.conf /etc/hosts /etc/nsswitch.conf)を学びます。今回読み取った ip route の知識が、経路追跡のときに再登場します。

参照リソース(自分で調べる癖をつける)

  • man ip man ip-address man ip-route ── ip コマンドの全機能
  • man ss ── ソケット統計の詳細
  • man nmcli man nmcli-examples ── NetworkManager の CLI
  • man netplan ── Ubuntu のネットワーク設定
  • /etc/services ── ポート↔サービス名のマッピング
  • RFC1918(プライベートアドレス)/ RFC791(IPv4)
  • LinuC 公式範囲:https://linuc.org/linuc1/range/102.html 主題 1.07.1 / 1.07.2

LinuC 102 試験対策シリーズ 全12回

広告
Linux
スポンサーリンク