| 리포트 | 기술문서 | 테크-블로그 | 글로벌 블로그 | 원샷 갤러리 | 통신 방송 통계  | 한국 ICT 기업 총람 |

제품 검색

| 네트워크/통신 뉴스 | 기술자료실 | 자유게시판 |  
 
 
섹션 5G 4G LTE C-RAN/Fronthaul Gigabit Internet IPTV/UHD IoT SDN/NFV Wi-Fi Video Streaming KT SK Telecom LG U+ OTT Network Protocol CDN YouTube Data Center
 
스폰서채널 |

 

  스폰서채널 서비스란?
NAT 장비는 이렇게 만들어야 하는데... (RFC 4787) - 2편: Filtering Behavior
NAT Behavior Requirements for Unicast UDP (RFC 4787) - Part 2: Filtering Behavior
September 16, 2013 | By 유창모 (cmyoo@netmanias.com)
코멘트 (4)
11

 NAT 문서 모두 보기 

 

지난 시간에 이어 RFC 4787의 NAT 동작에 대한 설명을 이어 나가겠습니다.

 

아래 설명에서 사용되는 용어(Internal Endpoint, External Endpoint, Outbound Traffic, Inbound Traffic 등등)는 지난 시간 블로그의 용어 정의를 참조하시기 바랍니다. 

 

 

 

2. Filtering Behavior

 

지난 시간에 설명드린 Address and Port Mapping Behavior는 Outbound Packet을 수신한 NAT가 패킷의 Destination IP와 Destination Port 값에 따라 어떻게 External Port를 변환/매핑하는지에 대한 룰이었다면, 오늘 말씀 드릴 Filtering Behavior는 Inbound Packet을 수신한 NAT가 패킷의 Source IP와 Source Port의 값(위 그림의 파란색 박스)에 따라 그 패킷을 허용(Pass, Internal Endpoint로 패킷 전달) 혹은 폐기(Drop)하는지를 결정하는  룰입니다. 

 

■ Endpoint-Independent Filtering

여기서 Endpoint는 External Endpoint를 의미합니다.

"목적지 독립적 필터링(Endpoint-Independent Filtering)"은 External Endpoint가 보내는 Inbound Packet에 대해 (1) Destination IP와 (2) Destination Port만 검사하여 패킷의 허용 여부를 판단하고, External Endpoint의 소스 정보 즉, Source IP와 Source Port는 어떤 값(Any IP & Any Port)이라도 상관하지 않습니다. 즉, Inbound Packet의 External Endpoint 정보(Source IP & Source Port)는 신경쓰지 않겠다는 것이죠.

 

[아래 그림] Host A에서 Host B로의 패킷 전송에 의해 다음과 같이 Binding Entry와 Filtering Entry가 생성 되며

  • Binding Entry: {Internal IP : Internal Port} <-> {External IP : External Port} = {10.1.1.1:5000} <-> {5.5.5.1 : 1000}
  • Filtering Entry: Allow if Inbound Packet {Any IP : Any Port} to {5.5.5.1 : 1000}
Host B나 Host C에서 Host A로 보내는 패킷(Inbound Packet)의 Destination IP/Destination Port = 5.5.5.1/1000이면 NAT는 Source IP(1.1.1.1 or 2.2.2.2)와 Source Port(80 or 8080) 값에 상관없이 이 패킷을 허용합니다.

 

 

 

■ Address-Dependent Filtering

여기서 Address는 External Endpoint의 주소(Source IP)를 의미합니다.

"주소 의존적 필터링(Address-Dependent Filtering)"은 External Endpoint가 보내는 Inbound Packet에 대해 (1) Destination IP와 (2) Destination Port 그리고 (3) Source IP를 검사하여 패킷의 허용 여부를 판단하고, Source Port는 어떤 값(Any Port)이라도 상관하지 않습니다. 즉, Internal Endpoint가 보낸 패킷의 목적지(Source IP)로부터의 패킷만 허용하겠다는 것이죠.

 

[아래 그림] Host A에서 Host B로의 패킷 전송에 의해 다음과 같이 Binding Entry와 Filtering Entry가 생성 되며

  • Binding Entry: {Internal IP : Internal Port} <-> {External IP : External Port} = {10.1.1.1:5000} <-> {5.5.5.1 : 1000}
  • Filtering Entry: Allow if Inbound Packet {1.1.1.1 : Any Port} to {5.5.5.1 : 1000}
Source IP = 1.1.1.1를 가진 Host B가 보내는 Destination IP/Destination Port = 5.5.5.1/1000 패킷은 허용하고(Source Port 값에 상관 없이), Source IP = 2.2.2.2를 가진 Host C가 보내는 패킷은 폐기합니다.

 

 

■ Address and Port-Dependent Filtering

여기서 Address와 Port는 External Endpoint의 주소와 포트(Source IP & Source Port)를 의미합니다.

"주소 및 포트 의존적 필터링(Address and Port-Dependent Filtering)"은 External Endpoint가 보내는 Inbound Packet에 대해 (1) Destination IP와 (2) Destination Port 그리고 (3) Source IP와 (4) Source Port를 검사하여 패킷의 허용 여부를 판단합니다. 

즉, Internal Endpoint가 보낸 패킷에 대한 응답 패킷(Source IP & Source Port)만 허용하겠다는 것이죠.

 

[아래 그림] Host A에서 Host B로의 패킷 전송에 의해 다음과 같이 Binding Entry와 Filtering Entry가 생성 되며

  • Binding Entry: {Internal IP : Internal Port} <-> {External IP : External Port} = {10.1.1.1:5000} <-> {5.5.5.1 : 1000}
  • Filtering Entry: Allow if Inbound Packet {1.1.1.1 : 80} to {5.5.5.1 : 1000}
Host A가 Host B로 보낸 패킷 {5.5.5.1:1000 to 1.1.1.1:80}에 대한 응답 패킷 {1.1.1.1:80 to 5.5.5.1:1000}만 허용하고, 나머지 경우는 모두 폐기합니다.

 

 

RFC 4787 권고 (REQ-8): If application transparency is most important, it is RECOMMENDED that a NAT have an "Endpoint-Independent Filtering" behavior. If a more stringent filtering behavior is most important, it is RECOMMENDED that a NAT have an "Address-Dependent Filtering" behavior

 

RFC4798에 따르면 Endpoint-Independent Filtering이나 Address-Dependent Filtering 방식의 NAT에 대해서는 ICE (Interactive Connectivity Establishment, RFC 5245)를 통해 Peer-to-Peer 통신이 가능하지만, Address and Port Dependent Mapping + Address and Port-Dependent Filtering 방식의 NAT에 대해서는 Peer-to-Peer 통신이 불가능하여 모든 트래픽이 Relay 서버(TURN 서버)를 거칠 수 밖에 없다고 합니다.

 

 

3. Hairpinning Behavior

 

동일 NAT에 속한 2대의 Internal Endpoint가 NAT를 통해 서로 통신을 하는 기능을 Hairpinning이라 합니다. 3G/LTE 망에 적용된 LSN(Large Scale NAT, 혹은 CGN(Carrier Grade NAT)라고도 함)을 통해 2대의 무선 단말이 통신(Skeyp, 카톡 보이스 등)을 하는 경우가 대표적인 예일텐데요.

Hairpinning Behavior는 2가지로 나눌 수 있습니다.

 

 External Source IP Address and Port

Host A가 Host B로 보내는 패킷(NAT가 수신하는 패킷)은 아래와 같습니다.

  • Destination IP = Host B의 External Address (5.5.5.2)
  • Destination Port = Host B의 External Port (1001)
  • Source IP = Host A의 Internal Address (10.1.1.1)
  • Source Port = Host A의 Internal Port (5000)
그리고 이를 수신한 NAT는 Binding Table을 참조하여 Host B로 아래와 같이 패킷 정보를 변경하여 전송합니다. 여기서 중요한 건 Source IP/Source Port가 External Address/Port라는 점입니다.
  • Destination IP = Host B의 Internal Address (10.1.1.2)
  • Destination Port = Host B의 Internal Port (5001)
  • Source IP = Host A의 External Address (5.5.5.1)
  • Source Port = Host A의 External Port (1000)
이 경우는 아주 바람직한 NAT Behavior 입니다. Host A(sender)가 보낸 패킷의 Destination IP/Port(5.5.5.2/1001)로 응답 패킷이 수신되므로(Source IP/Port=5.5.5.2/1001) 두 단말간 통신에 아무 문제가 없습니다.
 
아래 그림 상에 Host A의 External Address(5.5.5.1)와 Host B의 External Address(5.5.5.2)가 서로 다른 값으로 표현 되었지만 NAT의 Behavior에 따라 이 두개의 값은 같을 수도 있습니다.
 

 

■ Internal Source IP Address and Port

Host A가 Host B로 보내는 패킷(NAT가 수신하는 패킷)은 위와 동일하구요.

그리고 이를 수신한 NAT는 Binding Table을 참조하여 Host B로 아래와 같이 패킷 정보를 변경하여 전송합니다. 위와의 차이점은 Source IP/Source Port가 Internal Address/Port라는 점입니다.
  • Destination IP = Host B의 Internal Address (10.1.1.2)
  • Destination Port = Host B의 Internal Port (5001)
  • Source IP = Host A의 Internal Address (10.1.1.1)
  • Source Port = Host A의 Internal Port (5000)
이 경우 Host A(sender)가 보낸 패킷의 Destination IP/Port(5.5.5.2/1001)로 응답 패킷이 수신되지 않아(Source IP/Port=10.1.1.2/5001) 커널의 TCP/IP 스택에서 본 패킷은 폐기 될 것입니다.
 

 

RFC 4787 권고 (REQ-9): A NAT MUST support "Hairpinning"
      a) A NAT Hairpinning behavior MUST be "External source IP address and port"

 

이규백 2013-10-31 12:04:07
항상 올려주시는글에 도움받고있습니다 ^^
한가지 궁금증이 있는데요 헤어핀기능중 Internal Source IP Address and Port 내용중에 "Host A(sender)가 보낸 패킷의 Destination IP/Port(5.5.5.2/1001)로 응답 패킷이 수신되지 않아(Source IP/Port=10.1.1.2/5001) 커널의 TCP/IP 스택에서 본 패킷은 폐기 될 것입니다"라고 하셨는데 이경우 양 호스트는 10.1.1.x의 동일 랜구간인데 왜 커널 네트웍 스택에서 DROP 처리를 하는게 궁금합니다. ARP 테이블에 이미 MAC/IP 다 있을텐데요
넷매니아즈 2013-11-04 15:31:52
Host A에 응용프로그램K는 Host B와 통신을 위해 socket API를 통해 {로컬주소, 외부주소} = {10.1.1.1:5000, 5.5.5.2:1001} 연결을 하고 데이터를 송수신해야 하는데, Host A가 수신하는 패킷이 5.5.5.2:1001이 아닌 10.1.1.2:5001이므로 커널에서 해당 패킷을 응용프로그램K로 전달해 주지 않습니다.
수란 2015-11-18 18:09:15

좋은 글 잘 봤습니다~ ^^

최민우 2016-05-12 15:28:56

안녕하세요? 항상 좋은 자료 잘 보고 있습니다.

제가 헤어피닝 기술에 대해 잘 이해가 되지 않아 질문드리고자 합니다.

헤어피닝 기술은 기본적으로 NAT 장비가 A, B 호스트에 대한 Mapping을 전제로 가지고 있는 것 인가요?

어떤 상황에서 헤어피닝 기술이 요구되는 것 인지 잘 모르겠습니다...

제가 나름 구글링하고 경험을 바탕으로 생각 시나리오는 아래와 같습니다.

Client A(10.1.1.1)가 Web Server B(10.1.1.2)에 접근하는데, Web Server B의 외부 주소는 5.5.5.2 임을 가장했을 때

Client A가 Web Server B에 접근하는 NAT 시나리오에서 Hairpin NAT를 사용하는 것인가요?

 

답변 해주시면 정말 감사하겠습니다.

 

Thank you for visiting Netmanias! Please leave your comment if you have a question or suggestion.
View All (946)
5G (65) AI (5) ALTO (1) AR (2) ARP (6) AT&T (1) Akamai (5) Authentication (5) BT (1) Backhaul (2) Big Data (2) Bridging (5) C-RAN/Fronthaul (17) CDN (20) CIoT (2) CPRI (6) Carrier Aggregation (5) Charging (2) China Mobile (2) Cisco (6) CoMP (3) Comcast (1) DHCP (6) DNS (15) Data Center (15) EMM (1) EPS Bearer (7) Ethernet (3) FTTH (8) GSLB (5) Gigabit Internet (17) Google (17) Google Global Cache (8) Google TV (1) HLS (5) HTTP (5) HTTP Adaptive Streaming (7) HTTP Progressive Download (2) Handover (5) Huawei (1) IGMP (3) IP (6) IP Allocation (8) IP Routing (20) IPSec (4) IPTV (25) IoST (2) IoT (42) KT (44) Korea (8) Korea ICT Vendor (1) L3 Switch (5) LG U+ (24) LTE (99) LTE-A (10) LTE-A Pro (1) LTE-M (1) LTE-U (3) LoRa (5) MEC (4) MPLS (3) MWC 2013 (1) MWC 2015 (3) MWC 2016 (2) MWC 2017 (1) Mobile IPTV (1) Multi-Screen (1) Multicast (2) NAT (9) NB-IoT (6) NTT Docomo (1) Netflix (5) Network Protocol (49) Network Slicing (3) OSPF (3) OTT (20) Operator CDN (1) P2P (3) PS-LTE (3) Pooq (2) QoS (5) RCS (1) RRH (1) Request Routing (3) SD-WAN (8) SDN/NFV (33) SK Broadband (1) SK Telecom (37) Samsung (2) Security (8) Self-Driving (3) Shortest Path Tree (2) Small Cell (3) Spectrum Sharing (1) TAU (2) Transparent Caching (9) UHD (7) VLAN (2) VPN (3) VR (3) Video Streaming (22) VoLTE (1) VoWiFi (1) WAN Optimization (1) Wi-Fi (30) WiBro(WiMAX) (2) YouTube (16) eICIC (1) eMBMS (1) ePDG (6) u+ tv G (4) 로컬 5G (1)

 

 

     
         
     

 

     
     

넷매니아즈 회원 가입 하기

2019년 1월 현재 넷매니아즈 회원은 49,000+분입니다.

 

넷매니아즈 회원 가입을 하시면,

► 넷매니아즈 신규 컨텐츠 발행 소식 등의 정보를

   이메일 뉴스레터로 발송해드립니다.

► 넷매니아즈의 모든 컨텐츠를 pdf 파일로 다운로드

   받으실 수 있습니다. 

     
     

 

     
         
     

 

 

비밀번호 확인
코멘트 작성시 등록하신 비밀번호를 입력하여주세요.
비밀번호