우리 학교에는 서버가 있습니다. 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
완벽한 출력을 얻습니다. 사실 저는 이 서버에서 쉘 스크립트를 사용하여 웹사이트에서 많은 정보를 추출했습니다. 방화벽이 내 서버에 대한 외부 액세스를 차단하는 경우 쉘 스크립트는 어떻게 작동합니까?
답변1
예, 방화벽으로 인해 Traceroute가 성공하지 못할 수도 있습니다. 실패의 원인을 이해하려면 traceroute
매뉴얼 페이지를 참조하는 것이 가장 좋습니다 .
발췌
이 프로그램은 작은 ttl(Time to Live)로 프로브 패킷을 시작한 다음 게이트웨이에서 ICMP "시간 초과" 응답을 수신하여 인터넷 호스트에 대한 IP 패킷의 경로를 추적하려고 시도합니다.
ttl 1로 프로브를 시작한 다음 ICMP "포트 도달 불가능"(또는 TCP 재설정)이 발생할 때까지 1씩 증가합니다. 이는 "호스트"에 도달하거나 최대값에 도달함을 의미합니다(기본값은 30홉). .
ttl 설정(기본값)당 3개의 프로브가 전송되며 각 프로브의 ttl, 게이트웨이 주소 및 왕복 시간을 보여주는 줄이 인쇄됩니다. 요청 시 주소에 추가 정보를 추가할 수 있습니다. 프로브 응답이 다른 게이트웨이에서 오는 경우 각 응답 시스템의 주소가 인쇄됩니다. 5.0초(기본값) 이내에 응답이 없으면 감지기에 "*"(별표)가 인쇄됩니다.
따라서 별표는 시간 초과(5.0초 이상)로 패킷을 라우팅하는 서버이므로 traceroute
기본적으로 인쇄됩니다 *
.
실패를 일으킬 수 있는 또 다른 원인은 traceroute
도중에 있는 서버/라우터가 ICMP(또는 핑) 패킷에 응답하지 않도록 구성되어 있는 경우입니다. 실제 목적지로 전송되는 모든 패킷의 TTL(Time To Live)을 늘려 각 서버를 유도하는 Traceroute의 트릭은 핑에 응답하지 않으면 실패하게 됩니다.
노트:매뉴얼 페이지에도 이에 대한 경고가 있습니다 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(웹 트래픽의 기본 IP 포트) 이외의 포트에서 대부분의 아웃바운드 트래픽을 차단할 수 있습니다.
특히 핑과 (대부분의 경우) 경로 추적 전송ICMP ECHO_REQUEST 패킷많은 회사와 학교에서는 방화벽 뒤에 있는 네트워크 장치에 대한 정보를 찾는 데 ICMP 트래픽이 사용될 수 있기 때문에 방화벽을 통해 모든 ICMP 트래픽을 차단합니다.