
アクセスしたくないドメインをブロックするために /etc/hosts を使用していますが、ほとんどのドメインでは機能します。ただし、Telegram ウェブチャット (web.telegram.org) では機能していないようです。
私のファイルには次の行があります:
0.0.0.0 web.telegram.org
0.0.0.0 www.telegram.org
0.0.0.0 telegram.org
しかし、サイトにアクセスしてウェブ アプリの全機能を使用することはできます。何か間違っているのでしょうか?
答え1
/etc/hosts を編集しているので、ルート アクセス権があります。最善かつ最もエレガントな方法は、iptables を使用することです (つまり、ボックスから www.telegram.org に送信されるパケットをブロックします)。
コマンドラインで iptables コマンドを入力してテストできます。
# iptables -A OUTPUT -d www.telegram.org -j REJECT
次のようにルールを追加したことがわかります。
# iptables -S OUTPUT
-P OUTPUT ACCEPT
-A OUTPUT -d 149.154.167.120/32 -j REJECT --reject-with icmp-port-unreachable
そして、次のようにしてアクセスの試行をテストできます。
# wget web.telegram.org
--2017-04-26 14:38:01-- http://web.telegram.org/
Resolving web.telegram.org... 149.154.167.120, 2001:67c:4e8:fa60:3:0:811:140
Connecting to web.telegram.org|149.154.167.120|:80... failed: Connection refused.
Connecting to web.telegram.org|2001:67c:4e8:fa60:3:0:811:140|:80... failed: Network is unreachable.
使用している OS が不明なので、新しいバージョンの iptables がインストールされていない可能性があり、-S スイッチが不足している可能性があります。-L を使用できます。
# iptables -L OUTPUT
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere 149.154.167.120 reject-with icmp-port-unreachable
追加したルールを削除する場合は、上記のコマンドで -A を -D に置き換えるだけです。
iptables-save > /etc/sysconfig/iptables
注意: これらのルールを再起動後も永続的にしたい場合は、/etc/sysconfig/iptables に手動で追加する必要があります。
iptables は非常に複雑ですが、マニュアルページは非常に役立ちます。
(私のサーバーでは CentOS 6 と 7 を実行しています。firewalld は CentOS 7 の新しいデフォルトのフロントエンドですが、完全にサポートされている iptables-services をインストールして代わりに使用しています。)
答え2
ちなみに、ホストを 0.0.0.0 ではなく 127.0.0.1 に設定することになります...これが元々の問題かもしれません。
とにかく、もう 1 つのトリックは、問題のある IP 番号に特別なルートを追加することです。
# route add -host 10.11.12.13 dev lo
再起動時にこれらのルールが再作成されるように、これらを rc.local (または同等のもの) に追加する必要があります。
私はこれを使用して、自分の会社のウェブサイトのパスワードクラッキングを試みる人々をブロックしました。
答え3
メッセージを取得するためにWebSocketを使用しています
追加
0.0.0.0 zws2.web.telegram.org
PS: Chrome DevToolsでWebSocketをデバッグする方法を確認してください