목차/07. ISP 이중화

07ISP 이중화ISP 이중화

ISP RedundancySecurity Gateway 또는 Scalable Platform Security Group을 두 개 이상의 ISP(인터넷 서비스 제공자) 회선으로 인터넷에 연결 해, 한 회선이 끊겨도 인터넷 연결이 끊기지 않게 해 주는 기능입니다. 핵심은 게이트웨이가 ISP 링크들을 끊임없이 감시(monitor)하다가 그때그때 가장 좋은 링크를 골라 쓴다 는 데 있습니다. 이 장에서는 ISP Redundancy가 무엇이고, 어떤 배선으로 구성하며, 두 가지 동작 모드가 어떻게 다르고, 나가는·들어오는 연결이 각각 어떻게 처리되는지, 그리고 SmartConsole에서의 설정 절차부터 VPN 연동과 CLI 제어까지 빠짐없이 정리합니다.

ISP Redundancy란

ISP Redundancy는 내부망의 트래픽이 인터넷으로 나갈 때 회선 하나에만 의존하지 않도록, 여러 ISP 링크를 묶어 두는 기능입니다. 게이트웨이가 링크 상태를 살펴 살아 있는 링크 중 가장 적절한 것을 선택하므로, 한 ISP에 장애가 생겨도 서비스가 멈추지 않습니다.

전제와 범위를 먼저 짚어 두면 다음과 같습니다.

  • ISP Redundancy는 외부 인터페이스가 최소 2개 필요하며, 최대 10개까지 지원합니다. ISP 링크를 2개보다 많이(3개 이상) 구성하려면 Management Server와 Security Gateway / Scalable Platform Security Group이 모두 R81.10 이상 이어야 합니다.
  • ISP Redundancy는 기본적으로 내부 네트워크에서 시작되어 인터넷으로 나가는 트래픽 을 위한 기능입니다.

배선 — 세 가지 배치

ISP Redundancy는 회선을 게이트웨이에 어떻게 물리는가에 따라 몇 가지 배치가 가능합니다.

단일 ISP 링크 (참고용 기본 그림)

가장 단순한 형태는 ISP 한 곳에만 연결된 일반적인 배치입니다.

단일 ISP 링크 배치
단일 ISP 링크 배치

여기서 그림의 각 요소는 다음과 같습니다.

번호설명
내부 네트워크(Internal network)
Security Gateway 또는 Scalable Platform Security Group
ISP
인터넷

권장 — ISP마다 전용 물리 인터페이스 (인터페이스 2개)

두 ISP 링크에 각각 전용 물리 인터페이스를 하나씩 주는 구성 입니다.

두 ISP 링크에 전용 물리 인터페이스 두 개
두 ISP 링크에 전용 물리 인터페이스 두 개
번호설명
내부 네트워크
Security Gateway 또는 Scalable Platform Security Group
ISP A
ISP B
인터넷

외부 인터페이스 하나로 ISP 두 개 묶기

외부 인터페이스가 하나뿐 인 경우에도 ISP Redundancy를 쓸 수 있습니다. 같은 외부 인터페이스에 두 개의 서브넷 을 두는 방식입니다(Gaia의 인터페이스 Aliases 기능 사용 — 자세한 내용은 R82 Gaia Administration Guide의 Network Management > Network Interfaces > Aliases 참고).

이렇게 하면 두 ISP 링크가 같은 게이트웨이 인터페이스에 연결되지만, 서로 다른 next-hop 라우터 로 향합니다. 보통 그 사이에 스위치를 둡니다.

외부 인터페이스 하나에 ISP 두 개
외부 인터페이스 하나에 ISP 두 개
번호설명
내부 네트워크
Security Gateway 또는 Scalable Platform Security Group
스위치(Switch)
ISP A
ISP B
인터넷

두 가지 모드

ISP Redundancy의 동작 모드는 내부 클라이언트에서 인터넷으로 나가는 연결을 어떻게 처리할지 를 정합니다. 두 가지 중 하나를 고릅니다.

모드설명
Load Sharing모든 링크를 써서 연결 부하를 분산합니다. 들어오는 연결도 번갈아 처리합니다. 링크마다 상대 부하(weight) 를 줄 수 있어, 더 빠른 링크가 더 많은 부하를 맡게 할 수 있습니다. 새 연결은 링크에 무작위로 배정 되며, 한 링크가 죽으면 다른 링크가 그 부하를 떠맡습니다. 이 모드에서는 들어오는 연결도 어느 ISP 링크로든 애플리케이션 서버에 도달할 수 있는데, 게이트웨이가 DNS 요청에 두 ISP의 IP를 번갈아 응답 하기 때문입니다.
Primary/Backup한 링크(Primary)로만 연결을 처리하다가, Primary 링크가 죽으면 Backup 링크로 전환 합니다. Primary 링크가 복구되면 새 연결은 다시 Primary로 배정되고, 기존 연결은 끝날 때까지 Backup 링크에 그대로 남아 있습니다. 이 모드에서는 들어오는 연결(인터넷에서 DMZ나 내부망의 애플리케이션 서버로)도 이득을 봅니다. 게이트웨이가 연결을 시작한 바로 그 ISP 링크로 반환 패킷을 돌려보내기 때문입니다.

모드 선택 기준은 단순합니다.

나가는 연결(Outgoing Connections)

게이트웨이를 거쳐 인터넷으로 나가는 트래픽은 모드에 따라 다르게 처리됩니다.

모드설명
Load Sharing인터넷으로 나가는 트래픽이 ISP 링크들 사이에 분산 됩니다. 각 링크를 얼마나 쓸지 상대 weight 로 정할 수 있어서, 예컨대 한 링크가 더 빠르면 그 링크로 더 많은 트래픽을 보내도록 설정할 수 있습니다.
Primary/Backup나가는 트래픽이 활성 Primary 링크 를 씁니다. 이때 Hide NAT 으로 나가는 패킷의 출발지 주소를 패킷이 나가는 인터페이스의 주소로 바꿉 니다. 그러면 반환 패킷의 목적지 주소가 곧 그 링크의 주소가 되므로, 반환 패킷이 자동으로 같은 ISP 링크로 돌아옵 니다. Hide NAT 설정은 관리자가 직접 구성합니다.

들어오는 연결(Incoming Connections)

외부 사용자가 내부로 들어오는 연결 을 맺을 수 있게 하려면, 관리자가 다음을 해야 합니다.

  1. 각 애플리케이션 서버에 ISP마다 라우팅 가능한 공인 IP를 하나씩 줍니다.
  2. Static NAT 을 구성해 그 라우팅 가능한 주소를 실제 서버 주소로 변환 합니다.

서버들이 서로 다른 서비스(예: HTTP와 FTP)를 다룬다면, NAT을 활용해 공개 서버 전체에 대해 라우팅 가능한 공인 IP만 쓰게 할 수 있습니다.

외부 클라이언트는 배정된 IP 중 하나를 사용합니다. 연결을 맺으려면 클라이언트가 서버의 DNS 이름을 올바른 IP로 해석할 수 있어야 합니다.

예시 — 게이트웨이 내장 미니 DNS 서버의 역할

웹 서버 www.example.com 에는 각 ISP에서 받은 IP가 하나씩 배정되어 있습니다.

  • ISP A에서 받은 192.168.1.2
  • ISP B에서 받은 172.16.2.2

만약 ISP 링크 A가 죽으면 192.168.1.2 는 사용할 수 없게 되고, 클라이언트는 www.example.com 을 살아 있는 172.16.2.2 로 해석할 수 있어야 합니다.

이 예시를 바탕으로 들어오는 연결은 다음 순서로 맺어집니다.

  1. 인터넷의 외부 클라이언트가 www.example.com 에 접속하려고 그 URL의 IP를 묻는 DNS 쿼리 를 보냅니다. 이 DNS 쿼리는 게이트웨이에 도달합니다. 게이트웨이에는 자기 도메인에 속한 서버에 대한 Type A DNS 쿼리를 가로채도록 구성할 수 있는 내장 미니 DNS 서버 가 있습니다.
  2. ISP 링크에 속한 인터페이스로 도착한 DNS 쿼리는 게이트웨이가 가로챕 니다.
  3. 게이트웨이가 그 호스트 이름을 인식하면, 다음 중 하나로 응답합니다.
    • Primary/Backup 모드 에서는 Primary ISP 링크가 활성인 동안에는 Primary 링크에 연결된 IP만 응답합니다.
    • Load Sharing 모드 에서는 두 IP를 순서를 번갈아 가며 응답합니다.
  4. 게이트웨이가 DNS 요청을 처리할 수 없으면(예: 호스트 이름을 인식하지 못하면), 그 DNS 쿼리를 원래 목적지나 example.com 도메인의 DNS 서버로 넘깁 니다.
  5. 외부 클라이언트가 DNS 응답을 받으면 연결을 엽니다. 패킷이 게이트웨이에 도착하면, 게이트웨이는 Static NAT으로 목적지 IP 192.168.1.2 또는 172.16.2.2 를 실제 서버 IP 10.0.0.2 로 변환 합니다.
  6. 게이트웨이는 서버에서 클라이언트로 가는 반환 패킷을 연결을 시작할 때 쓴 바로 그 ISP 링크로 라우팅합니다.

Security Gateway에서 ISP Redundancy 구성하기

전체 흐름은 SmartConsole 접속 → 게이트웨이 객체 열기 → ISP Redundancy 지원 켜기 → 모드 선택 → ISP 링크 구성 → 게이트웨이를 DNS 서버로 설정 → Access Control 정책 구성 → 정책 설치 입니다.

  1. 이 게이트웨이 / Security Group을 관리하는 Security Management Server 또는 Domain Management Server 에 SmartConsole로 접속합니다.
  2. 왼쪽 탐색 패널에서 Gateways & Servers 를 클릭합니다.
  3. 해당 Security Gateway / Security Group 객체를 엽니다.
  4. Other > ISP Redundancy 를 클릭합니다.
  5. Support ISP Redundancy 를 선택합니다.
  6. 이중화 모드를 고릅니다 — Load Sharing 또는 Primary/Backup.
  7. ISP 링크를 구성합니다(최소 2개, 최대 10개). 2개보다 많이 구성하려면 Management Server와 게이트웨이 / Security Group이 모두 R81.10 이상이어야 합니다.

ISP 링크 구성 — 자동 vs 수동

먼저 ISP 데이터를 준비합니다 — 링크 속도와 next-hop IP 주소 가 필요합니다.

자동·수동 중 어느 쪽인지는 외부(External) 토폴로지 인터페이스의 개수로 갈립니다.

  • Network Management 페이지에서 Topology가 "External" 인 인터페이스가 2개 이상 이면 ISP 링크를 자동 으로 구성할 수 있습니다.
  • 그런 외부 인터페이스가 하나뿐 이면 ISP 링크를 수동 으로 구성해야 합니다.

ISP 링크 자동 구성

  1. Other > ISP Redundancy 를 클릭합니다.
  2. Set initial configuration 을 클릭합니다. ISP 링크가 자동으로 추가됩니다.
  3. Primary/Backup 모드 라면 Primary 인터페이스가 목록 맨 위에 있는지 확인합니다. 오른쪽 화살표로 순서를 바꿀 수 있습니다.
  4. OK 를 클릭합니다.

ISP 링크 수동 구성

  1. Other > ISP Redundancy 를 클릭합니다.
  2. ISP Links 영역에서 Add 를 클릭하면 ISP Link 창이 열립니다.
  3. General 탭을 클릭합니다.
  4. Name 필드에 이 링크의 이름을 원하는 텍스트로 입력합니다. 여기에 입력한 이름이 ISP Redundancy 명령(아래 "CLI로 ISP Redundancy 제어하기")에서 그대로 쓰입 니다.
  5. 이 ISP 링크에 쓸 게이트웨이 / Security Group의 Interface 를 선택합니다.
    • 외부 인터페이스가 2개 이상이면 각 ISP 링크를 서로 다른 인터페이스에 둡니다. 그중 하나가 백업 ISP로 가는 링크라면 ISP Redundancy Script를 함께 구성합니다.
    • 외부 인터페이스가 하나뿐이면 각 ISP 링크를 같은 그 인터페이스에 연결합니다.
  6. Next Hop IP Address 를 설정합니다.
    • 외부 인터페이스가 2개 이상이면 이 필드를 비워 두고 Get from routing table 을 클릭 합니다. next-hop은 기본 게이트웨이(default gateway)가 됩니다.
    • 외부 인터페이스가 하나뿐이면 각 ISP 링크를 서로 다른 next-hop 라우터로 설정합니다.
  7. Load Sharing 모드 라면 Weight 값을 입력합니다. ISP 링크 사이에 트래픽을 균등하게 나누려면 각 링크에 100% / ISP 링크 수 비율을 입력합니다.
ISP 링크 수각 링크에 입력할 weight
2개50
3개33
4개25

한 ISP 링크가 더 빠르면 그 값을 올리고 다른 링크는 내려서, 합이 항상 100이 되도록 맞춥니다. 8. Advanced 탭을 클릭합니다. 9. 링크가 살아 있는지 확인하기 위해 감시할 호스트(monitored hosts) 를 정의합니다. 해당 객체를 Selected hosts 영역에 추가합니다. 10. OK 를 클릭합니다.

게이트웨이를 DNS 서버로 설정하기

게이트웨이 또는 그 뒤의 DNS 서버가 DNS 쿼리에 응답해야 합니다. 이것이 DMZ(또는 다른 내부망) 서버의 IP를 해석해 줍니다.

각 ISP에서 공인 IP를 하나씩 받 습니다. 공인 IP를 받을 수 없으면 도메인을 등록해 DNS 서버가 인터넷에서 접근 가능하게 만듭니다.

게이트웨이는 외부 호스트가 보내는, 자기 도메인의 웹 서버에 대한 Type A DNS 쿼리를 가로챕 니다.

  • 게이트웨이가 외부 호스트를 인식하면 응답합니다.
    • Load Sharing 모드 에서는 모든 ISP 링크의 IP를 순서를 번갈아 응답합니다.
    • Primary/Backup 모드 에서는 활성 ISP 링크의 IP로 응답합니다.
  • 게이트웨이가 호스트를 인식하지 못하면 DNS 쿼리를 원래 목적지나 도메인 DNS 서버로 넘깁 니다.

DNS 서버를 활성화하는 절차는 다음과 같습니다.

  1. Other > ISP Redundancy 를 클릭합니다.
  2. Enable DNS Proxy 를 선택합니다.
  3. Configure 를 클릭합니다.
  4. DMZ 또는 웹 서버를 추가합니다. 각 서버에 ISP마다 받은 공인 IP를 하나씩 구성합니다.
  5. DNS TTL 에 초 단위 숫자를 입력합니다. 이는 각 DNS 응답의 Time To Live 를 정합니다 — 인터넷의 DNS 서버들은 이 TTL보다 오래 여러분의 DNS 데이터를 캐시할 수 없습니다.
  6. OK 를 클릭합니다.
  7. Static NAT을 구성 해 공인 IP를 실제 서버 IP로 변환합니다. 외부 클라이언트는 구성된 IP 중 하나를 사용합니다.
NameSourceDestinationVPNServices & ApplicationsActionTrackInstall On
DNS Proxy해당 소스해당 DNS 서버Anydomain_udpAcceptNonePolicy Targets

도메인을 등록하고 IP를 받으려면 다음을 합니다.

  1. 각 ISP에 도메인을 등록합니다.
  2. 도메인에 대한 DNS 쿼리에 응답할 DNS 서버의 구성된 IP를 ISP에 알려 줍니다.
  3. DMZ의 각 서버마다 ISP에서 공인 IP를 하나씩 받습니다.
  4. SmartConsole에서 Menu > Global properties 를 클릭합니다.
  5. 왼쪽 트리에서 NAT - Network Address Translation 을 클릭합니다.
  6. Manual NAT rules 영역에서 Translate destination on client side 를 선택합니다.
  7. OK 를 클릭합니다.

ISP Redundancy용 Access Control 정책 구성하기

Access Control 정책은 ISP 링크를 통한 연결을 허용해야 하며, 나가는 연결을 시작하는 네트워크 객체에 Automatic Hide NAT 을 걸어야 합니다.

  1. 내부 네트워크 객체의 속성에서 NAT > Add Automatic Address Translation Rules 를 선택합니다.
  2. Hide behind the gateway 를 선택합니다.
  3. OK 를 클릭합니다.
  4. 공개적으로 접근 가능한 서버(웹 서버, DNS 서버, DMZ 서버)에 대한 규칙을 정의합니다.
    • 게이트웨이 / Security Group이 ISP마다 공인 IP를 하나씩 가지고 있으면 Static NAT 을 정의합니다. 특정 서버에 특정 서비스를 허용합니다. 예컨대 ISP에서 들어오는 HTTP 연결은 웹 서버로, ISP에서 들어오는 DNS 연결은 DNS 서버로 도달하도록 NAT 규칙을 구성합니다.
NameOriginal SourceOriginal DestinationOriginal ServicesTranslated SourceTranslated DestinationTranslated ServicesInstall On
Incoming Web - ISP AAny웹 서버 IP를 가진 Host 객체httpS 50.50.50.2= (Original)= (Original)Policy Targets
Incoming Web - ISP BAny웹 서버 IP를 가진 Host 객체httpS 60.60.60.2= (Original)= (Original)Policy Targets
Incoming DNS - ISP AAnyDNS 서버 IP를 가진 Host 객체domain_udpS 50.50.50.3= (Original)= (Original)Policy Targets
Incoming DNS - ISP BAnyDNS 서버 IP를 가진 Host 객체domain_udpS 60.60.60.3= (Original)= (Original)Policy Targets
  • 게이트웨이뿐 아니라 공개 서버마다 ISP별 공인 IP를 가지고 있으면, 다음과 같이 NAT 규칙을 구성합니다.
    1. 각 서버에 사설 IP를 줍니다.
    2. Original Destination 에 공인 IP를 씁니다.
    3. Translated Destination 에 사설 IP를 씁니다.
    4. Original ServiceAny 를 선택합니다.

ISP Redundancy와 VPN

ISP Redundancy가 켜져 있으면 VPN 암호화 연결도 ISP 링크 장애를 넘겨 살아남 습니다. ISP Redundancy 페이지의 설정이 IPsec VPN > Link Selection 페이지의 설정보다 우선하기 때문입니다.

Check Point 피어와 VPN을 쓸 때

단계지시
1이 게이트웨이 / Security Group을 관리하는 Security Management Server 또는 Domain Management Server에 SmartConsole로 접속합니다.
2왼쪽 탐색 패널에서 Gateways & Servers 를 클릭합니다.
3해당 Security Gateway / Security Group 객체를 엽니다.
4왼쪽 탐색 트리에서 Other > ISP Redundancy 로 갑니다.
5Apply settings to VPN traffic 을 선택합니다.
6왼쪽 탐색 트리에서 IPsec VPN > Link Selection 으로 갑니다.
7Use ongoing probing 인지 확인합니다. Link redundancy mode 가 ISP Redundancy의 모드를 보여 줍니다 — Primary/Backup이면 High Availability, Load Sharing이면 Load Sharing. 이제 VPN Link Selection은 ISP Redundancy에 구성된 ISP만 probing 합니다.

서드파티 피어와 VPN을 쓸 때

VPN 피어가 Check Point 게이트웨이가 아니라면, VPN이 실패하거나 서드파티 장비가 이미 죽은 ISP 링크로 계속 암호화 트래픽을 보낼 수 있습니다.

  • 서드파티 VPN 피어가 보조(secondary) ISP 링크에서 오는 암호화 트래픽을 Check Point cluster에서 온 것으로 인식 하도록 합니다.
  • ISP Redundancy 구성을 바꿔, Check Point 전용 기술을 쓰지 않도록 합니다.
    • Use Probing — Link Selection이 다른 옵션을 쓰도록 합니다.
    • Load Sharing, Service Based Link Selection, Route based probing 옵션은 Check Point Security Gateway / Cluster / Security Group 사이에서만 동작 합니다. 이를 쓰면 게이트웨이 / Cluster 멤버 / Security Group은 서드파티 VPN 피어에 한 링크만 써서 연결하며, 가장 긴 prefix 길이와 가장 낮은 metric을 가진 링크 가 선택됩니다.

CLI로 ISP Redundancy 제어하기

ISP Redundancy의 동작은 CLI로도 제어할 수 있습니다.

ISP 링크 상태 강제 변경

fw isp_link 명령으로 ISP 링크 상태를 Up 또는 Down으로 강제할 수 있습니다. 이는 설치·배포를 테스트하거나, 게이트웨이가 링크의 실제 상태를 제대로 인식하지 못할 때(링크는 죽었는데 게이트웨이는 살아 있다고 볼 때) 올바른 상태를 강제 하는 데 씁니다.

  • Security Gateway 에서 실행할 때:
  fw isp_link <SmartConsole의 ISP 링크 이름> {up | down}
  
  • Scalable Platform Security Group 에서 실행할 때:
  g_fw isp_link <SmartConsole의 ISP 링크 이름> {up | down}
  
  • Security Management Server 에서 실행할 때(게이트웨이 객체 이름까지 지정):
  fw isp_link <Security Gateway 객체 이름> <SmartConsole의 ISP 링크 이름> {up | down}
  

자세한 내용은 R82 CLI Reference Guide의 Security Gateway Commands > fw > fw isp_link 항목을 참고하세요.

ISP Redundancy Script

게이트웨이가 시작되거나 ISP 링크 상태가 바뀌면, 게이트웨이에서 $FWDIR/bin/cpisp_update 스크립트가 실행 됩니다. 이 스크립트는 게이트웨이의 기본 경로(default route)를 바꿉 니다.