21장. 대체 경로를 정의하도록 정책 기반 라우팅 구성
기본적으로 RHEL의 커널은 라우팅 테이블을 사용하여 대상 주소를 기반으로 네트워크 패킷을 전달할 위치를 결정합니다. 정책 기반 라우팅을 사용하면 복잡한 라우팅 시나리오를 구성할 수 있습니다. 예를 들어 소스 주소, 패킷 메타데이터 또는 프로토콜과 같은 다양한 기준에 따라 패킷을 라우팅할 수 있습니다.
NetworkManager를 사용하는 시스템에서는 nmcli
유틸리티만 라우팅 규칙을 설정하고 특정 테이블에 경로를 할당하는 기능을 지원합니다.
21.1. nmcli를 사용하여 특정 서브넷에서 다른 기본 게이트웨이로 트래픽을 라우팅
정책 기반 라우팅을 사용하여 특정 서브넷의 트래픽에 대해 다른 기본 게이트웨이를 구성할 수 있습니다. 예를 들어 기본적으로 기본 경로를 사용하여 모든 트래픽을 인터넷 공급자 A로 라우팅하는 라우터로 RHEL을 구성할 수 있습니다. 그러나 내부 워크스테이션 서브넷에서 수신되는 트래픽은 공급자 B로 라우팅됩니다.
이 절차에서는 다음과 같은 네트워크 토폴로지를 가정합니다.
사전 요구 사항
-
시스템은
NetworkManager
를 사용하여 네트워크를 구성합니다(기본값). 절차에서 설정하려는 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
서비스가 활성화되어 있고 활성화됩니다.
절차
공급자 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 연결 프로필을 생성합니다. 명령은 다음 옵션을 사용합니다.-
유형
이더넷
: 연결 유형이 이더넷임을 정의합니다. -
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
는외부
영역에 할당된 인터페이스에 대해 자동으로 마스커레이딩을 활성화합니다.
-
네트워크 인터페이스를 공급자 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/0 192.0.2.2 table=5000" connection.zone external
이 명령은
ipv4.gateway
대신ipv4.routes
매개변수를 사용하여 기본 게이트웨이를 설정합니다. 이 연결은 기본값과 다른 라우팅 테이블(5000
)에 이 연결에 대한 기본 게이트웨이를 할당하는 데 필요합니다. NetworkManager는 연결이 활성화되면 이 새 라우팅 테이블을 자동으로 생성합니다.네트워크 인터페이스를 내부 워크스테이션 서브넷에 구성합니다.
# 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 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone trusted
이 명령은
ipv4.routes
매개변수를 사용하여 ID5000
이 있는 라우팅 테이블에 정적 경로를 추가합니다.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 rule add
명령과 동일합니다. 단,ipv4.routing-rules
에는 항상 우선 순위를 지정해야 합니다.네트워크 인터페이스를 서버 서브넷에 구성합니다.
# nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone trusted
검증
내부 워크스테이션 서브넷의 RHEL 호스트에서 다음을 수행합니다.
traceroute
패키지를 설치합니다.# dnf install traceroute
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
을 통해 패킷을 전송함을 표시합니다.
서버 서브넷의 RHEL 호스트에서 다음을 수행합니다.
traceroute
패키지를 설치합니다.# dnf install traceroute
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 라우터에서 다음을 수행합니다.
규칙 목록을 표시합니다.
# 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
기본적으로 RHEL에는
로컬
, 기본 및기본
테이블에 대한 규칙이 포함되어 있습니다.표
5000
에 경로를 표시 :# ip route list table 5000 0.0.0.0/0 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
인터페이스 및 방화벽 영역을 표시합니다.
# firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0
외부
영역에 masquerading이 활성화되어 있는지 확인합니다.# firewall-cmd --info-zone=external external (active) target: default icmp-block-inversion: no interfaces: enp1s0 enp7s0 sources: services: ssh ports: protocols: masquerade: yes ...
추가 리소스
-
nm-settings(5) 도움말
페이지 -
nmcli(1) 도움말
페이지 - RHEL에서 NetworkManager를 사용하여 정책 기반 라우팅을 설정할 수 있습니까?