コース一覧
LinuC レベル1 102試験対策(LPIC-1対応)
名前解決の設定

LinuC レベル1 102試験対策(LPIC-1対応)

LinuC レベル1/LPIC-1の102範囲を、シェル、ユーザーとセキュリティ、ネットワーク、システム管理の実機演習と章末問題で固めます。Linuxを安全に運用するための知識とコマンド操作を体系的に身につける25レッスンのコースです。

1
102 シェルとスクリプト
01. シェル環境18分
02. testと条件式18分
03. スクリプトの制御18分
04. cronとat15分
05. systemdタイマー18分
06. 過去問 シェル15分
2
102 ユーザーとセキュリティ
01. passwdとshadow18分
02. ユーザー管理コマンド18分
03. suとsudo18分
04. 特殊パーミッション18分
05. ホストのセキュリティ18分
06. SSHとGPG18分
07. 過去問 ユーザーとセキュリティ15分
3
102 ネットワーク
01. TCP/IPとウェルノウンポート18分
02. アドレス設定18分
03. ルーティング18分
04. 名前解決の設定18分
05. 疎通トラブルシュート18分
06. 過去問 ネットワーク15分
4
102 システム管理
01. 時刻とNTP15分
02. ロケールと文字コード18分
03. ログ管理18分
04. サービス管理の試験形式18分
05. メールと印刷のきほん15分
06. 過去問 システム管理15分

名前解決の設定

「hosts が先」は既定値がそうなっているだけで、順番を決めているのは別のファイルです。そこを押さえていないと、この範囲は勘で答えることになります。

/etc/hosts は アドレス、FQDN、別名 の順

プレーンテキスト

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
192.168.10.20   web01.example.internal web01

1行1エントリで、2列目に FQDN、3列目以降に短い別名を書くのが慣習です。同じ名前を複数行に書くと、最初に一致した行が使われます。DNS サーバーを立てずに済むので小規模な検証環境では手軽ですが、機械ごとに配るため台数が増えると破綻します。

/etc/resolv.conf の nameserver は3つまで

指定意味
nameserver <IP>問い合わせ先の DNS サーバー。1行に1つ、最大3つまで有効
search <ドメイン> ...短い名前に補完するドメイン。空白区切りで複数書ける
domain <ドメイン>自ホストのドメイン。search を1つ書いたのとほぼ同じ
options timeout:n応答待ちの秒数。attempts:n は再試行の回数
options ndots:nドットがこの数未満の名前に search を適用する。rotate は順番に使い分ける

nameserver は上から順に試され、応答が無いときに次へ移ります。負荷分散ではなく冗長化のための順番で、4つめ以降を書いても無視されます。search と domain は両方書くと後に書いたほうが勝つので、通常は search だけを使います。search example.internal があれば、web01 と打つだけで web01.example.internal として問い合わせてくれます。

優先順位を決めているのは nsswitch.conf

プレーンテキスト

hosts:          files dns

/etc/nsswitch.conf は、どのデータベースをどの順番で見るかを決めるファイルです。名前解決に関わるのは hosts の行で、左から順に試されます。files が /etc/hosts、dns が /etc/resolv.conf に書かれた DNS サーバーです。

この並びを入れ替えて dns files と書けば DNS が先になります。つまり hosts が優先というのは既定値がそうなっているだけで、規則を決めているのはこのファイルです。ここが試験の狙いどころです。

getent hosts <名前> はこの規則に実際に従って引くので、切り分けに使えます。getent が答えを返すのに dig が返さないなら、それは /etc/hosts で解決されている証拠です。

dig と host は /etc/hosts を見ない

DNS サーバーへ直接問い合わせるコマンドは host と dig と nslookup の3つです。host は出力が最も短く、dig は詳しくて実務と試験の標準、nslookup は古く対話モードを持ちます。この学習環境には入っていないので書式だけ押さえます。

ターミナル

host www.example.com 192.168.10.1      # サーバーは末尾に空白区切りで指定
dig @192.168.10.1 www.example.com      # サーバーは @ で指定
dig www.example.com MX                 # レコード種別を指定
dig +short www.example.com             # 答えだけを短く表示
dig -x 192.168.10.20                   # 逆引き

サーバーの指定が dig は @、host は空白区切りという違いが、入れ替えの誤答として出ます。またこれらは /etc/nsswitch.conf を参照しないので、/etc/hosts に書いた名前は dig では引けません。この違いも頻出です。

systemd-resolved 環境では resolv.conf を手書きしても消える

最近のディストリビューションでは systemd-resolved が名前解決を仲介することがあります。このとき /etc/resolv.conf は /run/systemd/resolve/stub-resolv.conf へのシンボリックリンクで、中身は nameserver 127.0.0.53 の1行だけです。127.0.0.53 は systemd-resolved 自身が待ち受けるアドレスで、上流サーバーは別に管理されています。手で書き換えても再起動やネットワーク再接続で上書きされます。状態は resolvectl status、上流の変更は /etc/systemd/resolved.conf の DNS= です。

ヒント

/etc/hosts の1行は「アドレス 正式名 別名」の順です。1行に3つの要素を空白で並べます

ファイルへの書き込みは echo と >> で足せます。printf を使うと1回で複数行書けます

echo '192.168.50.10 linuc-lab.example.local linuc-lab' >> /etc/hosts のあと、echo 'nameserver 192.168.50.1' > /etc/resolv.conf と echo 'search example.local' >> /etc/resolv.conf です

  • 1. cat /etc/hosts と cat /etc/resolv.conf で、いま空であることを確かめる
  • 2. /etc/hosts に 192.168.50.10 linuc-lab.example.local linuc-lab の行を書く
  • 3. getent hosts linuc-lab で名前が引けることを確かめる
  • 4. /etc/resolv.conf に nameserver 192.168.50.1 の行を書く
  • 5. /etc/resolv.conf に search example.local の行を追記する
  • 6. grep '^hosts' /etc/nsswitch.conf で解決順の設定を確かめる

Linux は使うときに起動します(初回は約102MB通信します)

5 項目で採点します