11Policy Based Routing과 NAT PoolPolicy Based Routing과 NAT Pool
보통 라우팅은 목적지 IP만 보고 경로를 정 합니다. 하지만 때로는 출발지·서비스·들어온 인터페이스 같은 다른 기준으로 경로를 바꾸 고 싶습니다 — 그것이 Policy Based Routing(PBR) 입니다. 이 장은 PBR을 Gaia Portal과 Gaia Clish에서 구성하고, 규칙을 짓고, 모니터링하는 모든 절차 를 빠짐없이 풀어 쓰고, 이어서 NAT된 외부 주소 대역을 라우팅 프로토콜로 알리는 NAT Pool 까지 다룹니다.
Policy Based Routing
정적·동적 라우팅에 더해, 트래픽을 정책으로 제어하고 싶을 때 PBR 을 씁니다. 핵심은 우선순위입니다. PBR Policy Rule은 라우팅 테이블의 정적·동적 경로보다 우선 적용 됩니다.
패킷이 Gaia Security Gateway에 도착하면 게이트웨이는 다음 순서로 동작합니다.
- 설정된 priority(우선순위) 순서대로 PBR Rule들을 훑으며 매칭을 찾습니다.
- 매칭이 있으면 — 그 규칙이 지시하는 대로 패킷을 전달합니다.
- PBR 정책에 매칭이 없으면 — 라우팅 테이블의 일반 정적·동적 경로에 따라 패킷을 전달합니다.
추가 정보는 sk67135를 참고하세요.
PBR 구성은 큰 틀에서 두 가지를 만드는 일입니다.
- Action Table(액션 테이블) — 목적지 네트워크로 가는 정적 경로를 담는 테이블을 구성합니다.
- Policy Rule(정책 규칙) — 매칭 기준 묶음마다 우선순위와 라우팅 동작을 정합니다.
Gaia Portal에서 PBR 구성하기
정적 경로를 담은 Action Table 추가
먼저 경로를 담을 테이블을 만듭니다.
- 왼쪽 탐색 트리에서 Advanced Routing > Policy Based Routing 을 클릭합니다.
- Action Tables 섹션에서 Add 를 클릭합니다.
- 경로 파라미터를 구성합니다.
| 파라미터 | 설명 |
|---|---|
| Table Name | 정책 테이블 이름. 1~64자 영숫자이며 첫 글자는 반드시 문자 여야 합니다. |
| Table ID | 시스템이 자동 할당합니다. |
| Default Route | (선택) 이 경로를 기본 경로로 만들지 제어합니다. |
| Destination | 목적지 IPv4 주소. |
| Subnet mask | 목적지 IPv4 서브넷 마스크. |
| Next Hop Type | 다음 홉의 종류(아래 표). |
Next Hop Type 은 세 가지 중 하나입니다.
| Next Hop Type | 동작 |
|---|---|
| Normal | 패킷을 받아 전달합니다(정상 라우팅). |
| Reject | 패킷을 버리고, 보낸 쪽에 ICMP Unreachable 메시지 를 보냅니다. |
| Black Hole | 패킷을 아무 알림 없이 조용히 버립니다. |
Next Hop Type 이 "Normal" 이면, 다음 홉 게이트웨이를 정해야 합니다. 방법은 두 가지입니다.
다음 홉 게이트웨이를 IP 주소로 지정하기
- Add Gateway 를 클릭하고 IP Address 를 선택합니다.
- Gateway Address 필드에 다음 홉 게이트웨이의 IPv4 주소를 입력합니다.
- Priority 필드에 이 PBR 테이블 안에서 이 정적 경로에 대한 다음 홉 게이트웨이의 우선순위를 입력합니다(Range: 1-8, Default: 1).
- Monitored IPs 섹션에서 도달성(reachability)을 감시할 IP 주소 들을 선택합니다(자세한 내용은 "IP Reachability Detection" 195쪽).
- Force Interface Symmetry 옵션은 비대칭(asymmetric) 트래픽을 쓰는 IP의 도달성 보고를 무시할지 를 제어합니다. ICMP Echo 패킷이 같은 인터페이스로 송신·수신돼야 유효한 원격 감시 비콘으로 인정됩니다(Range: Selected/Cleared, Default: Cleared).
- Monitored IP Fail Condition 필드에서 조건을 고릅니다.
| 조건 | 동작 |
|---|---|
| Fail All | 감시 IP가 전부 도달 불가가 되면 다음 홉 게이트웨이를 fail 처리합니다. 하나라도 다시 도달되면 복구합니다. |
| Fail Any | 감시 IP 중 하나라도 도달 불가가 되면 fail 처리합니다. 전부 다시 도달되면 복구합니다. (Default: Fail Any) |
- OK 를 클릭합니다.
다음 홉 게이트웨이를 인터페이스로 지정하기
- Add Gateway 를 클릭하고 Network Interfaces 를 선택합니다.
- Gateway Interface 필드에서 사용할 인터페이스를 고릅니다.
- Priority 필드에 이 정적 경로의 우선순위를 입력합니다(Range: 1-8, Default: 1).
- OK 를 클릭합니다.
몇 가지 알아 둘 점이 있습니다.
- 다음 홉 게이트웨이는 여러 개 구성할 수 있습니다.
- PBR용 Multihop ping 은 ICMP Echo Request로 여러 홉 떨어진 IP의 도달성 을 감시하고, 그 결과에 따라 연결된 PBR 다음 홉의 상태를 갱신합니다. 해당 IP가 도달 불가면 PBR 다음 홉 상태가 ="down"== 으로 바뀝니다.
마지막으로 Save 를 클릭합니다.
정적 경로 Action Table 삭제
- Advanced Routing > Policy Based Routing 을 클릭합니다.
- Action Tables 섹션에서 테이블을 선택합니다.
- Delete 를 클릭합니다.
Policy Rule 추가
- Advanced Routing > Policy Based Routing 을 클릭합니다.
- Policy Rules 섹션에서 Add 를 클릭합니다.
- Priority 필드에 이 규칙의 우선순위를 입력합니다.
Priority는 주어진 패킷에 대해 규칙이 평가되는 순서 를 정합니다. 처음으로 매칭되는 규칙에서 평가가 멈추고, 그 규칙의 동작만 수행됩니다. Priority 1이 가장 높고 priority 2보다 먼저 평가되며, 그 식으로 이어집니다. Priority 32766·32767은 main 정적 라우팅 테이블용으로 예약 되어 있고, 32767보다 큰 우선순위의 규칙은 main 라우팅 테이블 이후 에 라우팅됩니다.
- Action 섹션에서, 지정한 기준에 매칭되는 트래픽에 적용할 동작을 고릅니다.
| Action | 동작 |
|---|---|
| Prohibit | 패킷을 버리고 보낸 쪽에 Prohibit 메시지를 보냅니다. |
| Unreachable | 패킷을 버리고 보낸 쪽에 Unreachable 메시지를 보냅니다. |
| Table | 선택한 정적 경로 Action Table의 경로대로 패킷을 전달합니다. |
- Match 섹션에서 해당하는 기준을 구성합니다.
| Match 기준 | 설명 |
|---|---|
| Interface | 트래픽이 게이트웨이에 도착한 인터페이스를 고릅니다. |
| Source | 출발지 IPv4 주소를 구성합니다. |
| Subnet mask | 출발지 IPv4 주소의 서브넷 마스크. |
| Destination | 목적지 IPv4 주소를 구성합니다. |
| Subnet mask | 목적지 IPv4 주소의 서브넷 마스크. |
| Service Port | 서비스 포트. 1~65535 숫자를 입력 하거나 드롭다운에서 미리 정의된 포트를 고릅니다(IANA Service Name and Port Number Registry 참고). |
| Protocol | 프로토콜. 1~255 숫자를 입력 하거나 드롭다운에서 미리 정의된 프로토콜을 고릅니다(IANA Protocol Numbers 참고). |
- Save 를 클릭합니다.
Policy Rule 삭제
- Advanced Routing > Policy Based Routing 을 클릭합니다.
- Policy Rules 섹션에서 규칙을 선택합니다.
- Delete 를 클릭합니다.
고급 옵션 구성
- Advanced Routing > Policy Based Routing 을 클릭합니다.
- Advanced Options 섹션의 PBR Route Lookup 옵션은 PBR 규칙 때문에 같은 패킷이 게이트웨이를 일부러 두 번 이상 통과하게 할지 를 제어합니다. 사용 조건은 다음과 같습니다.
- 최소 하나 이상의 Policy Rule 이 있어야 합니다.
- SecureXL이 켜져 있어야 합니다(기본값으로 켜져 있음).
- Apply 를 클릭합니다.
Gaia Clish에서 PBR 구성하기
어떤 명령이 있는지 모를 때는 명령 뒤에 [Esc][Esc] 를 눌러 후보를 펼쳐 봅니다.
set pbr[Esc][Esc] # PBR의 set 명령 보기
show pbr[Esc][Esc] # PBR의 show 명령 보기Portal과 마찬가지로, 먼저 Action Table 을, 그다음 Policy Rule 을 구성합니다.
정적 경로 Action Table 구성 — Syntax
set pbr table <Name of Table>
off
static-route {default | <Destination IPv4 Address/Mask>}
nexthop
blackhole
gateway address <IPv4 Address>
monitored-ip <IPv4 Address> {off | on}
monitored-ip-option fail-all
monitored-ip-option fail-any
monitored-ip-option force-if-symmetry {off | on}
priority <1-8>
gateway logical <Name of Interface> {off | on}
priority <1-8>
reject
off
ping {off | on}각 파라미터의 뜻은 다음과 같습니다.
| 파라미터 | 설명 | |
|---|---|---|
table <Name of Table> | PBR 테이블 이름을 구성합니다. 1~64자 영숫자, 첫 글자는 문자. | |
table <Name of Table> off | 해당 PBR 테이블을 삭제합니다. | |
| `static-route {default \ | <Destination IPv4 Address/Mask>}` | PBR 테이블에 정적 경로를 구성합니다. 하나의 PBR Policy Table은 여러 정적 경로와 각 경로의 다음 홉 목록을 담고, 테이블을 여러 개 만들 어 PBR 규칙에 연결할 수 있습니다. default는 기본 경로, <주소/마스크>는 특정 경로입니다. |
static-route {...} off | 이 정적 경로를 PBR 테이블에서 삭제합니다. | |
| `static-route {...} ping {off \ | on}` | 지정한 정적 경로의 Ping 감시 를 끄거나 켭니다. Ping은 ICMP Echo Request로 다음 홉이 살아 있는지 확인 하며, 도달 가능으로 검증된 다음 홉 게이트웨이만 커널 포워딩 테이블에 포함 됩니다. 켜면 다음 홉 중 하나 이상이 도달 가능해진 뒤에야 경로가 추가 됩니다(Range: off/on, Default: off). |
nexthop blackhole | 다음 홉을 blackhole 경로 로 만듭니다 — 알림 없이 패킷을 버립니다. | |
nexthop reject | 다음 홉을 reject 경로 로 만듭니다 — 패킷을 버리고 ICMP Unreachable 메시지를 보냅니다. | |
nexthop gateway address <IPv4 Address> | 다음 홉 게이트웨이의 IPv4 주소를 구성합니다. | |
| `monitored-ip <IPv4 Address> {off \ | on}` | 도달성을 감시할 IPv4 주소를 제거(off)·추가(on)합니다. monitored-ip 뒤에 Space와 Tab 을 누르면 구성된 IPv4 주소 후보가 보입니다. |
monitored-ip-option fail-all | 모든 감시 IP가 도달 불가 가 되면 다음 홉을 fail, 하나라도 도달 되면 복구. | |
monitored-ip-option fail-any | 하나라도 도달 불가 가 되면 fail, 전부 도달 되면 복구. | |
| `monitored-ip-option force-if-symmetry {off \ | on}` | 비대칭 트래픽 IP의 도달성 보고를 무시(off)·수용(on)합니다. ICMP Echo가 같은 인터페이스로 송수신 돼야 유효(Range: off/on, Default: off). |
| `gateway address <IPv4 Address> {off \ | on}` | PBR 테이블 정적 경로에서 다음 홉 주소를 삭제(off)·추가(on)합니다. |
priority <1-8> | 이 정적 경로에 대한 다음 홉 게이트웨이의 우선순위(Range: 1-8, Default: 1). | |
nexthop gateway logical <Name of Interface> | 다음 홉 게이트웨이로 쓸 인터페이스 이름을 구성합니다. | |
| `nexthop gateway logical <Name of Interface> {off \ | on}` | 정적 경로에서 다음 홉 인터페이스를 삭제(off)·추가(on)합니다. |
예제 — PBRtable1 이라는 Action Table을 만들고, 192.0.2.0/24 네트워크는 인터페이스 eth0 으로, 192.0.3.0/24 네트워크는 다음 홉 게이트웨이 192.168.1.1 을 통해 가도록 구성합니다.
set pbr table PBRtable1 static-route 192.0.2.0/24 nexthop gateway logical eth0 on
set pbr table PBRtable1 static-route 192.0.3.0/24 nexthop gateway address 192.168.1.1 onPolicy Rule 구성 — Syntax
set pbr rule priority <1-4294967295>
action
main-table
prohibit
table <Name of Table>
unreachable
match
[from {<IPv4 Address/Mask Length> | off}]
[to {<IPv4 Address/Mask Length> | off}]
[interface {<Name of Interface> | off}]
[port {<1-65535> | off}]
[protocol {1 | 6 | 17 | tcp | udp | icmp | off}]
off| 파라미터 | 설명 | ||||||
|---|---|---|---|---|---|---|---|
priority <1-4294967295> | 이 규칙의 우선순위. 처음 매칭되는 규칙에서 평가가 멈추고 그 동작만 수행됩니다. Priority 1이 가장 높습니다. 32766·32767은 main 정적 테이블 예약, 32767 초과는 main 테이블 이후 라우팅. Best Practice — 5000 초과 금지 (Range: 1-4294967295, Default: None). | ||||||
action main-table | main 라우팅 테이블의 정적 경로를 사용합니다. | ||||||
action prohibit | ="Communication is administratively prohibited"== ICMP 응답을 생성합니다. | ||||||
action table <Name of Table> | 지정한 PBR 테이블의 정적 경로를 사용합니다. | ||||||
action unreachable | ="Network is unreachable"== ICMP 응답을 생성합니다. | ||||||
| `match from {<IPv4 Address/Mask Length> \ | off}` | 출발지 주소·마스크. off면 모든 IPv4 주소에 매칭. | |||||
| `match to {<IPv4 Address/Mask Length> \ | off}` | 목적지 주소·마스크. off면 모든 IPv4 주소에 매칭. | |||||
| `match interface {<Name of Interface> \ | off}` | 들어온 인터페이스 이름. off면 모든 인터페이스에 매칭. | |||||
| `match port {<1-65535> \ | off}` | 목적지 포트 번호. 규칙당 포트 하나만 가능. off면 모든 포트에 매칭. | |||||
| `match protocol {1 \ | 6 \ | 17 \ | tcp \ | udp \ | icmp \ | off}` | 프로토콜. off면 모든 프로토콜에 매칭. 그 밖의 특정 프로토콜은 Gaia Portal 에서 지정합니다. |
off | 이 Policy Rule을 삭제합니다. |
예제 — 인터페이스 eth2 로 들어오면서 목적지 주소가 192.0.2.1/32 인 모든 패킷을 PBR 테이블 PBRtable1 에 따라 전달하고, 우선순위 100을 부여합니다.
set pbr rule priority 100 match to 192.0.2.1/32 interface eth2
set pbr rule priority 100 action table PBRtable1고급 옵션 구성 — PBR Route Lookup
PBR Route Lookup 옵션은 PBR 규칙 때문에 같은 패킷이 게이트웨이를 일부러 두 번 이상 통과하게 할지 를 제어합니다. 조건은 Policy Rule이 최소 하나 존재 하고 SecureXL이 켜져 있어야 한다는 것입니다(기본 켜짐).
set pbrroute sim flag {0 | 1}| 파라미터 | 설명 |
|---|---|
0 | PBR Route Lookup을 끕니다. |
1 | PBR Route Lookup을 켭니다. |
PBR 모니터링
Gaia Portal에서 — Advanced Routing > Policy Based Routing 으로 가서, 오른쪽 위 모서리의 Monitoring 을 클릭합니다.
Gaia Clish에서 — VSX 모드라면 먼저 해당 가상 장치로 컨텍스트를 바꾼 뒤 PBR 정보를 조회합니다.
set virtual-system <VSID>
show pbr tables
show pbr rules
show pbr summaryExpert mode에서 — VSX 모드라면 먼저 vsenv로 컨텍스트를 바꾼 뒤 조회합니다.
vsenv <VSID>
ip table show <1-255>
ip route show table <1-255>
ip rule showNAT Pools
NAT Pool 은 네트워크의 라우터들이 어떤 IP 주소의 도달성 정보를 학습하도록 돕는 기능입니다. NAT Pool은 경로처럼 라우팅 프로토콜을 통해 export(내보내기)가 가능 하지만, 로컬 포워딩에는 쓰이지 않 습니다. 각 NAT Pool은 목적지 prefix 하나만 가지며, 선택적으로 주석(comment)을 둘 수 있습니다.
어떤 상황에 쓰나 (Use Case)
전형적인 시나리오는 이렇습니다.
- 어떤 호스트가 Gaia Security Gateway 뒤에 있습니다.
- 그 호스트의 출발지 IP는 다른 외부 IP로 NAT(hide NAT) 됩니다.
- 그런데 이 외부 NAT 주소는 어느 로컬 네트워크에도 속하지 않 습니다.
- 네트워크의 라우터들은 그 외부(NAT된) 주소로 돌아오는 트래픽 을 라우팅할 수 있어야 합니다.
- 그래서 Gaia 관리자는 이 외부 IP를 담은 NAT Pool을 만들고, OSPF나 BGP로 그 NAT Pool을 라우터들에 redistribute 합니다.
- 이렇게 하면 라우터들이 NAT된 IP 주소의 존재를 학습 하게 됩니다.
Gaia Portal에서 NAT Pool 구성하기
새 NAT Pool 만들기
- 왼쪽 탐색 트리에서 Advanced Routing > NAT Pools 를 클릭합니다.
- NAT Pools 섹션에서 Add 를 클릭하고 IPv4 또는 IPv6 를 선택합니다.
- 출발지 IP들이 숨겨질 대상 IP 주소 를 구성합니다.
IPv4 NAT Pool 이면: - Destination 필드에 IPv4 주소를 입력합니다. - Subnet mask 필드에 IPv4 서브넷 마스크를 입력합니다. - Comment 필드에 주석 텍스트(최대 100자)를 입력합니다.
IPv6 NAT Pool 이면:
- Destination / Mask Length 필드에 IPv6 주소와 Mask Length를 입력합니다.
- Comment 필드에 주석 텍스트(최대 100자)를 입력합니다. 이 주석은 Gaia Portal과 show configuration 명령 출력 에 나타납니다.
- Save 를 클릭합니다.
- 이 NAT Pool을 해당 동적 라우팅 프로토콜로 redistribute 합니다("Configuring Route Redistribution in Gaia Portal" 474쪽 참고).
기존 NAT Pool 편집
- Advanced Routing > NAT Pools 를 클릭합니다.
- NAT Pools 섹션에서 해당 NAT Pool을 선택합니다.
- Edit 를 클릭합니다.
- 설정을 바꿉니다.
- Save 를 클릭합니다.
기존 NAT Pool 삭제
- 먼저 이 NAT Pool을 Route Redistribution 구성에서 제거 합니다("Configuring Route Redistribution in Gaia Portal" 474쪽 참고).
- Advanced Routing > NAT Pools 를 클릭합니다.
- NAT Pools 섹션에서 NAT Pool을 선택합니다.
- Delete 를 클릭합니다.
Gaia Clish에서 NAT Pool 구성하기
후보 명령과 현재 구성은 이렇게 확인합니다.
set nat-pool[Esc][Esc] # NAT Pool의 set 명령 보기
show configuration nat-pool # 구성된 NAT Pool 보기작업은 세 단계 로 진행합니다(Action plan).
- 해당 NAT Pool을 구성합니다(아래 Syntax 참고).
- 해당 NAT Pool을 동적 라우팅 프로토콜로 redistribute 합니다.
- "Configuring IPv4 Route Redistribution in Gaia Clish" 488쪽
- "Configuring IPv6 Route Redistribution in Gaia Clish" 524쪽
- 해당 NAT Pool에 매칭되는 Route Map 을 구성합니다("Configuring Route Maps in Gaia Clish" 542쪽).
Syntax
set nat-pool <IP Address/Mask>
comment "Text"
off
on| 파라미터 | 설명 |
|---|---|
<IP Address/Mask> | IPv4·IPv6용 NAT Pool을 구성합니다. 출발지 IP들이 숨겨지는 대상 IP 주소 입니다. |
comment "Text" | 기존 NAT Pool의 선택적 자유 텍스트 주석. 큰따옴표로 감싸 고, 최대 100자. 이 주석은 Gaia Portal과 show configuration 출력에 나타납니다. |
off | 기존 NAT Pool을 제거합니다. |
on | 새 NAT Pool을 추가합니다. |
NAT Pool 모니터링
Gaia Portal에서 — Advanced Routing > NAT Pools 로 가서 NAT Pools 섹션을 확인합니다.
Gaia Clish에서 — 다음 명령으로 보고, 출력 맨 위의 Codes 섹션을 참고합니다.
show route