1. 포트 포워딩이란
1.1 Port란?
위키 백과에서 포트는 인터넷 프로토콜 스위트에서 운영 체제 통신의 종단점이라고 한다. 네트워크 서비스나 특정 프로세스를 식별하는 논리 단리라고 한다. 여기서 식별이라 함은 port를 통해 서비스를 찾아갈 수 있다.
예를 들어보자 Django로 로컬에 웹 서버를 띄울 떄 console에는 다음과 같은 창이 뜬다.
Starting development server at http://127.0.0.1:8000/
IP:Port 번호인데 8000번이 아닌 8001을 입력하면 해당 서버에 접속할 수 없다. 이렇듯 Port를 통해 식별을 할 수 있다.
1.2 포트포워딩?
포트 포워딩은 특정 포트로 들어오는 것을 다른 포트로 바꿔서 다시 전송하는 것이다. 만약 외부에서 210.XXX.XXX.X:8001 이란 IP와 Port로 요청이 들어왔을 때 포트포워딩을 통해 내부 IP 192.XXX.XXX.X:8000번으로 포워딩을 시킬 수 있다.
2. SSH 포트 포워딩을 사용하는 이유
(SSH 포트포워딩은 다른 말로 SSH 터널링이라고도 불린다. )
그렇다면 왜 SSH 터널링을 사용하는 걸까? 간단하다 편해서! 우리는 원격 서버로 접속할 때 보안상의 이유로 방화벽이 허용하지 않은 포트로는 접속할 수 없다. 하지만 SSH 터널링을 사용하면 방화벽을 우회하여 내부의 서비스로 접속할 수 있다. 일례로 Python의 라이브러리 중 하나인 sshtunnel 패키지는 remote_bind_address 인자를 제공하는데 여기에 DB 접속 정보를 입력하면 방화벽 설정을 하지 않아도 내부의 DB에 접속할 수 있다.
참고
https://www.cbtnuggets.com/blog/technology/networking/what-is-ssh-port-forwarding
'DevOps' 카테고리의 다른 글
따라하며 배우는 도커와 CI 환경 - 1. 도커란 (0) | 2023.03.03 |
---|---|
Github Actions CI/CD 알아보기 - 1 (1) | 2023.02.24 |
배포전략 - 카나리 배포전략 (0) | 2023.02.18 |
SSH 계정 및 DB 서버 계정 생성 및 DB 외부 접속 허용하기 (0) | 2023.01.19 |
[Nginx] 리버스 프록시란? (0) | 2023.01.14 |