Project

General

Profile

Actions

Dnsmasq

CentOS 7向け

家内無線LANルータとして Buffalo WCR-1166DS を使っているのですが、家にいるときはスマホからashidan.myhome.cxを表示することができませんでした。
これは、その問題をDnsmasqでなんとかしてみようとした記録です。
CentOS7には標準でDnsmasqがインストールされていたので、UnboundはやめてDnsmasqでローカルなホスト名を解決できるようにしてみました。

下記手順の前提として、dnsmasqを動かすCentOS7 PCは,、家内無線LANルータ上のDHCPサーバから 固定の IPv4アドレスを割り振られているクライアントである必要があります。

参考にさせていただいたサイト

/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