2주 전에 scratchbox 기반으로 크로스컴파일환경을 구축한 김에, 유무선공유기 WRT54G에 ss5 프락시 서버 설치본을 만들어보았습니다. 필요하신 분들은 깔아서 사용하시기 바랍니다.

주의사항. WRT54G에 해킹펌웨어를 설치하는 과정은 많은 위험을 동반합니다. 까딱 잘못하면 인터넷 접속이 마비될 수도 있으니, 미리 이웃집 무선랜 등을 확보해두시길 권장합니다.


0) 설치의 목적

여러가지가 있습니다만, 제일 피부에 와닿는건 아무래도 "MSN(혹은 네이트온) 메신저를 막아놓은 장소(대표적으로.. 회사)에서도 메신저를 사용할 수 있다"는 것이겠죠. 이와 더불어, 웹서핑 히스토리를 보안담당자에게 노출시키고싶지 않다거나, 집에 있는 여러대의 서버에 SSH로 접속하는 등 프락시 서버의 역할은 다양합니다.

WRT54G의 경우는 srelay라는 프락시 서버가 이미 컴파일되어 제공되고 있습니다만, 이 프로그램은 nobody로 구동되지 않아서 일단 후보에서 제외하고 ss5를 선정하였습지요.


1) DD-WRT 핵펌 설치

DD-WRT 핵펌에 관해서는 lanis 기사를 비롯해 많은 블로거들께서 정리해주신 적이 있어 자세한 내용은 생략합니다. ('WRT54G DD-WRT'로만 검색해보셔도 많이 나올 듯)

단, ss5를 설치하기 위해서는 WRT54G의 플래쉬메모리 일부를 jffs로 할당받아 여유공간을 확보해야합니다. DD-WRT 위키를 참조하셔서 micro, mini, standard 등 여러가지 버전 가운데 원하는 기능은 모두 제공하면서 용량은 가장 작은 버전을 고르시기 바랍니다. (저는 mini 깔았습니다)


2) JFFS 파일시스템 활성화

사용자 삽입 이미지
위 그림처럼 Administration > Management 들어가셔서,

사용자 삽입 이미지
JFFS2 파일시스템을 활성화시켜준 뒤에 공유기를 한번 리부팅하고 나면 됩니다. JFFS를 활성화하실 때 SSH도 같이 활성화해주시구요. SSH로 접속해보시면 다음과 같이 읽기와 쓰기가 모두 가능한 파일시스템이 /jffs에 마운트되어있음을 보실 수 있습니다.

/ # mount
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
/dev/mtdblock/4 on /jffs type jffs2 (rw)


3) ss5 패키지 설치

이제 패키지 설치가 가능한 파일시스템을 확보했으니 ss5를 설치할 차례입니다. 설치는 DD-WRT에 포함된 ipkg 명령어를 이용합니다.


WRT54G에 SSH로 접속하신 뒤에 아래 명령어를 실행하세요. 간혹 wget으로 다운받은 파일이 인식되지 않는 경우가 있으니(이유불명) tar tzvf 명령을 이용해서 다운받은 ipk 파일이 정상적인 .tar.gz 파일인지 확인해두는게 좋을 듯.

~ # cd /jffs

먼저 wget을 이용해 설치파일을 다운로드합니다
/jffs # wget http://hkjinlee.tistory.com/attachment/cfile10.uf@240CEE46586A8BCB19E85B.ipk
Connecting to hkjinlee.tistory.com[211.172.252.15]:80
cfile10.uf@240CEE46586A8BCB19E85B.ipk             100% |************************************|   168 KB 00:00:00 ETA

간혹 wget이 오동작하는 경우가 있더군요. tar명령어를 이용해서 control.tar.gz가 포함되어있는지 확인해봅니다.
/jffs # tar tzvf cfile10.uf@240CEE46586A8BCB19E85B.ipk
-rw-rw-r-- 0/0         4 2008-06-02 14:49:40 ./debian-binary
-rw-rw-r-- 0/0    174653 2008-06-02 14:49:40 ./data.tar.gz
-rw-rw-r-- 0/0       422 2008-06-02 14:49:40 ./control.tar.gz

파일이름을 ss5로 바꿔준 뒤에
/jffs # mv cfile10.uf@240CEE46586A8BCB19E85B.ipk ss5.ipk

ipkg 명령어를 이용해 설치
/jffs # ipkg install ss5.ipk
Unpacking ss5.ipk...Done.
Configuring ss5.ipk...Done.

설치파일 제거
/jffs # rm cfile10.uf@240CEE46586A8BCB19E85B.ipk


4) 설정파일 수정

위 파일만 정상적으로 설치하신 뒤에 공유기를 한번 리부팅해주시면, 그 다음부터는 정상적인 SOCKS5 프락시 서버가 됩니다. 접속포트는 10800이고(기본포트번호는 1080입니다만 바꿨습니다), 계정은 guest, 비밀번호는 change_on_install로 기본지정되어있으니 반드시 수정해주시기 바랍니다. 심각한 보안상의 위협이 될 수 있습니다.


5) 설치파일 설명

이렇게 설치된 ss5는 공유기를 재부팅할때마다 자동으로 실행됩니다. 이건 DD-WRT가 특정 위치에 있는 파일은 '시작프로그램'처럼 항상 실행시키기 때문인데요(DD-WRT 위키 참조), /jffs/etc/config/ 디렉토리 밑에 ss5.startup과 ss5.wanup이라는 파일을 보시면 됩니다.

ss5.startup 스크립트는 공유기가 켜질때마다, 방화벽 설정 직전에 실행됩니다. nobody 계정을 추가한 뒤에 SOCKS 포트번호를 설정하고, ss5를 실행합니다.
#!/bin/sh
echo 'nobody:x:100:0:Nobody:/tmp:/bin/sh' >> /etc/passwd;
export SS5_SOCKS_PORT=10800;
/jffs/sbin/ss5;

ss5.wan 스크립트는 방화벽 설정이 끝난 뒤에 실행됩니다. 10800번 포트에 대해 방화벽을 열어주는 역할을 합니다.
#!/bin/sh
iptables -I INPUT -p tcp --dport 10800 -j ACCEPT 


6) 메신저 설정 변경

자.. 이제 메신저를 공유기에 붙이는 일만 남았는데요, 공유기 IP는 수시로 변경되므로 가급적이면 Dynamic DNS 설정을 하셔서 xxxxx.dyndns.org와 같이 접근할 수 있게 해주시고, 포트번호는 10800, 프락시 종류는 SOCKS5, 아이디와 패스워드는 /jffs/etc/ss5/ss5.passwd 파일에서 설정해주신대로 넣어주시면 메신저가 막혀있는 곳에서도 메신저를 사용하실 수 있게 됩니다.

단, 업무시간을 장황한 채팅으로 소모하는 것은 본인을 위해서도 별로 바람직한 일은 아니므로 꼭 필요한 용도에 맞게 사용하시길 권장드립니다.
신고
  1. 낙근해 2008.12.07 03:05 신고 댓글주소 | 수정 | 삭제 | 댓글

    UDP 포트는 막혀있는거 같은데요.

    사실.. 겜돌려봤는데 ;; udp포트가 막혀서 접속이 안되네요.

    어떻게 처리를 하면 할수있을까요? 답변부탁드립니다.

  2. 낙근해2 2010.04.16 14:43 신고 댓글주소 | 수정 | 삭제 | 댓글

    한번시도해보려고 했으나... 제가 설치한 mini버전에는 wget이 없나봐요 ㅠ_ㅜ

    추가
    -> wget문제는 local dns설정때문이군요.
    결론
    -> jffs기능은 v24버전에는 삭제 되었습니다. 그이후 버전에는 option으로 빠진듯하군요. 고로 older version의 firmware를 사용해서 jffs를 사용해야 하네요.-_-; 글 잘보았습니다. 감사합니다.ㅎㅎ

  3. Favicon of http://www.perueckenshop.com/ BlogIcon Perücke 2011.06.20 18:13 신고 댓글주소 | 수정 | 삭제 | 댓글

    UDP 포트는 막혀있는거 같은데요.

    사실.. 겜돌려봤는데 ;; udp포트가 막혀서 접속이 안되네요.

    어떻게 처리를 하면 할수있을까요? 답변부탁드립니다.

  4. Favicon of http://www.shadmarsh.com BlogIcon www.shadmarsh.com 2014.11.11 13:37 댓글주소 | 수정 | 삭제 | 댓글

    이용약관위배로 관리자 삭제된 댓글입니다.





티스토리 툴바