[MINISFORUM] 最小構成のDebianで固定IPにする際の落とし穴:DNS設定の正しい手順 [MS-S1 MAX]
第一回目の設定手順ですが、ここは補足をしないとなりません。DNSの設定方法が不足していました。しれっとここに残しておきます。
dhcp を介さない場合に、そのままだと /etc/network/interfaces.d/ の dns-nameservers 設定が自動的に /etc/resolv.conf に反映されません。ひどい。
固定IP環境での DNS 設定手順
Debian/Ubuntu で静的IP設定を使用する場合、`/etc/network/interfaces.d/` に `dns-nameservers` を指定しても、`/etc/resolv.conf` に DNS サーバーが自動的に反映されない問題が発生します。
症状
$ cat /etc/resolv.conf
# Generated by dhcpcd
# /etc/resolv.conf.head can replace this line
# /etc/resolv.conf.tail can replace this line→ nameserver エントリが空
影響
DNS 解決ができない
`apt update` が失敗する(`deb.debian.org` などが解決できない)
ネットワーク接続はあるが、名前解決ができない
根本原因
静的IP環境で `/etc/resolv.conf` が空になる原因:
ifupdown の dns-nameservers 設定は、デフォルトで `systemd-resolved` または `resolvconf` に依存
Debian Trixie (13) では、最小構成で以下のパッケージがインストールされていない:
`resolvconf` パッケージ(ifupdown の DNS 管理)
`systemd-resolved`(systemd の DNS 管理)
dhcpcd は DHCP クライアント用で、静的IP設定では DNS を `/etc/resolv.conf` に書き込まない
結果:`/etc/resolv.conf` が空のまま生成される
解決策
オプション 1: resolvconf パッケージをインストール(推奨)
特徴:
静的IP設定の標準的な方法
`/etc/network/interfaces.d/` の `dns-nameservers` がそのまま使える
シンプルで管理しやすい
手順:
1. 一時的に DNS を手動設定
# /etc/resolv.conf を一時的に手動設定(apt が使えるようにする)
sudo tee /etc/resolv.conf > /dev/null <<EOF
nameserver 192.168.0.254
EOF2. resolvconf パッケージをインストール
sudo apt update
sudo apt install resolvconf3. ネットワークインターフェースを再起動
# インターフェース名は環境により異なる(ip a で確認)
sudo ifdown <interface-name>
sudo ifup <interface-name>
# 例:
sudo ifdown enp193s0 && ifup enp193s04. 確認
# /etc/resolv.conf が正しく生成されたか確認
cat /etc/resolv.conf
# 期待される出力:
# # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# nameserver 192.168.0.254
# DNS 解決をテスト
getent hosts deb.debian.org
# apt update をテスト
sudo apt updateオプション 2: systemd-resolved を使用(モダンな方法)
特徴:
systemd の標準機能
より高機能(mDNS、LLMNR サポート)
設定が複雑になる可能性がある
手順:
1. systemd-resolved をインストール・有効化
sudo apt update
sudo apt install systemd-resolved
sudo systemctl enable --now systemd-resolved2. /etc/resolv.conf をシンボリックリンクに変更
# 既存の /etc/resolv.conf をバックアップ
sudo mv /etc/resolv.conf /etc/resolv.conf.backup
# systemd-resolved のスタブリゾルバにリンク
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf3. ネットワーク設定を systemd-networkd に移行(オプション)
# /etc/systemd/network/10-static.network
[Match]
Name=enp193s0
[Network]
Address=192.168.0.13/24
Gateway=192.168.0.254
DNS=192.168.0.2544. 確認
# systemd-resolved の状態確認
systemctl status systemd-resolved
resolvectl status
# DNS 解決テスト
getent hosts deb.debian.orgオプション 3: 手動管理(非推奨)
特徴:
最もシンプルだが、再起動で消える可能性がある
一時的な対処療法
手順:
# /etc/resolv.conf を直接編集
sudo tee /etc/resolv.conf > /dev/null <<EOF
nameserver 192.168.0.254
nameserver 8.8.8.8
search your-domain.com
EOF
# 変更不可にする(オプション)
sudo chattr +i /etc/resolv.conf問題点:
システムやパッケージの更新で上書きされる可能性がある
自動化に向かない
いいなと思ったら応援しよう!
あなたの支えが、私の心の糧になります。
note の収益はガジェットのレビューや、自費出版に使わせていただきます。