Dnsmasq¶
CentOS 7向け
- Table of contents
- Dnsmasq
家内無線LANルータとして Buffalo WCR-1166DS を使っているのですが、家にいるときはスマホからashidan.myhome.cxを表示することができませんでした。
これは、その問題をDnsmasqでなんとかしてみようとした記録です。
CentOS7には標準でDnsmasqがインストールされていたので、UnboundはやめてDnsmasqでローカルなホスト名を解決できるようにしてみました。
下記手順の前提として、dnsmasqを動かすCentOS7 PCは,、家内無線LANルータ上のDHCPサーバから 固定の IPv4アドレスを割り振られているクライアントである必要があります。
参考にさせていただいたサイト¶
- Dnsmasq : インストール
- CentOS7でサービスの管理方法が変わった!
- https://wiki.libvirt.org/page/Libvirtd_and_dnsmasq ←53番のポートが既に使用されている、と怒られたときの対策です。
/etc/dnsmasq.confに関して必要な設定¶
以下に関して、行頭の#を外して有効化します。
domain-needed bogus-priv bind-interfaces expand-hosts
listen-addressに関して、行頭の#を外して、かつ127.0.0.1とdnsmasqを動かすPC自身のIPアドレスを書きます。192.168.12.34は単なる例です。
bind-interfaceおよびlisten-addressを指定することで、libvirtdが作るvirbr0で53番ポートを開けようとしてdnsmasqの起動に失敗するのを防ぐ作戦です。
listen-address=127.0.0.1,192.168.12.34
resolv-fileに関して、行頭の#を外して、以下のように書きます。
resolv-file=/etc/resolv.dnsmasq.conf
DHCPクライアントが/etc/resolv.confを書き換えてしまうので、「知らないホストは/etc/resolv.dnsmasq.confに書いた家内無線LANルータに問い合わせる」ようにする作戦です。
/etc/resolv.dnsmasq.conf を作る¶
/etc/resolv.dnsmasq.confを作成し、家内無線LANルータのアドレスを書いてください。以下は例です。
パーミッションは/etc/resolv.contと同じにしてください。
nameserver 192.168.12.1
firewallに穴を開ける設定をする¶
sudo firewall-cmd --add-service=dns --zone=public --permanent sudo firewall-cmd --reload
/etc/hostsにローカルPCのアドレスを列挙する¶
以下は例です。IPアドレスやホスト名は任意です。
192.168.12.34 ashidan.myhome.cx ashidan
試運転¶
sudo systemctl start dnsmasq sudo systemctl status -l dnsmasq
status -lの結果にエラーが出ていなければとりあえずdnsmasq.confの設定は成功です。
そのあとのテスト¶
dnsmasqの動いているPCで、ping www.google.com してみて名前解決ができるか確かめてください。
成功したら、家内無線LANルータの設定にて DHCPサーバからDNSサーバのアドレスとして通知するアドレスを、「dnsmasqが動いているPCのアドレス」になおしてください。
最後に、スマホで無線LANに接続して、ブラウザから「dnsmasqの動いているPCのhostsに書いたホスト」および「google等のインターネット上のサイト」の両方にアクセス可能なことを試せば完了です。
仕上げ¶
dnsmasqを電源投入時に常時起動するserviceとして登録し、再起動してみます。
sudo systemctl enable dnsmasq sudo shutdown -r now
再起動後にも、スマホから「dnsmasqの動いているPCのhostsに書いたホスト」および「google等のインターネット上のサイト」にアクセスできることを確認できれば、すべて成功です。
あとはhostsに好きなだけローカルPCの名前を書いていけばOkです。
Count of this page : 266
Updated by mole lord about 2 years ago · 1 revisions