iptables: すぐに拒否されると、特定のドメインへのブラウザアクセスをブロックします。

iptables: すぐに拒否されると、特定のドメインへのブラウザアクセスをブロックします。

特定のドメイン「megafonpro.ru」とすべてのサブドメインがブラウザを介してアクセスされないようにブロックする必要があります。

私が書いたルールは次のとおりです。

sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string "megafonpro.ru" --algo kmp --to 65535 -j REJECT

動作しますが、完璧ではありません。一致するURL(例: "wap.megafonpro.ru")を入力しようとすると、Firefoxは長い間(約30秒)接続を試み、「接続のリセット」を報告します。すぐに拒否するにはどうすればよいですか?


修正する:/etc/hosts不要なドメインを次のように追加できることがわかりました。

127.0.0.1   megafonpro.ru
127.0.0.1   m.megafonpro.ru
127.0.0.1   wap.megafonpro.ru

残念ながら、ワイルドカードsumdomainは使用できません(関連質問:https://serverfault.com/questions/118378/in-my-etc-hosts-file-on-linux-osx-how-do-i-do-a-wildcard-subdomain)。これでブラウザはすぐに拒否されます。

ところで、とにかくiptablesでどのように実装するのか気になりますね。

答え1

この行を/ etc / hostsに入れると、本質的にIPアドレスが127.0.0.1であることをこの名前に伝えます(Webサーバーがlocalhostで実行されている場合は表示されます)。

iptablesで同じことをするには、ターゲットNATを使用する必要があります(PREROUTING部分で行う必要があると思います)。 /etc/hostsに置くよりも利点は、パケットルーティングにも機能することです(同じホストで発生するパケットだけでなく)。

関連情報