맨위로가기

포트 포워딩

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

포트 포워딩은 외부 네트워크의 장치가 사설 네트워크 내의 특정 컴퓨터나 서비스에 연결할 수 있도록 하는 기술이다. 일반적으로 라우터나 NAT 장치를 사용하는 가정 네트워크에서, 포트 포워딩은 특정 포트 번호를 사설 네트워크 내의 호스트에 할당하여 외부에서 해당 서비스에 접근할 수 있게 한다. 포트 포워딩은 HTTP 서버 운영, 보안 셸 접근 허용, 게임 서버 운영 등 다양한 용도로 사용되며, 로컬, 원격, 동적 포트 포워딩의 세 가지 주요 유형으로 나뉜다. 각 유형은 SSH와 같은 기술을 활용하여 보안 연결을 설정하고, 방화벽을 우회하거나 데이터 전송의 보안을 강화하는 데 사용된다.

더 읽어볼만한 페이지

  • 네트워크 주소 변환 - TURN
    TURN은 NAT 환경에서 직접 통신이 어려울 때 중계 서버를 통해 통신을 가능하게 하는 프로토콜로, STUN의 한계를 보완하며 멀티미디어, P2P 시스템 등에서 활용되고 ICE와 함께 연결 설정을 최적화하지만, 대역폭 사용량이 많다는 단점이 있다.
  • 네트워크 주소 변환 - STUN
    STUN(Session Traversal Utilities for NAT)은 NAT 환경에서 통신 프로토콜이 NAT를 감지하고 통과하도록 돕는 클라이언트-서버 아키텍처 도구로, 클라이언트가 서버에 요청하여 외부 IP 주소와 포트 번호를 확인하며, VoIP, 인스턴트 메시징, 화상 회의 등에 활용되고 TURN, ICE와 함께 최적의 통신 경로 설정에 기여한다.
  • 라우팅 - 라우팅 프로토콜
    라우팅 프로토콜은 네트워크 계층에서 라우터들이 네트워크 구성 정보를 교환하여 효율적인 데이터 전송을 가능하게 하는 통신 프로토콜로, 링크 상태 라우팅, 거리 벡터 라우팅, 경로 벡터 라우팅 등으로 분류되며, 5G, IoT, SDN/NFV 환경에 따라 기술이 발전하고 있고, 대한민국에서도 경쟁력 강화를 위한 투자가 이루어지고 있다.
  • 라우팅 - 라우팅 테이블
    라우팅 테이블은 네트워크에서 데이터 전송 시 최적 경로를 결정하는 핵심 데이터베이스로, 라우터가 목적지 IP 주소를 기반으로 다음 홉을 결정하며 직접 연결 및 원격 네트워크 경로 정보를 저장하고 동적 라우팅 또는 수동 설정으로 관리된다.
  • 네트워크 보안 - 스파이웨어
    스파이웨어는 사용자의 동의 없이 설치되어 개인 정보를 수집하거나 시스템을 감시하며, 다양한 형태로 존재하여 광고 표시, 정보 탈취, 시스템 성능 저하 등의 피해를 유발하는 악성 프로그램이다.
  • 네트워크 보안 - 가상 사설 서버
    가상 사설 서버(VPS)는 공유 웹 호스팅과 전용 호스팅의 중간 단계 서비스로, 가상화 기술을 기반으로 슈퍼유저 수준의 접근 권한, 높은 운용 자유도와 향상된 보안성을 제공하지만, 환경 유지 관리 필요성, 상대적으로 높은 비용, 회선 공유 문제 등의 단점도 가진다.
포트 포워딩
일반 정보
"전형적인 포트 포워딩 설정. 외부 호스트는 192.168.1.100의 80번 포트로 연결을 시도한다. 라우터는 모든 트래픽을 192.168.0.10의 8080번 포트로 전달한다."
다른 이름포트 매핑
상세 정보
범주네트워킹
설명네트워크 주소 변환(NAT) 장벽 뒤에 있는 네트워크 서비스에 대한 외부 접근 허용

2. 목적

포트 포워딩은 원격 컴퓨터(예: 인터넷 상의 컴퓨터)가 근거리 통신망(LAN) 내에 위치한 특정 컴퓨터나 서비스에 연결할 수 있도록 하는 기능이다.[16][3]

일반적인 가정 환경에서 컴퓨터는 라우터나 네트워크 주소 변환(NAT) 기능이 있는 DSL 모뎀 또는 케이블 모뎀을 통해 인터넷에 연결된다. 사설 네트워크 내의 컴퓨터들은 각자 사설 IP 주소를 가지므로 인터넷 상의 다른 컴퓨터에는 직접 보이지 않는다.

포트 포워딩을 설정하면, 네트워크 관리자는 외부 컴퓨터가 사설 네트워크 내 특정 서비스에 접근할 수 있도록 게이트웨이(라우터)의 특정 포트 번호를 지정한다. 외부 컴퓨터는 이 포트 번호와 게이트웨이의 공인 IP 주소를 사용하여 내부 서비스와 통신한다. 예를 들어, 웹 서비스(HTTP)는 보통 80번 포트를 사용하는데, 포트 포워딩을 통해 사설 네트워크 내 컴퓨터에서 웹 서버를 운영할 수 있다.

일반적인 응용 사례는 다음과 같다:


  • 사설 LAN 내에서 공용 HTTP 서버 실행[16]
  • 인터넷에서 사설 LAN의 호스트에 대한 보안 셸(SSH) 접근 허용[16]
  • 인터넷에서 사설 LAN의 호스트에 대한 FTP 접근 허용[16]
  • 사설 LAN 내에서 공개 게임 서버 실행[16]


관리자는 게이트웨이 운영 체제에서 포트 포워딩을 설정한다. 리눅스에서는 iptables나 netfilter를 사용하고, BSD 및 macOS에서는 Yosemite(10.10.X) 이전에는 Ipfirewall(ipfw), 이후에는 Packet Filter(pf)를 사용한다.

범용 플러그 앤 플레이(UPnP) 프로토콜을 사용하면, 인터넷 게이트웨이 장치 프로토콜(IGD)을 통해 가정용 인터넷 게이트웨이에서 자동으로 포트 포워딩을 설정할 수 있다.

3. 종류

포트 포워딩은 다음과 같이 분류할 수 있다.[17][4]


  • 로컬 포트 포워딩: 로컬 컴퓨터에서 다른 서버로 연결할 수 있게 해주는 가장 일반적인 유형이다.
  • 원격 포트 포워딩: 보안 셸(SSH) 연결의 서버 측 애플리케이션이 SSH 클라이언트 측에 있는 서비스에 접근할 수 있도록 한다.
  • 동적 포트 포워딩: 방화벽이나 NAT를 통과하는 주문형 방식이다.

3. 1. 로컬 포트 포워딩

로컬 포트 포워딩은 사용자가 로컬 컴퓨터에서 다른 서버로 연결할 수 있게 해주는 가장 일반적인 유형의 포트 포워딩이다.[5] 보안 셸(SSH) 클라이언트와 동일한 컴퓨터에서 실행되는 다른 클라이언트 애플리케이션에서 데이터를 안전하게 전달하며,[5] 특정 웹 페이지를 차단하는 방화벽을 우회할 수 있게 해준다.[5]

SSH 클라이언트 연결은 SSH 서버를 통해 의도된 대상 서버로 전달된다. SSH 서버는 지정된 포트(SSH 클라이언트를 실행하는 호스트에 로컬)에서 일부 지정된 대상 호스트 및 포트로의 보안 터널을 통해 데이터를 리디렉션하도록 구성된다. 로컬 포트는 SSH 클라이언트와 동일한 컴퓨터에 있으며, 이 포트가 "전달된 포트"이다. 동일한 컴퓨터에서 동일한 대상 호스트 및 포트에 연결하려는 모든 클라이언트는 (대상 호스트 및 포트로 직접 연결하는 대신) 전달된 포트에 연결하도록 구성할 수 있다. 이 연결이 설정된 후 SSH 클라이언트는 전달된 포트에서 수신 대기하고 애플리케이션이 해당 포트로 보낸 모든 데이터를 보안 터널을 통해 SSH 서버로 보낸다. 서버는 데이터를 해독한 다음 대상 호스트 및 포트로 리디렉션한다.[6]

로컬 포트 포워딩의 사용 사례는 다음과 같다.

  • 로컬 포트 포워딩을 사용하여 메일을 받는 경우[7]
  • SSH 터널을 사용하여 랩톱에서 웹사이트에 연결하는 경우[7]

3. 2. 원격 포트 포워딩

원격 포트 포워딩은 보안 셸(SSH) 연결의 서버 측 애플리케이션이 SSH 클라이언트 측에 있는 서비스에 접근할 수 있도록 하는 기능이다.[8] SSH 외에도 동일한 목적으로 원격 포트 포워딩을 활용하는 독점적인 터널링 방식이 있다.[9] 즉, 원격 포트 포워딩을 통해 사용자는 SSH 또는 다른 터널의 서버 측에서 터널의 클라이언트 측에 있는 원격 네트워크 서비스에 연결할 수 있다.

원격 포트 포워딩을 사용하려면 대상 서버(터널의 클라이언트 측)의 주소와 두 개의 포트 번호를 알아야 한다. 선택하는 포트 번호는 사용할 애플리케이션에 따라 다르다.

원격 포트 포워딩을 통해 다른 컴퓨터가 원격 서버에서 호스팅되는 애플리케이션에 접근할 수 있다. 다음은 두 가지 예시이다.

  • 회사의 직원이 자신의 집에서 FTP 서버를 호스팅하고 직장 컴퓨터를 사용하는 직원에게 FTP 서비스에 대한 접근 권한을 부여하려는 경우, 직원은 FTP 서버의 주소를 포함하고 FTP에 적절한 포트 번호(표준 FTP 포트는 TCP/21)를 사용하여 회사 내부 컴퓨터에서 SSH를 통해 원격 포트 포워딩을 설정할 수 있다.[10]
  • 원격 데스크톱 세션 열기는 원격 포트 포워딩의 일반적인 사용 사례이다. SSH를 통해 가상 네트워크 컴퓨팅 포트(5900)를 열고 대상 컴퓨터의 주소를 포함하여 이를 수행할 수 있다.[6]

3. 3. 동적 포트 포워딩

동적 포트 포워딩(DPF)은 방화벽 핀홀을 사용하여 방화벽이나 NAT를 통과하는 주문형 방식이다.[12] SSH와 같은 로컬 애플리케이션을 SOCKS 프록시 서버로 설정하여 구현할 수 있으며, 이를 통해 네트워크나 인터넷을 통해 데이터 전송을 처리할 수 있다.

웹 브라우저와 같은 프로그램은 프록시를 통해 트래픽을 전달하도록 개별적으로 구성해야 하며, 프록시는 다른 서버로 가는 보안 터널 역할을 한다. 프록시가 더 이상 필요하지 않으면 프로그램을 원래 설정으로 다시 구성해야 한다. DPF는 수동으로 설정해야 하기 때문에 자주 사용되지는 않는다.[6]

연결이 설정되면 DPF를 사용하여 신뢰할 수 없는 네트워크에 연결된 사용자의 보안을 강화할 수 있다. 데이터는 원래 대상으로 전달되기 전에 보안 터널을 통해 다른 서버를 통과해야 하므로, 사용자는 LAN에서 발생할 수 있는 패킷 스니핑으로부터 보호된다.[13]

DPF는 다양한 용도로 사용되는 강력한 도구이다. 예를 들어, 커피숍, 호텔 또는 최소한의 보안 네트워크를 통해 인터넷에 연결된 사용자는 DPF를 사용하여 데이터를 보호할 수 있다. DPF는 또한 회사 네트워크에서 외부 웹사이트에 대한 접근을 제한하는 방화벽을 우회하는 데에도 사용할 수 있다.

4. 작동 원리

포트 포워딩은 인터넷과 같은 원격 네트워크의 컴퓨터가 근거리 통신망(LAN) 내에 있는 특정 컴퓨터나 서비스에 연결할 수 있도록 해주는 기술이다.[3]

일반적인 가정 환경에서, 컴퓨터들은 라우터나 네트워크 주소 변환(NAT) 기능이 있는 DSL 또는 케이블 모뎀을 통해 인터넷에 연결된다. 사설 네트워크 내의 컴퓨터들은 이더넷 스위치나 무선 LAN을 통해 서로 통신한다. NAT 장비의 외부에는 공인 IP 주소가 할당되지만, 라우터 뒤의 컴퓨터들은 각각 사설 IP 주소를 가지므로 인터넷 상의 다른 컴퓨터들에게는 보이지 않는다.

포트 포워딩을 설정할 때, 네트워크 관리자는 사설 네트워크 내 특정 컴퓨터의 서비스와 통신하기 위해 게이트웨이에서 특정 포트 번호를 할당한다. 외부 컴퓨터는 이 포트 번호와 게이트웨이 주소를 사용하여 내부 서비스와 통신한다. 예를 들어, 웹 서비스(HTTP)를 위한 포트 번호 80을 포트 포워딩하여 사설 네트워크 내 컴퓨터에서 일반적인 인터넷 서비스를 운영할 수 있다.

포트 포워딩의 일반적인 활용 예시는 다음과 같다:


  • 사설 LAN 내에서 공용 HTTP 서버 운영
  • 인터넷에서 사설 LAN 내 컴퓨터로의 보안 셸 접속 허용
  • 인터넷에서 사설 LAN 내 컴퓨터로의 FTP 접속 허용
  • 사설 LAN 내에서 공개 게임 서버 운영


관리자는 게이트웨이 운영 체제에서 포트 포워딩을 설정한다. 리눅스 커널에서는 iptables나 netfilter 커널 구성 요소의 패킷 필터 규칙을 통해 이를 설정한다. BSD 및 macOS 운영 체제는 Yosemite (OS 10.10.X) 이전에는 Ipfirewall(ipfw) 모듈에서, Yosemite 이후에는 Packet Filter(pf) 모듈에서 이를 구현한다.

게이트웨이 장치에서 사용될 때, 포트 포워드는 대상 주소와 포트를 변환하는 단일 규칙으로 구현될 수 있다. (리눅스 커널에서는 이것이 DNAT 규칙이다). 이때 소스 주소와 포트는 변경되지 않는다. 네트워크의 기본 게이트웨이가 아닌 장비에서 사용될 때는 소스 주소가 변환 장비의 주소로 변경되어야 한다. 그렇지 않으면 패킷이 변환기를 거치지 않아 연결이 실패한다.

포트 포워딩이 프록시 프로세스 (응용 프로그램 계층 방화벽, SOCKS 기반 방화벽 또는 TCP 회로 프록시)에 의해 구현될 때는 실제로 패킷이 변환되지 않고 데이터만 프록시된다. 이는 일반적으로 소스 주소(및 포트 번호)가 프록시 장비의 주소로 변경되는 결과를 낳는다.

일반적으로 하나의 사설 컴퓨터만 특정 포워딩된 포트를 한 번에 사용할 수 있지만, 시작 컴퓨터의 소스 주소에 따라 접근을 구분하도록 설정할 수도 있다.

유닉스 계열 운영 체제는 때때로 1024보다 작은 포트 번호가 root 사용자로 실행되는 소프트웨어에 의해서만 생성될 수 있는 포트 포워딩을 사용한다. 슈퍼유저 권한으로 실행 (포트를 바인딩하기 위해)하는 것은 호스트에 대한 보안 위험이 될 수 있으므로, 포트 포워딩을 사용하여 낮은 번호의 포트를 다른 높은 번호의 포트로 리디렉션하여 응용 프로그램 소프트웨어가 권한이 감소된 일반 운영 체제 사용자로 실행될 수 있도록 한다.

범용 플러그 앤 플레이(UPnP) 프로토콜은 가정용 인터넷 게이트웨이에서 포트 포워딩 설정을 자동으로 수행하는 기능을 제공한다. UPnP는 인터넷 게이트웨이가 단순 서비스 검색 프로토콜(SSDP)을 통해 사설 네트워크에서 자신의 존재를 알리는 네트워크 서비스인 인터넷 게이트웨이 장치 프로토콜(IGD)을 정의한다. 인터넷 기반 서비스를 제공하는 응용 프로그램은 이러한 게이트웨이를 찾아 UPnP IGD 프로토콜을 사용하여 게이트웨이에서 포트 번호를 예약하고, 게이트웨이가 해당 수신 인터넷 소켓으로 패킷을 전달하도록 할 수 있다.

5. 추가 정보

범용 플러그 앤 플레이(UPnP) 프로토콜은 가정용 인터넷 게이트웨이에서 포트 포워딩 설정을 자동으로 구성하는 기능을 제공한다. UPnP는 인터넷 게이트웨이가 단순 서비스 검색 프로토콜(SSDP)을 통해 사설 네트워크에서 자신의 존재를 알리는 네트워크 서비스인 인터넷 게이트웨이 장치 프로토콜(IGD)을 정의한다. 인터넷 기반 서비스를 제공하는 응용 프로그램은 이러한 게이트웨이를 발견하고 UPnP IGD 프로토콜을 사용하여 게이트웨이에서 포트 번호를 예약하고, 게이트웨이가 해당 수신 인터넷 소켓으로 패킷을 전달하도록 할 수 있다.

유닉스 계열 운영 체제는 때때로 1024보다 작은 포트 번호가 루트(root) 사용자로 실행되는 소프트웨어에 의해서만 생성될 수 있도록 하는 포트 포워딩을 사용한다. 슈퍼유저 권한으로 실행(포트를 바인딩하기 위해)하는 것은 호스트에 대한 보안 위험이 될 수 있으므로, 포트 포워딩을 사용하여 낮은 번호의 포트를 다른 높은 번호의 포트로 리디렉션하여 응용 프로그램 소프트웨어가 권한이 감소된 일반 운영 체제 사용자로 실행될 수 있도록 한다.

참조

[1] 뉴스 Definition of: port forwarding https://web.archive.[...] PC Magazine 2008-10-11
[2] 웹사이트 Using ssh Port Forwarding to Print at Remote Locations http://www.linuxjour[...] Linux Journal 2008-10-11
[3] 웹사이트 How to set up a home web server https://web.archive.[...] Red Hat 2008-10-11
[4] 웹사이트 OpenSSH Port forwarding https://help.ubuntu.[...]
[5] 웹사이트 Local and Remote Port Forwarding and the Reflection for Secure IT Client 7.1 or Higher - Tech Note 2433 http://support.attac[...] Support.attachmate.com 2012-11-09
[6] 웹사이트 SSH/OpenSSH/PortForwarding - Community Ubuntu Documentation https://help.ubuntu.[...] Help.ubuntu.com 2013-12-13
[7] 웹사이트 Example — Using Local Port Forwarding to Receive Mail (System Administration Guide: Security Services) http://docs.oracle.c[...] Docs.oracle.com
[8] 웹사이트 Tunneling with Secure Shell - Appendix A: Remote Port Forwarding http://www.vandyke.c[...] Vandyke.com 2005-06-12
[9] 웹사이트 Local versus Remote Port Forwarding https://web.archive.[...] 2014-06-08
[10] 웹사이트 FTP Port Number 21 - Port 21 TCP https://web.archive.[...] Compnetworking.about.com 2013-12-19
[11] 웹사이트 Reverse SSH Tunneling - From Start to End https://jfrog.com/co[...] 2021-08-15
[12] 웹사이트 DPF Mechanism http://pages.cs.wisc[...] Pages.cs.wisc.edu
[13] 웹사이트 SSH Dynamic Port Forwarding (Hacking Illustrated Series InfoSec Tutorial Videos) http://www.irongeek.[...] Irongeek.com
[14] 뉴스 Definition of: port forwarding https://web.archive.[...] PC 매거진 2008-10-11
[15] 웹인용 Using ssh Port Forwarding to Print at Remote Locations http://www.linuxjour[...] 리눅스 저널 2008-10-11
[16] 웹인용 How to set up a home web server https://web.archive.[...] Red Hat 2008-10-11
[17] 웹사이트 OpenSSH Port forwarding https://help.ubuntu.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com