オペレーティングシステム:Fedora 34
ブラウザ:DoHが有効なMozilla Firefox
コアのLinux設定(Webブラウザ拡張などではありません)を介してWebサイトをブロックしようとしています。問題は私が使用しているDoHの内部にあります。 DoHを無効にすると、すべてがコンソール内の設定と完全に機能します。
# vi /etc/hosts
0.0.0.0 www.facebook.com
iptablesを編集しようとしましたが、やはり動作しませんでした。
# iptables -A OUTPUT -p tcp -d www.facebook.com --dport 443 -j DROP
# service iptables save
# service iptables restart
# iptables -L
私の知る限り、システムレベルでWebアドレスにアクセスするのを防ぐことは不可能ですか?
答え1
iptables
できるホスト名でブロックman iptables
:
-s, --source address Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address.
これがうまくいかないのは、iptables
ローカルで設定されたリゾルバを使用してFacebookのIPアドレスを見つけるのに対し、Firefoxは他のDNSプロバイダからアドレスを取得するためです。 Facebookはクラウドを使用しているため、IPアドレスはその他DNSプロバイダーと地域の間に違いがあり、これは最終的にiptables
ソリューションが機能する可能性が低いことを意味します。
代わりに、Firefox のグループ ポリシーを使用して、次のウェブサイトをブロックできます。https://github.com/mozilla/policy-templates/blob/master/README.md#websitefilter https://github.com/mozilla/policy-templates/releases
たとえば、ここで次の答えを確認してください。https://support.mozilla.org/en-US/questions/1260799
答え2
IMO、入るほうがいい両方ネットワーク層とアプリケーション層。つまり、iptables
ネットワーク層の単純なルールを使用し、プロキシを使用して許可されているものと許可されていないものの複雑で詳細な制御を提供します。
プロキシ設定(例:イカそして、ポート80と443(Squidを除く)への直接アクセスをブロックします。
ゲートウェイ/ファイアウォールが適度に強力なLinuxボックスである場合、Squidは同じシステムで実行できます。 VMまたはコンテナでSquidを実行できますが、tcp_outgoing_address
Squidに専用のIPアドレスを割り当てますsquid.conf
。このIPアドレスは、このポート(OUTPUTチェーンまたはLANがプライベートアドレスを使用している場合はNATチェーン)の外部ホストにのみ接続できます。
それ以外の場合は、専用のLinuxベースのルーター(例:オープンWRTまたは類似)、年をとるCPUの性能が低く、RAMが不足しているモデルは私の役割を果たすことができないかもしれませんが、過去5年間で生産されたほとんどの最新モデルは十分に強力です。これは、過去20年間に生産されたほぼすべてのサーバークラスのコンピュータまたは再設計されたデスクトップに当てはまります。専用マシンで実行する必要がある場合は、Raspberry Piまたは同様のデバイスでも可能です。
SquidだけがWebサイトにアクセスできるように何かを設定しているため、Squid設定を使用して特定のホストを許可または拒否できます。オプションで他のプログラムと一緒に使用できます。イカガード
また、独自のキャッシュDNSリゾルバを実行してください(例:束縛されていない)とイカボックスがそれを使用していることを確認してください。厄介なもの/etc/resolv.conf
(奇妙なsystemd-resolved abominationを含む)を無効にしてください。静的構成またはDHCP経由でもDNSリゾルバーを使用してクライアントコンピューターを構成する必要があります。