私たちの学校にはサーバーがあります。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