ここに書いてることをヒントに頑張る↓
テストサーバ用にDnsmasqで内向きのDNSサーバを構築する | oiio.jp
けど上のブログだと/etc/resolv.conf が書き換わる理由についてはわからなかったみたい。だからほかのも参考にする必要があるってこと。
・注意点と必須設定
1.53番ポートが競合する。
dnsmasqとubuntuデフォルトのsystemd-resolvedとnetwork-managerが競合するみたい。だからport53をリッスンしている systemd-resolved さんををやっつける。これは簡単。
: ポートの競合お調べコマンド
ip add
ss
lsof -i:ポート番号
systemctl stop systemd-resolved
systemctl disable systemd-resolved
2. /etc/resolv.conf がNetworkManager側と競合して上書かれたりする。
なので、NetoworkManagerさんのDNS機能を止めるか、dnsmasqと連携できるように設定する。このブログはnetworkmanagerさんの設定っぽい。やらないと、上位DNSへのフォワーディングとかがうまくできない。
Ubuntu18.04のDNSリゾルバをsystemd-resolvedからdnsmasqに変更する – ぶていのログでぶログ (buty4649.net)
※自分はsystemdさんとdnsmasqさんとを連携できませんでした
・dnsmasqは/etc/resolv.conf参照する。これを別のファイルとかに変更する方法は今わからない。
・でもこれに直接書いても起動の度に書き換え、もしくは新たに作成してくる。つまり NetworkManager さん側の設定をいじってあげる必要がある。
: 設定場所
/etc/NetworkManager/NetworkManager.conf
[main]
dns=dnsmasq (うまくいかなかった)
###もしくは...
[main]
dns=no
自分では「dns=dnsmasq」とする場合でうまくできなかった。やってみるとnetworkmanager(sysytemd)側とdnsmasq側でデーモンを奪い合って、それぞれで /etc/resolv.conf を書き換えようとしてサービスがおかしくなった。(起動してるけど同時刻で2回起動しているようなログ)
たぶん、/etc/systemd/resolved.confがsystemd側で、 dnsmasqと連携する用の設定を記述するのかもしれないけど、別に連携しなくてもいいやってなっちゃった。
たぶん書き換わらないようにするために書き2つの作業が必要だと思われる。たぶん。わからんない
- /etc/NetworkManager/NetworkManager.conf でDNSを止める
- systemd-resolveのデーモン止める
あとはなんか/etc/dnsmasq.confとかいじる。おわり
3.dnsmasq.conf必須設定
port=53
domain-needed
bogus-priv
strict-order
interface=eth0
no-dhcp-interface=eth0
: 出てきたファイルたち
- /etc/NetworkManager/NetworkManager.conf
- /etc/systemd/resolved.conf ※結局no編集
- /etc/resolv.conf
- /etc/dnsmasq.conf
他参考
UbuntuにdnsmasqをインストールしてDNSキャッシュサーバーとして運用 – 動かざることバグの如し (hatenablog.com)