私たちの学校にはサーバーがあります。traceroute
学校ネットワーク内のホストにコマンドを実行すると、そのホストにアクセスできます。例えば、
traceroute hostname.xxx.edu
traceroute to hostname.xxx.edu (xxx.xxx.xx.xx), 30 hops max, 40 byte packets
1 reserved-xxx-2.xxx.edu (xxx.xxx.xxx.x) 0.858 ms 0.924 ms 0.980 ms
2 hostname.xxx.edu (xxx.xxx.xx.xx) 0.446 ms !X 0.438 ms !X 0.423 ms !X
同様にping hostname.xxx.edu
正常に実行されます。
しかし試してみると、
traceroute to www.google.com (64.233.160.99), 30 hops max, 40 byte packets
1 reserved-xxx-2.xxx.edu (xxx.xxx.xxx.x) 34.605 ms 34.658 ms 34.711 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 *
だから試してみるとping www.google.com
期待通りに失敗します。
質問
私が知っているのは、学校ネットワークのファイアウォールが私のサーバーが外部の世界と通信するのをブロックしていることです。そうですか?
しかし、このようなコマンドを実行すると、curl www.google.com
完璧な出力が得られます。実際、私はこのサーバーでシェルスクリプトを使用してWebサイトから多くの情報を抽出しました。ファイアウォールが私のサーバーへの外部アクセスをブロックする場合、シェルスクリプトはどのように機能しますか?
答え1
はい、ファイアウォールが原因でTracerouteが成功しない可能性があります。障害の原因を理解するには、traceroute
マニュアルページを参照するのが最善です。
抜粋
このプログラムは小さなttl(Time to Live)でプローブパケットを開始し、ゲートウェイからICMP「タイムアウト」応答を受信してインターネットホストへのIPパケットの経路を追跡しようとします。
ttl 1でプローブを開始し、ICMP「ポート到達不能」(またはTCPリセット)が発生するまで1ずつインクリメントします.これは、「ホスト」に達するか最大値に達することを意味します(デフォルトは30ホップ)。 。
ttl設定(デフォルト)ごとに3つのプローブが送信され、各プローブのttl、ゲートウェイアドレス、および往復時間を示す行が印刷されます。リクエストに応じて住所に追加情報を追加できます。プローブ応答が別のゲートウェイから来る場合、各応答システムのアドレスが印刷されます。 5.0秒(デフォルト)以内に応答がない場合、検出器に「*」(アスタリスク)が印刷されます。
したがって、アスタリスクはタイムアウト(5.0秒以上)でパケットをルーティングするサーバーなので、デフォルトtraceroute
で印刷されます*
。
障害を引き起こすもう1つの原因は、traceroute
途中のサーバー/ルーターがICMP(またはping)パケットに応答しないように構成されている場合です。実際の宛先に送信されるすべてのパケットのTTL(Time To Live)を増やして各サーバーを誘導するTracerouteのトリックは、pingに応答しないと失敗します。
メモ:マニュアルページにもこれに関する警告がありますtraceroute
。
抜粋
現代のネットワーク環境では、ファイアウォールの広範な使用により、従来の経路追跡方法が必ずしも適用可能ではない。これらのファイアウォールは、「不可能」UDPポートだけでなくICMPエコーまでフィルタリングします。この問題を解決するために、いくつかの追加のパス追跡メソッド(tcpを含む)が実装されています。下記の利用可能なメソッドのリストをご覧ください。これらの方法は、ファイアウォールをバイパスするために特定のプロトコルと送信元/宛先ポートを使用しようとします(これは許可されたネットワークセッションタイプの開始と見なされます)。
したがって、構成方法に応じて、traceroute
ICMP、UDP、またはTCPパケットを使用して、AポイントからBポイントへのパケットルーティングを処理するさまざまなシステムで応答を誘導できます。
traceroute
マニュアルページをもう一度参照して、次の3つのオプションを確認してください。
-I, --icmp
Use ICMP ECHO for probes
-T, --tcp
Use TCP SYN for probes
-U, --udp
Use UDP to particular destination port for tracerouting (instead
of increasing the port per each probe). Default port is 53 (dns).
もちろんもっとあります。参考利用可能な方法のリスト完全なリストをチェックしてください。
カールはどうですか?
企業や大学などの境界ファイアウォールでよく見られるように、ターゲットポート80(HTTP)と443(HTTPS)へのトラフィックのみが許可されています。それは完全に可能ですICMP ECHO_REQUESTパケットは大学ファイアウォールによって破棄されます。これは、大学ネットワーク外のサーバーにアクセスし始めたときにアスタリスクが表示される理由を示しています。
パケットはポート80を通過するため、これを利用して特定のポートtraceroute
(この場合は80)でTCPを使用して必要なものを取得できます。
はい
$ sudo traceroute -T -p 80 www.google.com
traceroute to www.google.com (173.194.46.81), 30 hops max, 60 byte packets
1 byers.bubba.net (192.168.1.6) 3.265 ms 3.236 ms 3.213 ms
2 * * *
3 24.93.10.17 (24.93.10.17) 21.359 ms 35.414 ms 48.045 ms
4 rdc-72-230-153-79.wny.east.twcable.com (72.230.153.79) 48.064 ms 48.044 ms 54.523 ms
5 rdc-72-230-153-243.wny.east.twcable.com (72.230.153.243) 70.067 ms 70.013 ms 73.312 ms
6 be35.cr0.chi10.tbone.rr.com (107.14.19.104) 73.201 ms be45.cr0.chi10.tbone.rr.com (107.14.19.106) 62.289 ms be35.cr0.chi10.tbone.rr.com (107.14.19.104) 65.485 ms
7 ae0.pr1.chi10.tbone.rr.com (107.14.17.192) 62.056 ms 48.685 ms ae1.pr1.chi10.tbone.rr.com (107.14.17.194) 32.193 ms
8 * * *
9 209.85.254.130 (209.85.254.130) 42.624 ms 45.159 ms 42.777 ms
10 * * *
11 ord08s11-in-f17.1e100.net (173.194.46.81) 48.036 ms 42.543 ms 44.751 ms
答え2
私が知っているのは、学校ネットワークのファイアウォールが私のサーバーが外部の世界と通信するのをブロックしていることです。そうですか?
いいえ、ほとんどすべてのトラフィックをブロックしているようですが、少なくとも許可しますTCP port 80
。 Linuxではtraceroute
デフォルトで使用されているため、出力はこれらのトラフィックがファイアウォールによってブロックされているようです。UDP
ping
ICMP
ファイアウォールが私のサーバーへの外部アクセスをブロックする場合、シェルスクリプトはどのように機能しますか?
上記のように、ファイアウォールは少なくとも結果が得られている間(DNSが機能するように)curl www.gooogle.com
許可していると確信しています。以下を使用して簡単な確認でこれを主張できます。TCP port 80
UDP port 53
traceroute
TCP
traceroute -T -p 80 www.google.com
私の結果は次のとおりです。
$ sudo traceroute -T -p 80 www.google.com
[sudo] password for cuonglm:
traceroute to www.google.com (74.125.128.103), 30 hops max, 60 byte packets
1 172.16.50.253 (172.16.50.253) 0.133 ms 0.133 ms *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 XXX.XXX (Y.Y.Y.Y) 13.954 ms XXX.XXX (Y.Y.Y.Y) 14.198 ms X.X.X.X (123.29.10.110) 14.140 ms
9 unknown.telstraglobal.net (134.159.208.165) 85.353 ms 85.349 ms 85.338 ms
10 i-0-2-0-3.hkth-core01.bi.telstraglobal.net (202.84.153.234) 85.780 ms 85.765 ms 85.748 ms
11 i-0-0-0-3.hkth12.bi.telstraglobal.net (202.84.153.182) 85.723 ms i-0-0-0-1.hkth12.bi.telstraglobal.net (202.84.153.150) 86.731 ms i-0-0-0-2.hkth12.bi.telstraglobal.net (202.84.153.178) 85.305 ms
12 72.14.221.126 (72.14.221.126) 51.635 ms 51.535 ms 51.177 ms
13 209.85.241.58 (209.85.241.58) 51.137 ms 51.372 ms 51.086 ms
14 209.85.253.71 (209.85.253.71) 51.601 ms 209.85.253.69 (209.85.253.69) 52.172 ms 51.888 ms
15 * * *
16 hg-in-f103.1e100.net (74.125.128.103) 51.639 ms 52.632 ms 51.670 ms
学ぶ価値がある教訓
ファイアウォール(または同様のセキュリティデバイス)のルールを設定するとき、黄金率はすべて拒否、特定のコンテンツを許可」
答え3
学校のファイアウォールは、TCP / 80(WebトラフィックのデフォルトIPポート)以外のポートからのほとんどのアウトバウンドトラフィックをブロックできます。
特にPingと(ほとんどの場合)経路追跡送信ICMP ECHO_REQUEST パケット多くの企業や学校では、ファイアウォールの背後にあるネットワークデバイスに関する情報を見つけるためにICMPトラフィックを使用できるため、ファイアウォールを介してすべてのICMPトラフィックをブロックします。