Backend/Ubuntu

[Ubuntu] Ubuntu 서버 포트 포워딩

써니의 연습장 2024. 12. 19. 18:28

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 숫자}