node.js 3000번 포트에서 80번 적용이 안될 때: iptables

iptables를 이용하여 80번 포트로 라우팅을 시키고 브라우저 주소창에 포트를 없앴는데도 안되는 경우.

iptables의 PREROUTING이 여러 번 적용되어 있는 경우 그럴수도 있습니다. 아래 명령어를 통해 iptables 등록 상태를 확인합니다.

$ sudo iptables -t nat -L

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

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

PREROUTING 부분에 보면 제가 처음에 다른 포스트를 보며 8080 -> 80 포트로 세팅해뒀는데 생각해보니 내 서버는 3000번 포트를 설정하고 있던 걸 깨달았습니다.

그래서 다시 3000 -> 80 포트로 세팅하는 명령어를 입력했는데도 원하는대로 세팅이 안되어서 여러 번 같은 명령어를 입력한 것을 볼 수 있습니다(…)

해결 방법

해결 방법은 PREROUTING 부분을 한 항목만 남기면 되는 것이었습니다.

다음은 맨 위 항목을 하나 삭제하는 명령어입니다. sudo iptables -t nat -D PREROUTING 1

이후 다시 라우팅 항목들을 확인해보면 $ sudo iptables -t nat -L 하나가 사라져 있을겁니다.

이렇게 해서 항목을 하나만 남겨두고 다시 node.js 앱을 실행시키면 정상적으로 실행됩니다.

results matching ""

    No results matching ""