발견

Port Forwarding(포트 포워딩)이 안될때 - 80 to 8080

Dev_Green 2022. 8. 18. 13:24

1. 상황

URL 주소에서 매번 뒤에 :8080을 붙여주어야 하는 번거로움을 덜고자

8080 포트를 80 포트로 연결(redirect)해주려 한다.

* http 요청에서 80포트가 기본이므로, 굳이 :80을 붙이지 않아도 자동으로 연결이 된다.

 

아래는 터미널로 접속한 ubuntu 서버 상에서, 80 포트를 8080 포트로 redirect해주는 코드이다.

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

2. 문제

위 코드를 실행시키고 브라우저에서 기존의 URL에서 :8080 을 제거하고 접속을 시도했더니 아무런 응답이 없었다. 

코드를 실행하기 전과 다름 없는 상황, 즉 80 포트가 8080 포트로 연결되지 않은 것이다.

 

3. 해결

문제의 원인은 이전에 80 포트를 5000 포트로 연결해놓은 적이 있었기 때문이었다.

아래 결과값에서 가장 위에 있는 5000 포트로 포워딩 시켜놓은 부분 때문에 그 아래에 있는 8080 포트로의 포워딩이 정상적으로 작동될 수 없었다. 

// 현재 포워딩 시켜놓은 포트를 확인
sudo iptables -t nat -L

 

따라서 5000 포트로의 포워딩을 지워야 한다.

5000 포트를 비롯해 8080 포트 하나만 남겨두고 나머지를 모두 삭제하였다.

// 포워딩 삭제
sudo iptables -D PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

 

다시 현재 포워딩 포트를 확인해봤을 때 8080 포트로의 포워딩 하나만 남았다.

 

여기까지 실행을 마치고 다시 포트 번호를 붙이지 않은(80 포트) URL로 접속해보았더니 정상적으로 8080 포트에서 작동하던 페이지로 redirect되는 것을 확인할 수 있었다.