OpenWrtで家庭内DNSの利用強要

2014年10月9日木曜日

ルーター

t f B! P L
OpenWrtではdnsmasqをDNSキャッシュとDHCPサーバとして利用しています。

このdnsmasqは、設定次第で独自の名前→IP変換をしてくれますので、例えば参照したくない広告を出すホストに対し、ダミーIPアドレスを設定して広告をブロックするといったことができます。しかし、家庭内LAN上のクライアントで、独自に、例えばgoogleのDNSの8.8.8.8を見る!なんて設定してしまうと、そちらを見に行ってしまい、折角ブロックしたはずの広告が表示されてしまいます。

ここでは、そういうクライアントが独自にDNSを設定していても、OpenWrt上のdnsmasqを見に行くようにする設定を実施します。

作業は簡単で、
  1. iptables-mod-nat-extraをインストール
  2. firewallの設定ファイルでOpenWrt上のdnsmasqを見に行くルールを登録
  3. firewallをリスタート
の3ステップです。まず、System→Softwareから、まずソフトウェアリストを更新します。それから、Filterにiptables-mod-nat-extraと入力して、インストールするソフトを検索し、インストールします。インストール後ですが、こんな画面です。


そうしたら、sshでログインし、 /etc/firewall.userに以下の2行を追加します。
iptables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
後は、以下のコマンドでfirewallを立ち上げ直すと完了です。
# /etc/init.d/firewall restart
/etc/firewall.userに記述したルールは、firewallの説明にあるように、自動的に読み込まれて実行されます。

追加した1行目は、このルータに届くtcpのうち、53番ポート(DNSのポート)宛のパケットを、宛先に関わらず、強制的にこのルータの53番ポート(dnsmasqが走ってるポート)にリダイレクトします。2行目は同様にudpをリダイレクトします。つまり、上述の例みたいに家庭内LANのクライアントが8.8.8.8などの外部のDNSを直接引こうとしていても、それを強制的にOpenWrt上のdnsmasqに転送してしまう、というわけです。

これで、dnsmasqで広告をブロックする準備が整いました(*´艸`*)

ラベル

AndroidTV (1) chromebook (2) DIY (4) docker (1) git (4) Ingress (4) llvm (3) MacBook (1) MVNO (1) narou (1) PS4 (2) QNAPNAS (9) SIMD (9) SmartBand (8) Ubuntu (9) VAIO (1) Windows (2) wsl (2) wsl2 (1) Xperia (20) トルネ (3) プログラム (26) ルーター (18) 音楽 (6) 家事 (2) 自炊 (2) 電子書籍 (2) 洋食 (4)

フォロワー

QooQ