1. 포트 포워딩이 필요한 경우
- 클라우드에서 가상서버를 구축 웹서비스를 만든경우 보통 특정 포트를 사용하는 경우가 있다
- 예를 들어 Streamlit 같은 경우도 5998 포트를 사용한다
- 클라우드 서버에 공인 IP가 연결되었다라도 해당 서비스에 연결하려면 IP 끝에 포트를 지정해야 한다
- (예) 부여 받은 공인 IP가 211.999.999.999 라면 해당 서비스 연결을 위해서는 http://211.999.999.999:5998 로 접속 해야 한다
- http://211.999.999.999:5998 로 접속하는 대신 http://211.999.999.999 만 입력해도 접속되게 하려는 것이 포트 포워딩이다
2. 포트 포워딩 순서
2.1 우분투에 관리자 권한으로 로그인 후 부여받은 공인 IP 주소 확인
curl ifconfig.me
2.2 iptables 조회
iptables -t nat -L --line-numbers
현재 설정 되어 있는 포트포워딩 상태를 확인 가능하다
2.3 포트포워딩 등록
- 예를들어 80 포트로 외부에서 인터넷 접속시 5998로 포트로 포워딩 하고 싶은 경우 아래와 같이 입력
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 5998
- 입력 후 다시 iptables를 조회하면 아래와 같은 화면으로 볼 수 있다.
- 이후 확인 해 보면 포트번호 입력 없이 http://(서버 공인IP) 로 접속시 http://(서버 공인IP):5998 서비스로 접속 된다
- 만약 https 로 접속 해도 포트 포워딩이 필요하다면 443 포트를 추가 포워딩 하는것으로 설정 하면 된다.
2.4 서버 재 부팅시에도 설정 유지
- 서버 재 부팅시에도 해당 설정을 유지하기 위해서는 iptables-persistent 패키지 설치가 필요하다
- 해당 패키지 설치 후 현재의 iptables 상태를 저장한다
# 패키지 설치 명령어
sudo apt install iptables-persistent
# 현재 iptables 상태 저장을 위한 명령어
sudo netfilter-persistent save
2.5 포트 포워딩 삭제
- 포트 포워딩이 필요 없어진 경우 iptables 조회 후 Chain PREROUTING num 서비스를 삭제 한다
iptables -t nat -D PREROUTING {num 숫자}