두 개의 네트워크 인터페이스를 사용하여 systemd의 기본 경로 선택을 어떻게 무시할 수 있습니까?

두 개의 네트워크 인터페이스를 사용하여 systemd의 기본 경로 선택을 어떻게 무시할 수 있습니까?

업데이트: /etc/network/interfaces사용 중이므로 존재하지 않습니다.netctl소개.

두 개의 네트워크 어댑터를 사용하여 ArchLinux를 실행하는 VirtualBox 인스턴스를 설정했습니다. Adapter 1( eth0)는 NAT( 10.0.2.0/24) 에 연결되어 있고 Adapter 2( eth1)는 호스트 전용 네트워크( 192.168.56.0/24)에 연결되어 있습니다. 저는 이러한 어댑터에 udev옛날식 이름을 사용하기 위한 규칙을 사용하고 있습니다(그러나 이름에도 문제가 있습니다).eth0eth1enp***

로그인하면 다음과 같은 메시지가 나타납니다.

$ip 라우팅
기본적으로 192.168.56.1 dev eth1
기본값은 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202를 전달합니다.
10.0.2.0/24 dev eth0 프로토타입 dhcp 범위 링크 src 10.0.2.15 미터법 202
192.168.56.0/24 dev eth1 프로토타입 커널 범위 링크 src 192.168.56.31

이로 인해

$ ping google.com
ping: google.com: 알 수 없는 이름 또는 서비스

내가 이해한 바에 따르면 이는 192.168.56.1(호스트 전용 인터페이스) NAT 인터페이스보다 낮은 메트릭을 추가하기 때문입니다.

그런 다음 수동으로 수행하는 경우:

$ sudo ip 경로 삭제 기본값
$ip 라우팅
기본값은 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202를 전달합니다.
10.0.2.0/24 dev eth0 프로토타입 dhcp 범위 링크 src 10.0.2.15 미터법 202
192.168.56.0/24 dev eth1 프로토타입 커널 범위 링크 src 192.168.56.31

알겠어요

$ ping google.com
PING google.com (172.217.12.174) 56(84) 바이트의 데이터.
64바이트 from....1e100.net(172.217.12.174): icmp_seq=1 ttl=52 time=11.9 ms
64바이트 from....1e100.net(172.217.12.174): icmp_seq=2 ttl=52 time=11.7 ms
^C
--- google.com 핑 통계 ---
2개의 데이터 패킷 보내기, 2개의 데이터 패킷 수신, 0% 패킷 손실, 시간 3ms
rtt 최소/평균/최대/mdev = 11.698/11.782/11.867/0.137밀리초

eth0그렇다면 아웃바운드 트래픽이 / (호스트 네트워크만 해당) 가 아닌 / 10.0.2.0/24(호스트에 대한 NAT 인터페이스)를 통해 라우팅되도록 하려면 어떻게 해야 합니까 ?eth1192.168.56.0/24

이 질문은 VirtualBox와 아무 관련이 없습니다(메트릭을 변경할 수 있는 VirtualBox 설정이 있었다면 상관없습니다).

다음 중 하나를 수행할 수 있는 방법이 있을 것이라고 확신합니다. 1) systemd가 경로를 추가하는 것을 방지 default via 192.168.56.1 dev eth1하거나 2) default via 10.0.2.2 dev eth0매번 기본 경로를 수동으로 제거할 필요가 없도록 더 낮은 메트릭을 가진 경로를 추가합니다. 인스턴스를 시작합니다.

아직 고려하지 않은 또 다른 해결 방법이 있을 수 있습니다. 지금까지 이름, 고정 IP 및 DHCP를 가지고 노는 것은 도움이 되지 않았습니다.

게스트 운영 체제는 ArchLinux입니다.

답변1

/etc/network/interfaces해당 인터페이스 줄을 파일에 추가합니다.

post-up route del default via 192.168.56.1 dev eth1

default via 192.168.56.1 dev eth1인터페이스가 나타날 때 경로가 제거됩니다.

답변2

다음과 같은@Bob의 제안, 호스트 전용 네트워크에 대한 고정 IP 구성 파일이 게이트웨이를 지정했다는 것이 문제라는 것을 깨달았습니다. 나는 그것을 제거했고 모든 것이 내가 원하는대로 작동했습니다.

이것들은 두 개야네트워크 제어소개:

Description='Host only connection'
Interface=eth1
Connection=ethernet
IP=static
Address=('192.168.56.31/24')
DNS=('192.168.1.1')

그리고

Description='Internet connection via NAT'
Interface=eth0
Connection=ethernet
IP=dhcp

그 결과는 다음과 같습니다.

$ip 라우팅
기본값은 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202를 전달합니다.
10.0.2.0/24 dev eth0 프로토타입 dhcp 범위 링크 src 10.0.2.15 미터법 202
192.168.56.0/24 dev eth1 프로토타입 커널 범위 링크 src 192.168.56.31

이것은 완벽할 수도 있고 아닐 수도 있지만 나에게는 효과가 있습니다.

답변3

예, 오래된 질문입니다. 하지만 몇 년 전에 설정했는데 갑자기 작동이 멈춘 시스템 구성에 대해 기본 라우팅이 어떻게 작동하는지 알아보기 위해 여기에 왔습니다.

이 질문에 답하려면 sledgehammer 접근 방식을 사용하고 /etc/networkd-dispatcher/routable.d/50-ifup-hooks 파일을 넣고 거기에서 원하는 최종 라우팅 테이블을 수동으로 만들 수 있습니다. 기본적으로 시스템에서 생성된 경로를 제거하고 자체 경로를 제공합니다.

하지만 파일의 권한이 755인지 확인하세요. 이것이 실행되지 않기 때문에 내 문제입니다 :(

관련 정보