Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

12장. 대체 경로를 정의하도록 정책 기반 라우팅 구성

기본적으로 RHEL의 커널은 라우팅 테이블을 사용하여 대상 주소를 기반으로 네트워크 패킷을 전달할 위치를 결정합니다. 정책 기반 라우팅을 사용하면 복잡한 라우팅 시나리오를 구성할 수 있습니다. 예를 들어 소스 주소, 패킷 메타데이터 또는 프로토콜과 같은 다양한 기준에 따라 패킷을 라우팅할 수 있습니다.
이 섹션에서는 NetworkManager를 사용하여 정책 기반 라우팅을 구성하는 방법을 설명합니다.
참고
NetworkManager를 사용하는 시스템에서는 nmcli 유틸리티만 라우팅 규칙을 설정하고 특정 테이블에 경로를 할당하는 기능을 지원합니다.

12.1. 특정 서브넷에서 다른 기본 게이트웨이로 트래픽 라우팅

이 섹션에서는 기본 경로를 사용하여 모든 트래픽을 인터넷 공급자 A로 라우팅하는 라우터로 RHEL을 구성하는 방법을 설명합니다. 정책 기반 라우팅을 사용하여 RHEL은 내부 워크스테이션 서브넷에서 공급자 B로 수신되는 트래픽을 라우팅합니다.
이 절차에서는 다음과 같은 네트워크 토폴로지를 가정합니다.

그림 12.1. 연결 활성화

연결 활성화

사전 요구 사항

  • 절차에서 설정하려는 RHEL 라우터에는 네 개의 네트워크 인터페이스가 있습니다.
    • enp7s0 인터페이스는 프로바이더 A의 네트워크에 연결됩니다. 프로바이더 네트워크의 게이트웨이 IP는 198.51.100.2 이고 네트워크는 /30 네트워크 마스크를 사용합니다.
    • enp1s0 인터페이스는 프로바이더 B의 네트워크에 연결됩니다. 프로바이더 네트워크의 게이트웨이 IP는 192.0.2.2 이고 네트워크는 /30 네트워크 마스크를 사용합니다.
    • enp8s0 인터페이스는 내부 워크스테이션을 사용하여 10.0.0.0/24 서브넷에 연결됩니다.
    • enp9s0 인터페이스는 회사 서버가 있는 203.0.113.0/24 서브넷에 연결됩니다.
  • 내부 워크스테이션 서브넷의 호스트는 기본 게이트웨이로 10.0.0.1 을 사용합니다. 이 절차에서는 이 IP 주소를 라우터의 enp8s0 네트워크 인터페이스에 할당합니다.
  • 서버 서브넷의 호스트는 기본 게이트웨이로 203.0.113.1 을 사용합니다. 이 절차에서는 이 IP 주소를 라우터의 enp9s0 네트워크 인터페이스에 할당합니다.
  • firewalld 서비스는 활성화되어 활성 상태이며 기본값입니다.

절차

  1. 공급자 A에 네트워크 인터페이스를 구성합니다.
    # nmcli connection add type ethernet con-name Provider-A ifname enp7s0 ipv4.method manual ipv4.addresses 198.51.100.1/30 ipv4.gateway 198.51.100.2 ipv4.dns 198.51.100.200 connection.zone external
    nmcli connection add 명령은 NetworkManager 연결 프로필을 생성합니다. 다음 목록에서는 명령의 옵션을 설명합니다.
    • ethernet 유형: 연결 유형이 이더넷임을 정의합니다.
    • con-name connection_name: 프로필의 이름을 설정합니다. 의미 있는 이름을 사용하여 혼동을 피하십시오.
    • ifname network_device: 네트워크 인터페이스를 설정합니다.
    • ipv4.method manual: 정적 IP 주소를 구성할 수 있습니다.
    • ipv4.addresses IP_address/subnet_mask: IPv4 주소 및 서브넷 마스크를 설정합니다.
    • ipv4.gateway IP_address: 기본 게이트웨이 주소를 설정합니다.
    • ipv4.dns IP_of_DNS_server: DNS 서버의 IPv4 주소를 설정합니다.
    • connection.zone firewalld_zone: 네트워크 인터페이스를 정의된 firewalld 영역에 할당합니다. firewalld 는 자동으로 외부 영역에 할당된 마스커레이딩 인터페이스를 활성화합니다.
  2. 네트워크 인터페이스를 공급자 B로 구성합니다.
    # nmcli connection add type ethernet con-name Provider-B ifname enp1s0 ipv4.method manual ipv4.addresses 192.0.2.1/30 ipv4.routes "0.0.0.0/1 192.0.2.2 table=5000, 128.0.0.0/1 192.0.2.2 table=5000" connection.zone external
    이 명령은 ipv4. gateway 대신 ipv4. routes 매개 변수를 사용하여 기본 게이트웨이를 설정합니다. 이는 이 연결에 대한 기본 게이트웨이를 기본값과 다른 라우팅 테이블(5000)에 할당하는 데 필요합니다. NetworkManager는 연결이 활성화되면 이 새 라우팅 테이블을 자동으로 생성합니다.
    참고
    nmcli 유틸리티는 ipv4.gateway 의 기본 게이트웨이로 0.0.0.0/0 사용을 지원하지 않습니다. 이 문제를 해결하기 위해 명령은 0.0.0.0/1 및 128.0.0.0/1 서브넷 모두에 대해 별도의 경로를 생성합니다. 이 서브넷은 전체 IPv4 주소 공간도 포함합니다.
  3. 네트워크 인터페이스를 내부 워크스테이션 서브넷에 구성합니다.
    # nmcli connection add type ethernet con-name Internal-Workstations ifname enp8s0 ipv4.method manual ipv4.addresses 10.0.0.1/24 ipv4.routes "10.0.0.0/24 src=192.0.2.1 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone trusted
    이 명령은 ipv4.routes 매개 변수를 사용하여 ID 5000 이 있는 라우팅 테이블에 정적 경로를 추가합니다. 10.0.0.0/24 서브넷의 정적 경로는 로컬 네트워크 인터페이스의 IP를 프로바이더 B(192.0.2.1)에 다음 홉으로사용합니다.
    또한 이 명령은 ipv4.routing-rules 매개변수를 사용하여 10.0.0.0/24 서브넷의 트래픽을 테이블 5000 으로 라우팅하는 우선 순위 5 인 라우팅 규칙을 추가합니다. 낮은 값은 우선 순위가 높습니다.
    ipv4.routing-rules 매개변수의 구문은 ip route add 명령에서와 동일합니다. 단, ipv4.routing-rules 는 항상 우선 순위를 지정해야 한다는 점을 제외하고는 다음과 같습니다.
  4. 네트워크 인터페이스를 서버 서브넷에 구성합니다.
    # nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone trusted

검증 단계

  1. 내부 워크스테이션 서브넷의 RHEL 호스트에서 다음을 수행합니다.
    1. traceroute 패키지를 설치합니다.
      # yum install traceroute
    2. traceroute 유틸리티를 사용하여 인터넷에 있는 호스트에 대한 경로를 표시합니다.
      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  10.0.0.1 (10.0.0.1)     0.337 ms  0.260 ms  0.223 ms
       2  192.0.2.1 (192.0.2.1)   0.884 ms  1.066 ms  1.248 ms
       ...
      명령의 출력에 라우터가 공급자 B의 네트워크인 192.0.2.1 에 패킷을 전송한다는 내용이 표시됩니다.
  2. 서버 서브넷의 RHEL 호스트에서 다음을 수행합니다.
    1. traceroute 패키지를 설치합니다.
      # yum install traceroute
    2. traceroute 유틸리티를 사용하여 인터넷에 있는 호스트에 대한 경로를 표시합니다.
      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  203.0.113.1 (203.0.113.1)    2.179 ms  2.073 ms  1.944 ms
       2  198.51.100.2 (198.51.100.2)  1.868 ms  1.798 ms  1.549 ms
       ...
      명령 출력에 라우터가 공급자 A의 네트워크인 198.51.100.2 를 통해 패킷을 전송한다는 내용이 표시됩니다.

문제 해결 단계

RHEL 라우터에서 다음을 수행합니다.
  1. 규칙 목록을 표시합니다.
    # ip rule list
    0:	from all lookup local
    5: from 10.0.0.0/24 lookup 5000
    32766:	from all lookup main
    32767:	from all lookup default
  2. 5000 의 경로를 표시합니다.
    # ip route list table 5000
    0.0.0.0/1 via 192.0.2.2 dev enp1s0 proto static metric 100
    10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102
    128.0.0.0/1 via 192.0.2.2 dev enp1s0 proto static metric 100
  3. 방화벽 영역에 할당되는 인터페이스를 표시합니다.
    # firewall-cmd --get-active-zones
    external
      interfaces: enp1s0 enp7s0
    trusted
      interfaces: enp8s0 enp9s0
  4. 외부 영역에 마스커레이딩이 활성화되었는지 확인합니다.
    # firewall-cmd --info-zone=external
    external (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp1s0 enp7s0
      sources:
      services: ssh
      ports:
      protocols:
      masquerade: yes
      ...

추가 리소스

  • ipv4.* 매개변수에 대한 자세한 내용은 nmcli connection add 명령에 설정하면 nm-settings(5) 도움말 페이지의 IPv4 설정 섹션을 참조하십시오.
  • 연결에 대한 자세한 내용은 nmcli connection add 명령에 설정하면 nm-settings(5) 도움말 페이지의 연결 설정 섹션을 참조하십시오.
  • nmcli 를 사용하여 NetworkManager 연결 관리에 대한 자세한 내용은 nmcli(1) 도움말 페이지의 연결 관리 명령 섹션을 참조하십시오.