Practice/GTK+, Linux

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

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


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


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


특정 사이트가 열리지 않는 것을 미루어보아, 네임서버에서 특정 도메인에 대해서 제대로된 정보를 주지 않는가 싶었다.
이럴 때는 nslookup[각주:2] 명령어로 어떤 결과를 주는지는 확인하면 된다.
더불어 dig[각주:3]를 활용하면 그 과정을 더 자세히 추적할 수 있다.

$ 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와 포트가 막혀있는가를 의심했다.
프로토콜과 상관없이 접속을 확인해볼때는, telnet[각주:4]을 사용해서 알아볼 수 있다.

$ telnet 180.70.134.73 80
Trying 180.70.134.73...
Connected to 180.70.134.73.
Escape character is '^]'.

사용하는 프로토콜을 알고 있다면, 해당 프로토콜을 구현한 툴을 사용하는 것이 좋다.
예를 들면, HTTP 프로토콜에는 curl[각주:5]이나 wget[각주:6]이 있다.
어찌되었든, 네트워크로 접속이 되는 것은 확인하였다.
즉, IP나 포트를 차단한 것은 아니다.


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


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


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


설마, 모든 패킷을 다 열어보고 필터링하는 것인가? 그러면 열어봐도 무슨 말인지 모르도록 해야겠다.
이럴 때는 암호화 프로토콜을 지원하는 것을 내 머신과 프록시 서버 사이에 놓아야겠다.
그래서 프록시 서버를 ssh[각주:8] 터널링으로 연결하기로 마음을 먹었다. 검색해보니 좋은 문서[각주:9]를 찾았다.
이 문서의 ssh 옵션이 먹지 않아서 아래와 같이 수정한 것을 제외하고는 동일하다.

ssh remotehost -L 8888:localhost:8888 -N

또한 윈도우즈에서는plink를 사용했다.

plink.exe -l myid remotehost -L 8888:localhost:8888

그리고 파이어폭스와 드롭박스에 프록시를 설정했다.

파이어폭스 프록시 설정파이어폭스 프록시 설정

[파이어폭스 프록시 설정 화면]

드롭박스 프록시 설정드롭박스 프록시 설정

[드롭박스 프록시 설정 화면]


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

  1. https://www.dropbox.com/ [본문으로]
  2. http://ko.wikipedia.org/wiki/Nslookup [본문으로]
  3. http://en.wikipedia.org/wiki/Dig_%28command%29 [본문으로]
  4. http://ko.wikipedia.org/wiki/%ED%85%94%EB%84%B7 [본문으로]
  5. http://curl.haxx.se/ [본문으로]
  6. http://www.gnu.org/software/wget/ [본문으로]
  7. https://banu.com/tinyproxy/ [본문으로]
  8. http://ko.wikipedia.org/wiki/%EC%8B%9C%ED%81%90%EC%96%B4_%EC%85%B8 [본문으로]
  9. https://calomel.org/firefox_ssh_proxy.html [본문으로]
  1. WY M/D Reply

    첫번째에서 dns request 가 timeout 이라고 뜨면 어떻게 하죠?

    • Favicon of http://unipro.tistory.com unipro M/D

      회사의 인터넷 관리자나 ISP 업체에 문의하세요.

  2. 최우영 M/D Reply

    아무것도 모르는 생초보 입니다만 이러한 방법이 꼭 필요해서 문의 드립니다. 마지막 과정을 좀더 쉽게 알려주실수 없나요.... 제발 부탁드립니다.

    • Favicon of http://unipro.tistory.com unipro M/D

      초보라고 한다면 브라우져의 플러그인 형태를 권장합니다.
      구글에 "proxy plugin"이나 "프록시 플러그인"을 검색해보세요.
      본인이 사용하는 브라우져에 적합한 플러그인을 받아서 사용하면 됩니다.
      그리고 선택한 플러그인의 사용 방법을 구글신께 물어봅니다.

  3. M/D Reply

    비밀댓글입니다

    • Favicon of http://unipro.tistory.com unipro M/D

      아래 블로그에 잘 적혀있네요.
      참고하세요.

      http://taegwan.blogspot.kr/2005/11/%EB%84%A4%EC%9E%84%EC%84%9C%EB%B2%84-%ED%99%95%EC%9D%B8%EB%B0%A9%EB%B2%95.html

  4. poshap M/D Reply

    두번째 의심 부분에서 안되는데요

    첫번째 의심부분은 잘되는데 2번째 의심에서 막히네요
    말씀대로 방화벽에서 ip나 포트를 차단했을 경우에는 어떤 방법이 있나요..?

  5. Favicon of http://www.joyalba.com 알바 . M/D Reply

    관리자의 승인을 기다리고 있는 댓글입니다

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

Today : 13
Yesterday : 204
Total : 213,793