Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

iptables로 80포트 리다이렉트 하기

리눅스나 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

위와같은 명령어를 터미널에서 입력하면 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 를 보면 자세히 나와 있습니다.
2011/01/18 01:01 2011/01/18 01:01