2016년 9월 21일 수요일

막혀있는 회사의 네트워크 우회하기

월요일에 웹브라우져를 열었더니, 일부 사이트와 서비스가 막혀있었다.
또한 일부 사이트는 이미지가 안보이거나 느려서 이용이 불편했다.
사이트는 티스토리나 드롭박스의 홈페이지였고, 서비스는 드롭박스1의 클라우드 스토리지의 연결이 되지 않았다.

아래 설명은 티스토리의 이미지 사이트를 중심으로 문제의 해결 과정을 설명하겠다.

첫번째 의심: 네임서버를 조작했다?

특정 사이트가 열리지 않는 것을 미루어보아, 네임서버에서 특정 도메인에 대해서 제대로된 정보를 주지 않는가 싶었다.
이럴 때는 nslookup2 명령어로 어떤 결과를 주는지는 확인하면 된다.
더불어 dig3를 활용하면 그 과정을 더 자세히 추적할 수 있다.
$ nslookup cfile5.uf.tistory.com
....
Non-authoritative answer:
cfile5.uf.tistory.com   canonical name = cfile5-tistory-uf.g.daum.net.
Name:   cfile5-tistory-uf.g.daum.net
Address: 180.70.134.73
확인 결과는 제대로 돌려주고 있었다.

두번째 의심: 방화벽으로 IP와 포트를 막았다?

방화벽에서 몇몇 도메인과 연결된 IP와 포트가 막혀있는가를 의심했다.
프로토콜과 상관없이 접속을 확인해볼때는, telnet4을 사용해서 알아볼 수 있다.
$ telnet 180.70.134.73 80
Trying 180.70.134.73...
Connected to 180.70.134.73.
Escape character is '^]'.
사용하는 프로토콜을 알고 있다면, 해당 프로토콜을 구현한 툴을 사용하는 것이 좋다.
예를 들면, HTTP 프로토콜에는 curl5이나 wget6이 있다.
어찌되었든, 네트워크로 접속이 되는 것은 확인하였다.
즉, IP나 포트를 차단한 것은 아니다.

세번째 의심: 웹방화벽으로 특정 포트의 패킷을 필터링한다?

웹방화벽 같은 것이 HTTP 프로토콜을 필터링해서 막는 것일 수도 있다고 생각했다.
이 장비가 웹으로 의심되는 몇몇 포트를 경유하는 패킷만 선별하여 분석하는 것으로 짐작했다.
그렇다면, 외부의 HTTP 프록시 서버를 이용해서 특이한 포트를 사용한다면 필터링을 우회할 수 있을 것이다.
외부 서버에 설치할 프록시 서버로는 가벼운 tinyproxy7를 선택하였다.
몇몇 사이트를 참고하여 프록시 서버와 웹브라우저의 준비를 마쳤다.
이제 내 컴퓨터와 프록시 서버는 평소 잘 사용하지 않는 포트를 사용한다.
프록시 서버의 접속 로그를 모니터링하면서 몇몇 잘 알려진 사이트(예를 들어, 구글 메인페이지)에 접속해보니, 프록시를 경유해서 HTTP 패킷이 잘 송수신 되는 것을 확인했다.
문제의 사이트인 티스토리를 접속했는데, 여전히 이미지가 열리지 않는다.

네번째 의심: 모든 패킷의 내용을 필터링한다?

설마, 모든 패킷을 다 열어보고 필터링하는 것인가? 그러면 열어봐도 무슨 말인지 모르도록 해야겠다.
이럴 때는 암호화 프로토콜을 지원하는 것을 내 머신과 프록시 서버 사이에 놓아야겠다.
그래서 프록시 서버를 ssh8 터널링으로 연결하기로 마음을 먹었다. 검색해보니 좋은 문서9를 찾았다.
이 문서의 ssh 옵션이 먹지 않아서 아래와 같이 수정한 것을 제외하고는 동일하다.
ssh remotehost -L 8888:localhost:8888 -N
또한 윈도우즈에서는plink를 사용했다.
plink.exe -l myid remotehost -L 8888:localhost:8888
그리고 파이어폭스와 드롭박스에 프록시를 설정했다.
파이어폭스 프록시 설정파이어폭스 프록시 설정
[파이어폭스 프록시 설정 화면]
드롭박스 프록시 설정드롭박스 프록시 설정
[드롭박스 프록시 설정 화면]

드디어 이전과 같이 웹서비스를 잘 이용할 수 있게 된다. 성공이다.

댓글 없음:

댓글 쓰기