Tag: proxy

proxy 설정

음.. proxy 설정이 영 헷갈려서 적어놓는다.

$ export http_proxy=<proxy.server:port>
$ export https_proxy=$http_proxy
$ export no_proxy=google.com,naver.com,daum.net

기록은 기억보다 영원하다.


twisted를 이용한 심플한 dns proxy: dnspost

Mac OSX의 resolver라는 기능이 있습니다. 간단히 말해서 특정 도메인에 해당하는 DNS 쿼리를 특정 DNS 서버에 요청하는 것이지요.. 뭐 일상생활에서는 필요없겠는데, 개발용으로 내부 네임서버를 돌리고 있는 경우에 가끔 유용하게 쓸 수 있습니다.

아래처럼 도메일별로 다른 서버에 DNS 쿼리가 가능하다는 것이죠.

  • *.dev.company.com --> 192.168.1.199
  • *.myteam.company.com -> 192.168.1.200
  • 나머지 --> 168.126.63.1

OSX에서는 resover를 사용해서 하고.. 또한 우리 회사 개발자도 OSX를 좋아해서 이 기능을 쓰라고 그러고, 다른 OS는 별로 관심이 없습니다.(OSX가 기본 개발 OS인양...). Ubuntu를 데스크탑으로 사용하는 제가 이상하게 소외받는 ㅎㅎ

그래서 목마른 사람이 우물을 판다고 python twisted name 라이브러리를 이용해서 간단히 뚝딱뚝딱 만들어 봤습니다. 로컬에서 네임서버 돌리고 이 것을 사용하면 됩니다.

https://github.com/whitekid/dnspost

Installation

$ apt-get install python-twisted-names
$ git clone https://github.com/whitekid/dnspost.git
$ cd dnspost
# edit dnspost.conf listen_port
$ ./dnspost.py

Ubuntu/NetworkManager note

ubuntu desktop에서는 NetworkManager를 사용하고, NetworkManager에서는 dnsmasq를 사용하여 dns를 캐슁하면서 로컬에서 서비스 하고 있습니다. NetworkManager에서 dnsmasq가 상위 dns 쿼리할때 특정 포트로 쿼리할 수 있는 기능이 있다면 로컬에서 별도의 포트로 돌리고있는 dnspost로 설정하여 할 수 있지만, 그런 기능이 없기에 dnsmasq를 사용하지 않고 합니다.

disable dnsmasq

/etc/NetworkManager/NetworkManager.conf에서 dns=dnsmasq라는 라인을 삭제합니다

#dns=dnsmasq

NetworkManager restart

$ service network-manager restart

px ax | grep dnsmasq로 dnsmasq가 없는지 확인합니다.

set nameserver to localhost

네트워크 연결 설정에서 DNS 서버를 127.0.0.1로 변경합니다. 설정을 변경한 후 /etc/resolv.conf에는 설정이 없거나 127.0.0.1로 설정이 됩니다.

만일 반영이 안되면 network-manager를 다시 시작합니다.

$ service network-manager restart

register dnspost upstart service

$ cp dnspost.conf /etc/init/dnspost.conf
$ ln -s /lib/upstart-job /etc/init.d/dnspost
$ service dnspost start

test

$ dig daum.net localhost

잘 동작하는 것을 확인하였다면 이제 설정파일 적당히 바꿔서 도메인별로 DNS Server를 다르게 사용해보시기 바랍니다. - 끝 -


socks5 proxy with ssh

오늘 ssh가 sock5 proxy로도 사용될 수 있다는 사실을 알았다. 예전엔 ss5를 쓴 기억이 있어서 우분투에도 찾아봤는데, 이거 왠걸 여기는 패키지가 없다. 그래서 ubuntu에도 사용할 괜찮을 sock5 프록시 서버가 뭐가 있을가 하고 찾아봤는데 떡하니 ssh를 사용하는 방법이.. 게다가 당연히 별도의 설정도 거의 필요 없었다.

프록시 서버는 sshd만 돌고 있으면 된다. 내 데스크탑이 ubuntu이니 당연히 사용중이니 설정 건드릴 것 없고, 사용하려는 컴퓨터에서 프록시 서버로 사용할 컴퓨터로 ssh 접속을 아래와 같이 한다.

$ ssh -D 9999 user@192.168.xxx.xxx

이제 프록시 연결은 끝났다. 프록시를 사용할 컴퓨터에서 아래처럼 설정하고 사용하면 된다.

  • 프록시 타입: SOCKS v5
  • 호스트: 127.0.0.1
  • 포트: 9999

아주 간단~

참 혹시나 sshd 설정에서 AllowTcpForwarding true로 설정이 되어있는지 확인하시기 바랍니다. 기본값은 true이지만 배포판에 따라서 설정이 되어있을 수 있어요.

ps. 왜 이게 필요하냐고? 회사에서는 데스크탑 용 IP와 노트북용 IP를 별도의 영역으로 구분해 할당해 줬습니다. 노트북용 아이피는 또한 외부 방문자도 사용하는 것을 염두해두고 있어서 내부 개발 서버에 접근하는 것을 막아놨죠.

녜.. 데스크탑은 개발 서버에 접속이 되지만, 노트북은 안됩니다. 그래서 데스크탑을 프록시 서버로 사용해 접속하는 꽁수를... ㅎㅎ

참고


ss5: socks proxy server for FreeBSD

많은 회사생활하는 분들도 그렇지만 여기 내가 일하고 있는 곳에 막혀있는 사이트가 많고 막혀있는 포트도 많다. 그래서 웹을 위해서는 이 서버에다 squid를 설치해서 우회해서 사용하고 있다.

그런데 말이다 인터넷이라는 것이 항상 웹으로만 되는건 아니라서.. 다른 포트가 필요할 경우가 있지요. 그래서 찾아보다가 socks proxy server를 설치해보기로 했다. 여기의 글을 보고 그중에서 ss5가 가장 낳은것 같아서(아니면 좋은것 소개해 주세요.) 그것으로 해봤다.

설치

$ portmaster net/ss5
$ /usr/local/etc/rc.d/ss5 start

이렇게 해주면 단순히 설치가 끝나고 사용이 가능한다.

물론 /etc/rc.conf에 ss5_enable="YES" 를 추가하시구요.

우선 모두 다 열어

/usr/local/etc/ss5.conf에 다 열려면 아래 두 줄 확인할 것..

auth 0.0.0.0/0 - -
permit 0 0.0.0/0 - 0.0.0.0/0 - - - - -

기본 포트가 막혔군

socks 서버는 1080 포트를 사용한다. 근데 해보니.. 허걱 연결이 안되는군요. 포트를 바꿔야지요. 설정파일에는 그런게 없고 실행할때 파라미터로 주어집니다.

/etc/rc.d에 ss5_flags="-b 0.0.0.0:<port>" 라고 적어주면 됩니다.

ㅋㅋ 이제 막인것도 다 뚫어! 단... application에서 proxy를 지원한다면 말입니다..


  • Copyright © 1996-2010 Your wish is my command. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress