dnsmasq.conf で内部 IP アドレスをブロックする

dnsmasq.conf で内部 IP アドレスをブロックする

conf ファイルで次のようにして WAN サイトをブロックできます。

address=/verystrangesite.com/127.0.0.1

したがって、ユーザーがゲスト LAN 上でそれほど面白くない何かを試みようとすると、ERR_CONNECTION_REFUSED が返されます。

残念ながら、これは内部サイト (ルーター、ゲートウェイ、ハードウェア、IP カメラ) では機能しません。少なくとも、IP のみでアクセスできる場合は機能しません (172.16.1.54 ではなく my-ip.com のようなもので機能するかどうかはわかりません)。私が試したのは次のようになります。

address=/172.16.1.2/127.0.0.1

それで、これを実現するための正しい構文を知っていますか?

よろしくお願いします

トビアス

答え1

これを実現するための正しい構文はありません。

dnsmasqはDNSサーバーに過ぎません。ではないすべてのネットワークトラフィックの真ん中にいて、DNSクエリに応答し、ドメイン名をIPアドレスに変換するだけです。dnsmasqの例ではブロックサイトでは、DNS クエリの結果を偽装するだけです (クライアントが DNS を使用している場合のみ)。

IPアドレスで直接ウェブサイトにアクセスしようとするクライアント使ってはいけませんそもそもDNSで解決することはできない。つまり、アドレスはすでに「事前解決」されている。したがって、いいえこのような接続に影響を与える可能性のある dnsmasq 構成。

代わりに、IPアドレスで任意のホストをブロックするには、ルーターのファイアウォール(Linux iptables/nft/ferm、BSD pf) 「接続が拒否されました」というエラー メッセージを生成するには、接続を「拒否」するファイアウォール ルールを追加します。

iptables -I FORWARD [...] -d 172.16.1.2 -p tcp -j REJECT --reject-with tcp-reset
iptables -I FORWARD [...] -d 172.16.1.2 ! -p tcp -j REJECT --reject-with icmp-port-unreachable

関連情報