* 참조 : Outsider's Dev Story (http://blog.outsider.ne.kr/580)
리눅스나 OSX같은 UNIX계열의 OS에서 1024포트 아래의 포트는 privileged 포트로 root계정이 아니면 사용할 수 없습니다.(Windows계열에서는 상관없습니다.) Apache같은 웹서버를 앞에 두고 있다면 상관없지만 Tomcat이나 그외의 서버에서 80포트를 사용하려고 하면 sudo등을 사용해서 root계정으로 실행해야만 80포트를 사용할 수 있습니다.
문제는 이렇게 웹서버를 root계정으로 실행할 경우 보안의 문제가 생길수가 있기 때문에 문서들을 찾아볼 경우 이렇게 사용하는 것을 권하지 않고 있습니다. 하지만 80포트를 사용해야할 필요가 있을 경우 찾아보니 OS에서 제공하는 iptables을 사용해서 80포트를 다른 포트로 리다이렉트 시키거나 authbind 를 설치해서 특정포트를 특정앱에게 사용할 수 있도록 허용해 줄수 있습니다. 고민을 하다가 authbind를 사용하려면 별도의 설치를 해야하기도 해서 iptable을 사용하기로 했습니다.
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
* 2013.05.13 추가ex) 아파치가 80으로 서비스 되고 있다는 가정하에, 외부에서 88포트로 접근시, 내부 80으로 리다이렉트 하고자 할때..
의미는 크게 없는 작업이지만, 해당 내용도 가능하다라는 내용을 확인차 테스트해봄
이렇게 함으로써, 내부에서 80포트로 서비스 되고 있지만, 외부에서 88포트로 접근시, 80으로 리다이렉트 되어, 아파치 페이지가 열림.
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 88 -j REDIRECT --to-port 80
위와같은 명령어를 터미널에서 입력하면 80으로 들어오는 모든 패킷을 8080으로 리다이렉트 처리해버립니다. 80포트로 요청을 받기위해서 웹서버를 8080으로 띄워놓고 위처럼 iptable을 이용해서 80으로 들어오는 패킷을 웹서버가 받도록 하는 것입니다.
옵션을 간단히 설명하면 -A는 새로운 룰을 추가하는 것으로 PREROUTING에 대한 룰을 추가합니다. -t는 테이블을 지정하는 옵션으로 nat로 지정합니다 -i 는 인터페이스를 지정하며 인터넷에 연결되어 있는 장비를 eth0으로 지정하고 -p는 프로토콜을 지정하는 옵션으로 tcp를 지정하였습니다. --dport 은 도착지포트를 의미하며 여기서는 80을 지정합니다 -j는 패킷을 어떻게 처리할 지를 결정하는 옵션으로 8080으로 리다이렉트 처리합니다.
iptables -t nat -L
위 명령어를 입력하면 추가한 룰을 확인해 볼 수 있습니다. 기본적인 리스트는 -L 옵션으로 확인하지만 PREROUTING은 nat테이블을 지정해서 보아야 하는것 같습니다.
[Linux] IPTABLE 기본 사용법 이나 IptablesHowTo 를 보면 자세히 나와 있습니다.
'+::System:: > Linux' 카테고리의 다른 글
서버에서 sftp 서브시스템을 거부함 / subsystem request for sftp failed, subsystem not found / sftp접속 불가. (0) | 2014.02.24 |
---|---|
Linux rz, sz yum으로 간단 설치 / ZMODEM (0) | 2013.05.15 |
리눅스 / 파일 내용 일괄 수정(변경) / Mysql replace, perl 치환 (0) | 2013.05.03 |
kill -HUP {PID} / dns재시작 / 프로세스번호로 재시작 / 리눅스, 유닉스, 솔라리스 프로세스 재시작 (0) | 2013.02.01 |
리눅스 콘솔 한글깨짐 / i18n (0) | 2012.10.18 |