12. 우분투 서버 UPNP 포트 포워딩 / 맵핑

category 서버/리눅스 서버 2014. 8. 6. 08:37

안녕하세요. 도정진입니다.

   

시놀로지 나스나 다른 타사 기성 NAS 제품군을 사 보면 딱히 공유기에서 포트포워딩을 하지 않아도 서비스에 따른 포트가 자동으로 열리는 것을 볼 수 있습니다.

   

저는 처음에 정말 신기했습니다. 포트가 어떻게 자동으로 열리는 걸까…

   

한편, 팟플레이어 방송이나 아프리카 방송 등은 분명 외부에서 방송을 하고 있는 컴퓨터로 접속이 가능해야 합니다.

   

그것 때문에 UPNP 를 사용하여 포트 포워딩을 합니다.

   

이는 공유기의 기능으로 공유기 하단에 있는 장비가 원활하게 구동될 수 있도록 도와주는 역할을 합니다.

   

   

예로써, 아이피타임 공유기 설정창에서 UPNP 항목을 보면 아래와 같이 몇몇 프로그램이 포트 포워딩을 한 상태임을 알 수 있습니다.

   

   

이런식으로 말이죠. 분명 토렌트같은 파일 공유 프로그램도 외부에서 내부 장비로 들어오는 연결이 가능해야 하는데 분명 포트포워딩을 해 주지 않았음에도 불구하고 외부와 공유가 잘 되는 이유는 바로 UPNP 때문이였습니다.

   

실제로 공유기에는 UPNP 데몬이 돌아가고 있습니다. (대부분 기능이 들어있으나 들어있지 않는 공유기도 있습니다.)

   

그것을 보면 XML 파일로 공유기 메모리에 저장함을 알 수 있습니다. 특정 어플리게이션이 공유기에 연결하여 포트포워딩 요쳥을 하면 공유기에서 받아 들여 포트포워딩을 하게 되는 것입니다.

   

기본적인 이야기는 여기까지만 하고 제가 왜 이 기능을 우분투 서버에 활용했는지 알려드리겠습니다.

   

다름 아니라 제가 지금 djjproject.com / djj.iptime.org 를 구동중인 장소는 제 자취방입니다. 자취방이다 보니 공유기 설정창에 진입을 할 수가 없고 제가 설정창에 접근을 할 수 없다보니 포트포워딩을 할 수 없는 처지인겁니다.

   

   

이 문제를 어떻게 해결하면 좋을까 고민하다가 기성 NAS 의 경우 공유기에 물리기만 하면 포트포워딩이 된다는 사실을 알고 찾아본것입니다.

   

이걸 세팅한 후에는 세팅값을 미리 만들어 두어 스크립트를 짜도 되고 아니면 프로그램을 이용해서 (아래에 설명을 자세히 해드립니다.) 자동으로 공유기의 UPNP 데몬에 연결하여 리스트를 업로드 하는 방식입니다.

   

서버 위치가 옮겨지더라도 UPNP 설정만 한번 해주면 제가 등록한 포트에 대해서 포트 포워딩이 한순간에 됩니다!

   

즉, 설정창에 진입을 하지 못하더라도 상관이 없는것이죠!

   

(물론 상단에 공유기가 하나 더 있다면 이 방법은 무용지물입니다.)

   

   

그럼 시작하겠습니다.

   

   

   

   

1. MiniUPNPc 를 사용하는 방법

   

이 방법은 터미널에서 작업을 하는 겁니다!

   

apt-get install miniupnpc

   

라고 입력하면 설치는 간단하게 됩니다. 만약 우분투나 칼리 , 데비안이 아니신 분들이나 레포에 위 패키지가 없으신 분들은 아래에 가셔서 소스를 직접 빌드 하셔서 쓰시길 바랍니다.

   

http://miniupnp.free.fr/

   

터미널에서의 명령은 예로써 192.168.0.9 에 대해서 80번 포트를 TCP 에 대해서 포워딩 한다고 가정하면

   

입력은 아래와 같습니다.

   

upnpc -a 192.168.0.9 21 21 TCP

   

마찬가지로 UDP 에 대해서도 가능합니다.

   

한편 레이블을 삭제도 할 수 있는데 삭제는

   

upnpc -d 192.168.0.9 21 TCP

   

로 하시면 됩니다.

   

   

터미널에서는 위와 같이 뜨게 됩니다.

   

(간혹 연결이 안되는 경우가 있는데.. 공유기 NAND 메모리 용량이 부족하거나 UPNP 데몬이 죽은 경우에 에러가 납니다. 이때는 공유기 재부팅을 해주시길 바랍니다.)

   

윗 부분은 제가 이미 21번 포트에 대해서 포트포워딩을 다른 곳으로 해 두었기 때문에 발생하는 에러입니다. 정상적인 경우에는 에러가 나지 않습니다 ^^

   

실제로 이것을 /etc/rc.local 에 등록하셔서 실행할 수도 있고

   

스크립트를 만드셔도 됩니다.

   

만드는데는 별로 어렵지 않습니다만 제가 아래에 더욱 편한 방법을 설명해 드릴려고 해서 상세히 적지는 않겠습니다.

   

   

   

.

   

   

2. UPNP Port Mapper 를 사용하는 방법

   

UPNP Port Mapper 는 아래의 주소에서 다운로드가 가능합니다.

   

http://upnp-portmapper.sourceforge.net/

   

한편 자바 프로그램이다 보니 자바가 필요하고 물론 터미널에서 작업도 가능하지만 쉬운길은 쉬운길로.. 가는게

   

… GUI 작업이 가능한 프로그램입니다.

   

일단 화면이 보여야 되기 때문에 서버 버전 배포판을 사용하시는 분은 아래의 주소를 참고해 주세요!

   

http://djjproject.tistory.com/74

   

일단 먼저 자바를 설치합니다.

   

apt-get install openjdk-6-jre

   

설치를 마치시고 jar 파일을 파일 탐색기에서 실행하시면 멋진 GUI 가 열립니다.

   

   

이렇게 GUI 가 열리는데 컨넥트를 누르면 자동으로 공유기/라우터 를 찾아서 현재 포트포워딩 된 리스트를 보여줍니다.

   

   

이런식으로 포트포워딩 된 창이 열립니다.

   

저는 이미 설정을 해 두었기 때문에 이 창이 열립니다.

   

간단하게 오른쪽 창에서 프리셋을 만들어 보겠습니다. 대부분 서버를 돌리시는 분이라면 포트 포워딩할 포트가 여러 개 되니까요!

   

   

일단 이름을 아무거나 마음에 드는 것으로 해 주시고

   

Add 버튼으로 리스트를 추가합니다. 프로토콜을 클릭하시면 TCP UDP 선택이 가능하고 포트는 더블클릭 하신 후에 입력하시면 됩니다.

   

한편 FTP 서버 패시브 포트나 , Asterisk 음성 포트 포워딩은 포트 레인지 추가로 등록하시면 되는데..

   

(이렇게 하면 리스트가 많아져서 공유기 설정 공간이 부족할 수 도 있고 포트매핑을 공유기로 전송하는데 시간이 많이 걸립니다. 이런 경우에는 꼭 포트포워딩 기능을 쓰는게 좋겠죠?)

   

그리고 세이브를 누르시면 다음에 프로그램을 키셔도 남아 있어서 원버튼 Use 버튼으로 간단하게 포트포워딩이 가능하게 됩니다.

   

   

   

공유기에 UPNP 기능이 없는것은 거의 없는 것으로 알고 있습니다..

   

아마 이 방법이 공유기 세팅창에 직접적으로 접속할 수 없을 떄 해결할 수 있는 좋은 방법일 듯 합니다.

   

아니면 서버 위치가 자주 바뀐다고 하거나 할때 정말 유용한 방법이 될꺼 같습니다.

   

   

   

감사합니다.


댓글을 달아 주세요