목차/11. Policy Based Routing과 NAT Pool

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에 도착하면 게이트웨이는 다음 순서로 동작합니다.

  1. 설정된 priority(우선순위) 순서대로 PBR Rule들을 훑으며 매칭을 찾습니다.
  2. 매칭이 있으면 — 그 규칙이 지시하는 대로 패킷을 전달합니다.
  3. PBR 정책에 매칭이 없으면 — 라우팅 테이블의 일반 정적·동적 경로에 따라 패킷을 전달합니다.

추가 정보는 sk67135를 참고하세요.

PBR 구성은 큰 틀에서 두 가지를 만드는 일입니다.

  1. Action Table(액션 테이블) — 목적지 네트워크로 가는 정적 경로를 담는 테이블을 구성합니다.
  2. Policy Rule(정책 규칙) — 매칭 기준 묶음마다 우선순위와 라우팅 동작을 정합니다.

Gaia Portal에서 PBR 구성하기

정적 경로를 담은 Action Table 추가

먼저 경로를 담을 테이블을 만듭니다.

  1. 왼쪽 탐색 트리에서 Advanced Routing > Policy Based Routing 을 클릭합니다.
  2. Action Tables 섹션에서 Add 를 클릭합니다.
  3. 경로 파라미터를 구성합니다.
파라미터설명
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 주소로 지정하기

  1. Add Gateway 를 클릭하고 IP Address 를 선택합니다.
  2. Gateway Address 필드에 다음 홉 게이트웨이의 IPv4 주소를 입력합니다.
  3. Priority 필드에 이 PBR 테이블 안에서 이 정적 경로에 대한 다음 홉 게이트웨이의 우선순위를 입력합니다(Range: 1-8, Default: 1).
  4. Monitored IPs 섹션에서 도달성(reachability)을 감시할 IP 주소 들을 선택합니다(자세한 내용은 "IP Reachability Detection" 195쪽).
  5. Force Interface Symmetry 옵션은 비대칭(asymmetric) 트래픽을 쓰는 IP의 도달성 보고를 무시할지 를 제어합니다. ICMP Echo 패킷이 같은 인터페이스로 송신·수신돼야 유효한 원격 감시 비콘으로 인정됩니다(Range: Selected/Cleared, Default: Cleared).
  6. Monitored IP Fail Condition 필드에서 조건을 고릅니다.
조건동작
Fail All감시 IP가 전부 도달 불가가 되면 다음 홉 게이트웨이를 fail 처리합니다. 하나라도 다시 도달되면 복구합니다.
Fail Any감시 IP 중 하나라도 도달 불가가 되면 fail 처리합니다. 전부 다시 도달되면 복구합니다. (Default: Fail Any)
  1. OK 를 클릭합니다.

다음 홉 게이트웨이를 인터페이스로 지정하기

  1. Add Gateway 를 클릭하고 Network Interfaces 를 선택합니다.
  2. Gateway Interface 필드에서 사용할 인터페이스를 고릅니다.
  3. Priority 필드에 이 정적 경로의 우선순위를 입력합니다(Range: 1-8, Default: 1).
  4. OK 를 클릭합니다.

몇 가지 알아 둘 점이 있습니다.

  • 다음 홉 게이트웨이는 여러 개 구성할 수 있습니다.
  • PBR용 Multihop ping 은 ICMP Echo Request로 여러 홉 떨어진 IP의 도달성 을 감시하고, 그 결과에 따라 연결된 PBR 다음 홉의 상태를 갱신합니다. 해당 IP가 도달 불가면 PBR 다음 홉 상태가 ="down"== 으로 바뀝니다.

마지막으로 Save 를 클릭합니다.

정적 경로 Action Table 삭제

  1. Advanced Routing > Policy Based Routing 을 클릭합니다.
  2. Action Tables 섹션에서 테이블을 선택합니다.
  3. Delete 를 클릭합니다.

Policy Rule 추가

  1. Advanced Routing > Policy Based Routing 을 클릭합니다.
  2. Policy Rules 섹션에서 Add 를 클릭합니다.
  3. Priority 필드에 이 규칙의 우선순위를 입력합니다.

Priority는 주어진 패킷에 대해 규칙이 평가되는 순서 를 정합니다. 처음으로 매칭되는 규칙에서 평가가 멈추고, 그 규칙의 동작만 수행됩니다. Priority 1이 가장 높고 priority 2보다 먼저 평가되며, 그 식으로 이어집니다. Priority 32766·32767은 main 정적 라우팅 테이블용으로 예약 되어 있고, 32767보다 큰 우선순위의 규칙은 main 라우팅 테이블 이후 에 라우팅됩니다.

  1. Action 섹션에서, 지정한 기준에 매칭되는 트래픽에 적용할 동작을 고릅니다.
Action동작
Prohibit패킷을 버리고 보낸 쪽에 Prohibit 메시지를 보냅니다.
Unreachable패킷을 버리고 보낸 쪽에 Unreachable 메시지를 보냅니다.
Table선택한 정적 경로 Action Table의 경로대로 패킷을 전달합니다.
  1. 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 참고).
  1. Save 를 클릭합니다.

Policy Rule 삭제

  1. Advanced Routing > Policy Based Routing 을 클릭합니다.
  2. Policy Rules 섹션에서 규칙을 선택합니다.
  3. Delete 를 클릭합니다.

고급 옵션 구성

  1. Advanced Routing > Policy Based Routing 을 클릭합니다.
  2. Advanced Options 섹션의 PBR Route Lookup 옵션은 PBR 규칙 때문에 같은 패킷이 게이트웨이를 일부러 두 번 이상 통과하게 할지 를 제어합니다. 사용 조건은 다음과 같습니다.
    • 최소 하나 이상의 Policy Rule 이 있어야 합니다.
    • SecureXL이 켜져 있어야 합니다(기본값으로 켜져 있음).
  3. 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 on

Policy 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-tablemain 라우팅 테이블의 정적 경로를 사용합니다.
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}
파라미터설명
0PBR Route Lookup을 끕니다.
1PBR 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 summary

Expert mode에서 — VSX 모드라면 먼저 vsenv로 컨텍스트를 바꾼 뒤 조회합니다.

vsenv <VSID>

ip table show <1-255>
ip route show table <1-255>
ip rule show

NAT 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 만들기

  1. 왼쪽 탐색 트리에서 Advanced Routing > NAT Pools 를 클릭합니다.
  2. NAT Pools 섹션에서 Add 를 클릭하고 IPv4 또는 IPv6 를 선택합니다.
  3. 출발지 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 명령 출력 에 나타납니다.

  1. Save 를 클릭합니다.
  2. 이 NAT Pool을 해당 동적 라우팅 프로토콜로 redistribute 합니다("Configuring Route Redistribution in Gaia Portal" 474쪽 참고).

기존 NAT Pool 편집

  1. Advanced Routing > NAT Pools 를 클릭합니다.
  2. NAT Pools 섹션에서 해당 NAT Pool을 선택합니다.
  3. Edit 를 클릭합니다.
  4. 설정을 바꿉니다.
  5. Save 를 클릭합니다.

기존 NAT Pool 삭제

  1. 먼저 이 NAT Pool을 Route Redistribution 구성에서 제거 합니다("Configuring Route Redistribution in Gaia Portal" 474쪽 참고).
  2. Advanced Routing > NAT Pools 를 클릭합니다.
  3. NAT Pools 섹션에서 NAT Pool을 선택합니다.
  4. Delete 를 클릭합니다.

Gaia Clish에서 NAT Pool 구성하기

후보 명령과 현재 구성은 이렇게 확인합니다.

set nat-pool[Esc][Esc]          # NAT Pool의 set 명령 보기
show configuration nat-pool     # 구성된 NAT Pool 보기

작업은 세 단계 로 진행합니다(Action plan).

  1. 해당 NAT Pool을 구성합니다(아래 Syntax 참고).
  2. 해당 NAT Pool을 동적 라우팅 프로토콜로 redistribute 합니다.
    • "Configuring IPv4 Route Redistribution in Gaia Clish" 488쪽
    • "Configuring IPv6 Route Redistribution in Gaia Clish" 524쪽
  3. 해당 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