2024年10月19日土曜日

Dnsmasqでデバイス毎にDNSサーバを設定してみた。

 DD-WRTを入れたルータでDNS広告ブロックスクリプトを動かしてると、スマートデバイスとかで不具合が出ることがあるのでDnsmasqで特定のデバイスだけ除外できるように設定してみた。TVerみたいに広告消したい場合はコツコツホワイトリストに入れていかないと行けないけど、スマートリモコンとかだと特にその必要もなさそうだし。

どうやって特定のデバイスだけDNS広告ブロックを無効にするか考えてみたんだけど、DNS広告ブロックはルータがDNSサーバとなっているので、デバイス側が直接外部のDNS(プロバイダから供給されてるのでも良いし、1.1.1.1とかでもよい)にアクセスしてしまえばよい。
まぁこの場合手動でIPアドレスを設定してDNSまで指定してやっても問題ないんだけどそもそもスマートデバイスは画面がなかったり、リモコンで設定するのも面倒。

ということでDnsmasqで特定のMACアドレスのデバイスにだけ個別に設定を送ってやろうと思う。

DnsmasqでDNSの設定をする場合はdhcp-optionを使うんだけども、tag機能を使うことによってtagを設定されている特定のデバイスだけにoptionを適応することができるっぽい。optionの6がDNSサーバの設定で、DHCPでIPを割り振る際にDNSサーバまで指定することができる。

dhcp-host=30:03:c8:01:02:03,set:noblock
dhcp-option=tag:noblock,6,1.1.1.2,8.8.8.8

まずは1行目で、MACアドレスに対してタグを設定する。タグの名前は何でも良いけど今回は「noblock」にした。複数のデバイスを指定したい場合はこの行を増やしてMACアドレスだけ変えれば良い。
そんでもって2行目で特定のタグにだけdhcp-optionを適応する。6はDNSサーバの設定のOption番号で、その後ろにカンマ区切りでDNSサーバーのIPアドレスを指定する(複数指定可能)今回はCloudflareのマルウェアブロックの1.1.1.2と念の為セカンダリにGoogle DNSの8.8.8.8を指定した。

DD-WRTの場合はServiceタブからDnsmasqの設定ができる。

とりあえずPCの有線LANと無線LANでテストしてみると、無線LANのMACアドレスにだけ別なDNSが設定された。これでMACアドレスが分かればDD-WRTの設定画面から自由にDNS広告ブロッカーを無効にしたりできるので便利。

応用すればFireTVStickにSmartDNS ProxyとかのDNS設定するときにも使えそう。

0 件のコメント:

コメントを投稿