LPIC-1 ネットワークの基礎(主題 109)まとめノート

LPIC-1 102試験の主題109「ネットワークの基礎」の学習内容を整理するために自分用にまとめたノートです。

出題範囲と重み(括弧内)は LPI 公式の試験範囲(LPIC-1 Objectives V5.0 日本語版) から引用。

  • 109.1 インターネットプロトコルの基礎(4)
  • 109.2 永続的なネットワーク設定(4)
  • 109.3 基本的なネットワークの問題解決(4)
  • 109.4 クライアント側の DNS 設定(2)

登場する単語マップ

コマンドと設定ファイルが入り乱れるため、「どの作業で何を触るのか」を軸にマップしました。メモと疑問点を添えています。

109.1 インターネットプロトコルの基礎

サブネットマスクから IP レンジを求める方法

あるアドレスのブロードキャストアドレスと、使えるアドレスの数は暗算で出せるようにしておく。必須級。 マスクと IP を 2 進数に直して AND するような正攻法でなくても、どちらも暗算で求められる。

使えるアドレスの数

使えるアドレスの数は 2^(32 - プレフィックス長) - 2。

  • /26 → 2^6 - 2 = 62
  • /27 → 2^5 - 2 = 30
  • /28 → 2^4 - 2 = 14

/26〜/28 の使えるアドレス数は暗記するか、見慣れておくべき。

ブロードキャストアドレス

注: ブロードキャストアドレスは、同じネットワークに接続されたすべての機器へ、一度に同じデータを一斉送信するためのアドレス。

ブロードキャストアドレスの求め方を 10.0.0.70/27 を例に見ていく。

10.0.0.70/27

プレフィックス長が決まると、アドレス空間は 2^(32 - プレフィックス長) 個ずつの「ブロック」に等分される。/27 なら 32 個ずつなので、最後のオクテットは 0、32、64、96 … で区切られる。 ブロックの最初がネットワークアドレス、最後がブロードキャストアドレス。だから「自分のアドレスがどのブロックに入っているか」が分かれば、そのブロックの端が答えになる。

/27 では最後のオクテットが 32 個ずつの 8 ブロックに分かれ、70 は 64〜95 のブロックに入る。64 がネットワークアドレス、95 がブロードキャストアドレス

手順は次のとおり。

  1. ブロックの大きさを出す

    2^(32 - 27) = 2^5 = 32。最後のオクテットは 32 の倍数で区切られる

  2. 70 を超える最初の 32 の倍数を探す

    32、64、96、128 … と数えて、70 の次は 96。10.0.0.96 が次のブロックの先頭

  3. その 1 つ手前がブロードキャストアドレス

    10.0.0.95 が答え。ついでに 70 が入るブロックの先頭 10.0.0.64 がネットワークアドレス

ブロックの先頭(64)と末尾(95)はホストに割り当てられないので、使えるのは 10.0.0.65〜10.0.0.94 の 30 個。これは上の式 2^5 - 2 = 30 と一致する。

プライベートアドレスの覚え方

プライベートかどうかは暗記ゲー。

クラス範囲固定される部分
A10.0.0.0 〜 10.255.255.255第1オクテットが 10
B172.16.0.0 〜 172.31.255.255第1が 172、第2が 16〜31
C192.168.0.0 〜 192.168.255.255第1と第2が 192.168

第1オクテットが 10 ならまず A クラス確定。

C クラスも 192.168 で確定。

残る B はやや覚えにくいが、172 固定で 16〜31。

192.168 は「いくにいろは」で覚えれば間違いない。

172.16〜31 は「いなに いろ さい🦏」とでも覚えておく。

IPv6 アドレスの 0 の省略

ダメパターンを逆張りで覚えておけば余裕。

1.各ブロックの先頭の 0 は省ける。0db8 → db8、0000 → 0

2.0 だけのブロックが連続する箇所は :: にまとめられる。ただし 1 回だけ

2001:0db8:0000:0000:0000:0000:0000:0001
  ↓ 1. 各ブロックの先頭の 0 を省く
2001:db8:0:0:0:0:0:1
  ↓ 2. 連続する 0 のブロックを :: にまとめる
2001:db8::1

だめな IPv6 の例

だめな理由表記補足
:: が 2 回2001:db8::1::1
コロンが 3 つ連続2001:db8:::1
16 進数にない値2001:db8::g1g を使ってしまっている。使えるのは 0〜9 と a〜f だけ
ブロックが足りない2001:db8:1:2:3:4:5
1 ブロックが 5 桁2001:db8::1234516 進数 4 桁まで
. で区切っている2001.db8.0.0.0.0.0.1IPv6 の区切りは :。. は IPv4

覚えておくポート番号

ポートサービス備考
20 / 21FTP20 がデータ、21 が制御
22SSH
23Telnet
25SMTPメールの送信・転送
53DNSUDP と TCP の両方
80HTTP
110POP3
143IMAP
443HTTPS

21、23、143 あたりは忘れがち。

ウェルノウンポート

ウェルノウンポートの最小は 0、最大は 1023。

範囲名前権限
0〜1023ウェルノウンポート待ち受けには root 権限が必要
1024〜49151登録済みポート一般ユーザーでも待ち受けできる
49152〜65535動的・プライベートポート一般ユーザーでも使える。クライアント側に OS が自動で割り当てる

109.2 永続的なネットワーク設定

nmcli の基本操作

  • NetworkManager → デスクトップ Linux で Wi-Fi やイーサネットのつなぎ先を管理しているデーモン。画面右上のネットワークアイコンから Wi-Fi を選んでつなぐとき、裏で動いているのがこれ

Ubuntu のトップバー右上にある Wi-Fi アイコン。ここから Wi-Fi を選んでつなぐとき裏で動いているのが NetworkManager

nmcli → NetworkManager をコマンドラインから操作する窓口

物理的な口が device(eth0、wlan0)、どこにどうつなぐかの設定が connection(「自宅 Wi-Fi」「Wired connection 1」)。状態を見るのは device、設定を書くのは connection。

nmcli device status            # デバイスの一覧と状態
nmcli connection show          # 接続プロファイルの一覧

実際に打ってみた。

$ nmcli device status
DEVICE          TYPE      STATE                   CONNECTION
wlp9s0          wifi      connected               Buffalo-G-xxxx
lo              loopback  connected (externally)  lo
p2p-dev-wlp9s0  wifi-p2p  disconnected            --
enp10s0         ethernet  unavailable             --

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Buffalo-G-xxxx      a1f9d1c7-babe-42ee-98f9-6b7afab6102c  wifi      wlp9s0
lo                  82d27057-10ab-4815-92d2-84e071468738  loopback  lo
Buffalo-A-xxxx      a33e4b79-ee5f-48c7-ad89-2c68f71d5bd2  wifi      --
Wired connection 1  b6b213cf-df25-3d8e-8909-d4b0ab079570  ethernet  --

問題集でも見た DEVICE TYPE STATE CONNECTION と、wifi、ethernet が確認できた。

109.3 基本的なネットワークの問題解決

ip コマンドでできること

オブジェクトできること置き換え前
ip addrIP アドレスの表示・追加・削除ifconfig
ip linkインターフェースの up / down、MAC アドレスの表示ifconfig
ip routeルーティングテーブルの表示・変更route
ip addr show                              # アドレスの一覧
ip link set eth0 up                       # インターフェースを有効化
ip route show                             # ルーティングテーブル

addr、link、route の 3 つは必須級。必ず覚えておく。

TTL の減算

TTL(Time To Live)は IP パケットの「あと何台ルーターを通れるか」。ルーターを 1 つ通るたびに 1 減り、0 にしたルーターがパケットを捨てて、送信元に ICMP の Time Exceeded を返す。ループしたパケットが永遠に回り続けないための仕組み。

traceroute はこれを利用する。TTL を 1、2、3 … と増やしながら送り、Time Exceeded を返してきたルーターを順に並べると経路になる。

109.4 クライアント側の DNS 設定

名前解決はどの順で行われるか

DNS 関連ファイルの /etc/nsswitch.conf、/etc/hosts、/etc/resolv.conf は、どれがどれだかややこしい。

  1. アプリケーションgetaddrinfo() などで名前解決を依頼する
  2. /etc/nsswitch.confhosts 行で手段の順番を決める
  3. /etc/hostsfiles。手書きの対応表を先に見る
  4. /etc/resolv.confdns。nameserver に問い合わせる

順番を決めるのは /etc/nsswitch.conf の hosts 行。

hosts: files dns
  • files → /etc/hosts
  • dns → /etc/resolv.conf に書いた DNS サーバー

この順なら /etc/hosts に書いた名前は DNS に問い合わせずに解決される。逆にすれば DNS が優先になる。

自分の Ubuntu で打ってみると、教科書どおりの files dns ではなかった。

$ grep ^hosts /etc/nsswitch.conf
hosts:          files mdns4_minimal [NOTFOUND=return] dns

mdns4_minimal というなんじゃこりゃな設定がある。調べてみると .local で終わる名前を mDNS(Avahi)で引くための設定のようで、[NOTFOUND=return] は「.local の名前が見つからなければ DNS に行かずに終わる」の意味みたい。.local 以外の名前はそのまま素通りして dns へ。

/etc/nsswitch.conf、/etc/hosts、/etc/resolv.conf はそれぞれ cat して見ておけ。

resolv.conf の設定項目

右に書けるものはキーワードごとに決まっている。

  • nameserver → IP アドレスのみ
  • search → ドメイン名(複数可)
  • domain → ドメイン名(1 つ)
nameserver 192.168.1.1
search example.com

host と dig の違い

どちらも DNS サーバーに直接問い合わせる。イメージは host で浅く、dig で詳細に。

コマンド出力使いどころ
host簡潔正引き・逆引きをさっと確認する
dig詳細DNS の応答そのものを調べる。レコード種別やサーバーを指定できる
host example.com                   # 正引き
dig example.com                    # A レコード。ANSWER SECTION に答え
dig @8.8.8.8 example.com MX        # サーバーとレコード種別を指定