본문 바로가기
배워야 산다/Linux

포트포워딩 (톰캣의 포트를 80으로 띄우고 싶을 경우)

by 인라인타지마 2014. 11. 24.

출처 : http://stevenjsmin.tistory.com/103

        http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-ko-4/s1-fireall-ipt-act.html


리눅스에서 1024 이하의 포트는 보안상의 이유로 ROOT 권한을 가진 프로세스만이 선점할 수 있다.

별다른 조치 없이 80포트로 톰캣을 유저계정으로 띄우고자 할 때 아래와 같은 에러가 발생 한다.


2014. 11. 24 오전 11:14:15 org.apache.coyote.AbstractProtocol init

정보: Initializing ProtocolHandler ["http-bio-80"]

2014. 11. 24 오전 11:14:15 org.apache.coyote.AbstractProtocol init

심각: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"]

java.net.BindException: Permission denied <null>:80



따라서 80포트로 서비스 하고자 한다면,  톰캣 HTTP Connector Port 1024이상의 포트번호로 지정해준 뒤80포트로의 모든 인바운딩을 Tomcat HTTP Connector Port로 리다이렉트 해주어야한다아래는 iptables 명령을 이용한 간단한 예제이다.(반드시 root권한으로 수행되어야 한다.)


우선 8080포트가 리슨을 하고있는지 확인한다.

# netstat -ntl


TOMCAT 서버가 구동되는 호스트의 IP : 211.110.33.86 또는 localhost
TOMCAT 서버의 HTTP Connector Port : 8080

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080 

위의 예제는 현재 서버(211.110.33.86) 8080포트에 대한 모든 인바운딩을 80 포트로 리다이렉트(REDIRECT)하는 명령이다.


또는 다음과 같이 명령을 입력한다.

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Run the folloing command to verify that redirect is working fine

# iptables -t nat -L

The output will look something like

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  anywhere             anywhere            tcp dpt:http redir ports 8080

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

 Run the following command to remove the routing

# iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

 Remember, when you are modifying your running configuration of iptables, you will still need to save your changes in order for it to persist on reboot. Be sure to test your configuration before saving it with "service iptables save" so that you don't lock yourself out



방화벽 규칙은 컴퓨터가 켜져있는 동안에만 유효합니다. 만일 시스템이 재부팅되면 규칙이 자동으로 지워지고 재설정됩니다. 따라서 이후에도 똑같이 읽혀지도록 규칙을 저장하시려면 다음 명령을 사용하십시오:

# service iptables save

규칙이 /etc/sysconfig/iptables 파일에 저장되어 서비스가 시작되거나 재시작되며 컴퓨터가 재부팅될 때마다 동일하게 적용됩니다.


반응형