네트워크 인터페이스를 시작할 때 경로가 생성되지 않도록 방지

네트워크 인터페이스를 시작할 때 경로가 생성되지 않도록 방지

외부 세계에서 액세스할 수 있는 가상 머신을 만들려고 합니다. 제가 사용하고 있는 서버에는 4개의 NIC 카드가 있습니다. 개인 네트워크의 NIC 카드가 호스트 운영 체제(em4)의 관리 인터페이스 역할을 하도록 하고 싶습니다. 내 브리지 장치와 인터페이스할 다른 NIC 카드 한두 개를 원합니다(em1은 br0의 슬레이브입니다). 트래픽이 브리지에서 호스트 운영 체제로 또는 그 반대로 라우팅되어서는 안 됩니다! 브리지 접근 방식을 사용하여 완전한 격리를 달성했는지 확신할 수 없으며 이에 대한 제안도 환영합니다.

호스트 네트워크 카드만 설치한 경우 라우팅 테이블은 다음과 같습니다. 보안상의 이유로 IP 주소가 변경되었으니 참고하시기 바랍니다.

[root@someserv ~]# ip route
default via 10.110.0.1 dev em4 proto dhcp metric 101 
10.110.0.0/21 dev em4 proto kernel scope link src 10.110.0.235 metric 101 

여기에서는 의사소통이 완벽하게 작동합니다. 문제는 브리지 장치를 시작할 때 시작됩니다. nmcli 옵션 "ipv4.never-default"를 설정하여 브리지 인터페이스에 기본 경로가 추가되지 않도록 했습니다. 하지만 br0을 시작한 후 DHCP를 사용하든 수동으로 할당하든 관계없이 라우팅 테이블에 다음이 표시됩니다.

[root@someserv ~]# ip route
default via 10.110.0.1 dev em4 proto dhcp metric 101
10.110.0.0/21 dev em4 proto kernel scop link src 10.110.0.235 metric 101
167.91.112.0/21 dev br0 proto kernel scrop link src 167.91.112.50 metric 425

마지막 항목은 내 회사 컴퓨터가 167.91.112.0과 동일한 네트워크에 있기 때문에 문제가 됩니다. 경로가 아무데도 가지 않고 서버를 관리할 수 없게 되므로 브리지를 시작할 때마다 경로를 삭제해야 합니다. SSH가 아닌 실제 터미널에 연결해야 하기 때문에 이는 매우 짜증나는 일입니다.

인터페이스가 이 경로를 추가하는 것을 방지하는 방법을 아는 사람이 있습니까? 또는 가상 머신용 인터페이스를 설정하는 더 좋은 방법이 있습니까? 나는 이전에 여기서 이 질문을 본 적이 있습니다(인터페이스가 실행될 때 기본 경로가 추가되는 것을 방지할 수 있나요?) 그러나 대답은 오래되었으며 Oracle Linux 7 또는 8과 확실히 관련이 없습니다.

마지막으로 제가 시도한 또 다른 아이디어는 빈 경로 파일을 만드는 것이었습니다.

[root@someserv ~]# cd /etc/sysconfig/network-scripts/
[root@someserv network-scripts]# ls -l *route*
-rwxr-xr-x. 1 root root  870 May 22  2020 ifdown-routes
-rwxr-xr-x. 1 root root 2001 May 22  2020 ifup-routes
-rw-r--r--. 1 root root    0 Aug 22 15:02 route-br0

그것도 작동하지 않습니다.

~밥

답변1

고마워요, 알렉스.

너가 확실히 맞아. 이 수정 사항은 DHCP 및 수동 구성에 적용됩니다. "man 8 networkmanager" 명령은 매우 유용합니다. 제 경우에는 방금 /etc/NetworkManager/dispatcher.d에 99-bridge-up이라는 스크립트를 만들었습니다.

[root@someserv dispatcher.d]# cat 99-bridge-up 
#!/bin/bash

if [ "$1" == "br0" ] && [ "$2" == "up" ]; then
    ip route del 167.91.112.0/21
fi

답변2

네트워크 구성의 건전성에 대해서는 언급할 수 없으므로 해결 방법에 중점을 두겠습니다.문제의 해결책은 br0을 시작한 후 경로를 삭제하는 것입니다. 그렇죠? 내 생각에는 인터페이스가 NetworkManager에 의해 제어되는 것 같습니다. 따라서 내 제안은 br0인터페이스가 온라인 상태가 될 때마다 NetworkManager가 경로를 삭제하도록 하는 것입니다 .

내부적으로 bash 스크립트를 생성해야 합니다 /etc/NetworkManager/dispatcher.d/. 이 bash 스크립트는 기본적으로 다음을 수행합니다.무엇좋다

ip route del 167.91.112.0/21 dev br0

NetworkManager 스크립트의 예가 많이 있습니다. 이것이 적어도 일시적으로 문제를 해결하는 데 도움이 되기를 바랍니다.

관련 정보