私はアクセスしたくないドメインをブロックするために/ etc / hostsを使用していますが、これはほとんどのドメインで機能します。ただし、テレグラムウェブチャット(web.telegram.org)では動作しないようです。
私のファイルには次の行があります。
0.0.0.0 web.telegram.org
0.0.0.0 www.telegram.org
0.0.0.0 telegram.org
ただし、まだWebサイトにアクセスしてWebアプリのフル機能を使用できます。私は何が間違っていましたか?
答え1
/etc/hostsを編集しているので、rootアクセス権があります。最良かつ最もエレガントな方法は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を実行しています。ファイアウォールはCentOS 7の新しいデフォルトのフロントエンドですが、iptables-servicesをインストールして使用しましたが、これは完全にサポートされています。)
答え2
しかし、ホストを0.0.0.0の代わりに127.0.0.1に設定しました。
とにかく、もう一つの秘密は、問題のIP番号への特別なパスを追加することです。
# route add -host 10.11.12.13 dev lo
再起動時にこれらのルールが再生成されるようにするには、それをrc.local(または同等のファイル)に追加する必要があります。
私はそれを使用して人々が私のウェブサイト会社のパスワードを見つけようとするのを防ぎます。
答え3
メッセージを受信するためにWebソケットを使用してください。
次へ追加
0.0.0.0 zws2.web.telegram.org
PS:Chrome devtoolsでウェブソケットをデバッグする方法を確認してください。