8.9. 네트워크 RHEL 시스템 역할을 사용하여 특정 서브넷에서 다른 기본 게이트웨이로 트래픽을 라우팅
정책 기반 라우팅을 사용하여 특정 서브넷의 트래픽에 대해 다른 기본 게이트웨이를 구성할 수 있습니다. 예를 들어 기본적으로 기본 경로를 사용하여 모든 트래픽을 인터넷 공급자 A로 라우팅하는 라우터로 RHEL을 구성할 수 있습니다. 그러나 내부 워크스테이션 서브넷에서 수신된 트래픽은 공급자 B로 라우팅됩니다.
RHEL 네트워크 시스템 역할을 사용하여 원격으로 및 여러 노드에 정책 기반 라우팅을 구성할 수 있습니다. Ansible 제어 노드에서 다음 프로세스를 수행합니다.
이 절차에서는 다음과 같은 네트워크 토폴로지를 가정합니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되었습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리형 노드에 연결하는 데 사용하는 계정에는 해당 노드에 대한
sudo권한이 있습니다. - 이 플레이북을 실행하려는 관리형 노드 또는 관리형 노드 그룹은 Ansible 인벤토리 파일에 나열됩니다.
-
관리 노드는
NetworkManager및firewalld서비스를 사용합니다. 구성하려는 관리형 노드에는 네 가지 네트워크 인터페이스가 있습니다.
-
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네트워크 인터페이스에 할당합니다.
절차
다음과 같은 내용으로 플레이북 파일(예:
~/pbr.yml)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 플레이북 구문을 확인합니다.
ansible-playbook ~/pbr.yml --syntax-check
# ansible-playbook ~/pbr.yml --syntax-checkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/pbr.yml
# ansible-playbook ~/pbr.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
내부 워크스테이션 서브넷의 RHEL 호스트에서 다음을 수행합니다.
traceroute패키지를 설치합니다.dnf install traceroute
# dnf install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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 ...
# 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 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 출력은 라우터가 공급자 B의 네트워크인
192.0.2.1을 통해 패킷을 전송함을 표시합니다.
서버 서브넷의 RHEL 호스트에서 다음을 수행합니다.
traceroute패키지를 설치합니다.dnf install traceroute
# dnf install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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 ...
# 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 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 출력은 라우터가 공급자 A의 네트워크인
198.51.100.2를 통해 패킷을 전송함을 표시합니다.
RHEL 시스템 역할을 사용하여 구성한 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
# 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 defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 기본적으로 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
# 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 102Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인터페이스 및 방화벽 영역을 표시합니다.
firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0
# firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 외부영역에 masquerading이 활성화되었는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow