이 페이지 내용
차세대 서비스를 위한 명확한 NAPT 개요
MX-SPC3를 포함하는 차세대 서비스에서 결정론적 NAPT44 및 NAPT64 서비스를 모두 구성할 수 있습니다. 차세대 서비스 결정론적 NAPT 서비스는 알고리즘을 사용하여 목적지 포트 블록을 할당합니다.
차세대 서비스 결정론적 NAPT44 서비스는 원래 소스 IPv4 주소 및 포트가 항상 동일한 NAT 이후 IPv4 주소 및 포트 범위에 매핑되도록 하며, 주어진 변환된 외부 IPv4 주소 및 포트의 역방향 매핑이 항상 동일한 내부 IPv4 주소에 매핑되도록 합니다.
차세대 서비스 확정적 NAPT64 서비스는 원래 소스 IPv6 주소 및 포트가 항상 동일한 NAT 이후 IPv4 주소 및 포트 범위에 매핑되도록 하며, 주어진 변환된 외부 IPv4 주소 및 포트의 역방향 매핑이 항상 동일한 내부 IPv6 주소에 매핑되도록 합니다.
결정적 NAPT를 구성하는 방법에 대한 자세한 내용은 차세대 서비스를 위한 결정적 NAPT 구성을 참조하십시오.
결정론적 NAPT의 이점
IP 주소가 항상 동일한 외부 IP 주소 및 포트 범위에 매핑되고, 주어진 변환된 외부 IP 주소 및 포트의 역방향 매핑이 항상 동일한 내부 IP 주소에 매핑되므로 주소 변환 로깅이 필요하지 않습니다.
결정론적 NAPT 알고리즘 이해하기
결정론적 NAPT 구현의 효율성은 가입자 요구 사항의 분석에 달려 있습니다. 제공하는 블록 크기는 해당 NAT 규칙에 지정된 절의 from
범위에서 각 수신 가입자 주소에 사용할 수 있는 포트 수를 나타냅니다. 할당 알고리즘은 오프셋 값을 계산하여 나가는 IP 주소와 포트를 결정합니다. 역방향 알고리즘은 원래 가입자 주소를 파생하는 데 사용됩니다.
로그를 사용하지 않고 가입자를 추적하려면 ISP가 역방향 알고리즘을 사용하여 변환된 주소에서 가입자(소스) 주소를 파생해야 합니다.
다음 변수는 정방향 계산(사설 가입자 IP 주소 대 공용 IP 주소) 및 역방향 계산(공용 IP 주소 대 개인 가입자 IP 주소)에 사용됩니다.
Pr_Prefix—모든 NAT 전 IPv4 가입자 주소.
Pr_Port—모든 사전 NAT 프로토콜 포트.
Block_Size - 각 Pr_Prefix에 사용할 수 있도록 구성된 포트 수입니다.
가 0으로 구성된 경우
block-size
, 블록 크기를 계산하는 방법은 다음과 같이 계산된다.블록 크기 = int (64512 / ceil [(Nr_Addr_PR_Prefix / Nr_Addr_PU_Prefix)])
여기서 64512는 공용 IP 주소당 사용 가능한 최대 포트 범위입니다.
Base_PR_Prefix - NAT 규칙의 절에서
from
사용 가능한 첫 번째 NAT 전 IPv4 가입자 주소.Base_PU_Prefix—네트워크 주소 변환(NAT) 풀에 구성된 첫 번째 사용 가능한 사후 NAT IPv4 가입자 주소.
Pu_Port_Range_Start - 사용 가능한 첫 번째 포스트 NAT 포트입니다. 이것은 1024입니다.
Pr_Offset - NAT 규칙의 절에서 사용 가능한 첫 번째 사전 NAT IPv4 가입자 주소
from
에서 변환되는 사전 NAT IP 주소의 오프셋입니다. PR_Offset = Pr_Prefix – Base_Pr_Prefix.PR_Port_Offset - 사전 NAT IP 주소에 블록 크기를 곱한 오프셋입니다. PR_Port_Offset = Pr_Offset * Block_Size.
Pu_Prefix - 지정된 Pr_Prefix에 대한 NAT 후 주소입니다.
Pu_Start_Port—주어진 Pr_Prefix의 플로우에 대한 NAT 이후 시작 포트
Pu_Actual_Port—역방향 흐름에 표시된 NAT 이후의 포트.
Nr_Addr_PR_Prefix — NAT 규칙의 절에서
from
사용 가능한 NAT 이전 IPv4 가입자 주소 수입니다.Nr_Addr_PU_Prefix — NAT 풀에 구성된 사용 가능한 NAT 이후 IPv4 주소 수입니다.
Rounded_Port_Range_Per_IP — 각 NAT 이후 IP 주소에 사용할 수 있는 포트 수입니다. Rounded_Port_Range_Per_IP = ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)] * Block_Size.
Pu_Offset—사용 가능한 첫 번째 NAT 후 주소에서 NAT 이후 IP 주소의 오프셋입니다. Pu_Offset = Pu_Prefix – Base_Pu_Prefix.
Pu_Port_Offset - 1024에서 NAT 이후 포트의 오프셋은 NAT 이후 IP 주소의 오프셋 및 각 NAT 이후 IP 주소에 사용할 수 있는 포트 수의 곱에 추가됩니다. Pu_Port_Offset = (Pu_Offset * Rounded_Port_Range_Per_IP) + (Pu_Actual_Port – Pu_Port_Range_Start).
알고리즘 사용–다음 구성을 가정합니다.
services { nat { source { pool src-pool { address 203.0.113.0/16; port { automatic { random-allocation; } deterministic { block-size 249; host address 10.1.0.1/16; } } } rule-set set1 { rule det-nat { match-direction input; match { source-address 10.1.0.0/16; } then { source-nat { pool src-pool; } } } } } } }
순방향 변환
-
Pr_Offset =Pr_Prefix – Base_Pr_Prefix – 개인 IP 풀의 간격
메모:개인 IP 풀이 연속되지 않은 여러 풀로 구성된 경우 Pr_Offset는 풀의 개인 IP만 계산해야 합니다. 따라서 다음의 합계입니다.
-
IP가 속하는 풀 내의 오프셋입니다.
-
IP가 낮은 풀의 크기입니다.
-
Pr_Port_Offset = Pr_Offset * Block_Size
Rounded_Port_Range_Per_IP = ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)] * Block_Size
Pu_Prefix = Base_Public_Prefix + 층(Pr_Port_Offset / Rounded_Port_Range_Per_IP)
메모:공용 IP 풀이 연속되지 않은 여러 풀로 구성된 경우 Pu_Offset는 풀의 공용 IP만 계산해야 합니다. 따라서 합계는 다음과 같아야 합니다.
-
값이
floor(Pr_Port_Offset / Rounded_Port_Range_Per_IP)
의 크기first Public IP pool
보다 크면 값에서 이 첫 번째 풀의 크기를 뺍니다. 그런 다음 두 번째 풀 크기를 고려합니다. -
값이 n번째 풀보다 작아질 때까지 이 과정을 반복합니다.
-
Pu_Start_Port = Pu_Port_Range_Start + (Pr_Port_Offset % Rounded_Port_Range_Per_IP)
샘플 구성을 사용하고 10.1.1.250:5000에서 소싱된 가입자 플로우를 가정합니다.
Pr_Offset = 10.1.1.250 – 10.1.0.1 = 505
Pr_Port_Offset = 505 * 249 = 125,745
Rounded_Port_Range_Per_IP = ceil[(65, 533/254)] * 249 = 259 * 249 = 64,491
Pu_Prefix = 203.0.113.1 + 층(125,745 /64,491) = 203.0.113.1 +1 = 203.0.113.2
Pu_Start_Port = 1,024 + (125,745 % 64,491) = 62278
10.1.1.250은 203.0.113.2로 변환됩니다.
시작 포트는 62278입니다. 구성된 블록 크기에 따라 가입자가 사용할 수 있는 포트는 249개입니다. 사용 가능한 포트 범위는 포트 62278에서 62526(포함)까지입니다.
특정 플로우 10.1.1.250:5000은 임의 할당이 지정되었기 때문에 해당 범위의 포트 중 하나를 임의로 할당합니다.
역변환
-
Pr_Offset =Pr_Prefix – Base_Pr_Prefix – 개인 IP 풀의 간격
메모:개인 IP 풀이 연속되지 않은 여러 풀로 구성된 경우 Pr_Offset는 풀의 개인 IP만 계산해야 합니다. 따라서 다음의 합계입니다.
-
IP가 속하는 풀 내의 오프셋입니다.
-
IP가 낮은 풀의 크기입니다.
-
Pu_Port_Offset = (Pu_Offset * Rounded_Port_Range_Per_IP) + (Pu_Actual_Port – Pu_Port_Range_Start)
Subscriber_IP = Base_Pr_Prefix + 층(Pu_Port_Offset / Block_Size)
역 번역은 다음과 같이 결정됩니다. 흐름이 203.0.113.2:62278로 돌아간다고 가정합니다.
Pu_Offset = 203.0.113.2 – 203.0.113.1 = 1
Pu_Port_Offset = (1 * 64,491) + (62,280 - 1024) = 125,747
Subscriber_IP = 10.1.0.1 + floor(125,747 / 249) = 10.1.0.1 + 505 = 10.1.1.250
메모:역변환에서는 사용 중인 원래 포트가 아닌 원래 사설 IP 주소만 파생될 수 있습니다. 이는 법 집행 요구 사항에 대해 충분히 세분화되어 있습니다.
결정적 NAPT를 구성한 경우, 및 show services nat deterministic-nat nat-port-block
명령을 사용하여 show services nat deterministic-nat internal-host
정방향 및 역방향 매핑을 표시할 수 있습니다. 그러나 NAT 규칙에 대한 결정론적 포트 블록 할당 블록 크기 또는 절을 from
재구성하면 매핑이 변경됩니다. 매핑에 대한 기록 정보를 제공하려면 이전 구성에 대한 특정 매핑을 표시할 수 있는 스크립트를 작성하는 것이 좋습니다.
결정론적 NAPT 제한
결정론적 NAPT를 구성할 때는 다음 사항에 유의해야 합니다.
IPv6 결정적 NAT64 호스트 주소 구성의 경우 IPv6 호스트 접두사의 마지막 32비트(4바이트) 변경을 지원합니다. 즉, IPv6 주소에 대해 /96 접두사 마스크만 구성할 수 있으며, 이는 하나의 IPv6 접두사에 대해 최대 주소 번호 232 를 지원합니다. 호스트 주소는 구성 계층에 지정됩니다
[services nat source pool p1 port deterministic host]
.일반적으로 host-range의 주소 수는 pool의 주소 수보다 커야 합니다.
-
모범 사례:
일부 호스트는 포트 블록 리소스를 성공적으로 수신하지 못할 수 있으므로 호스트 주소 번호가 총 포트 블록 리소스 수를 초과하도록 구성하지 않는 것이 좋습니다.
결정적 네트워크 주소 변환(NAT)의 최소 블록 크기는 1입니다. 더 작은 블록 크기를 구성하면 커밋이 실패합니다. 블록 크기를 0으로 설정하면 호스트 번호와 변환된 주소 번호를 기준으로 블록 크기가 자동으로 계산됩니다. 계산된 블록 크기가 1보다 작으면 커밋이 실패합니다.
그러나 차세대 서비스 결정론적 NAPT의 경우 호스트 주소 또는 주소 이름 목록의 NAT 풀에서 IPv4 및 IPv6 호스트 주소를 함께 구성할 수 있습니다. 총 호스트 접두사 수는 1000을 초과할 수 없습니다.
호스트 주소록 이름에는 주소 범위 또는 DNS 이름을 구성할 수 없습니다.
구성된 호스트 주소 접두사와 호스트 주소록 이름은 해당 접두사가 겹치는 경우 함께 병합됩니다. 작동 명령을 사용하여
show services nat source deterministic
병합된 접두사를 표시할 수 있습니다.-
모범 사례:
동일한 결정론적 네트워크 주소 변환(NAT) 풀이 여러 규칙에 걸쳐 사용되는 경우, 가입자 호스트 주소를 소스 주소 접두사와 일치하는 여러 규칙과 일관되게 유지하는 것이 좋습니다. 그렇지 않으면 NAT 풀에 구성되지 않은 호스트의 트래픽이 NAT 규칙과 일치하더라도 포트를 성공적으로 할당하지 못할 수 있습니다.
차세대 서비스 NAPT 서비스의 경우, 구성된 총 호스트 주소 수는 사용 가능한 결정론적 네트워크 주소 변환(NAT) 포트 블록보다 크거나 같아야 합니다.