Como posso substituir a opção default do systemd por duas interfaces de rede?

2

Atualização: /etc/network/interfaces não existe porque estou usando netctl profiles .

Eu configurei uma instância do VirtualBox executando o ArchLinux com dois adaptadores de rede. Adapter 1 ( eth0 ) está anexado a um NAT ( 10.0.2.0/24 ) e Adapter 2 ( eth1 ) está na rede somente host ( 192.168.56.0/24 ). Eu uso as regras udev para usar os nomes antigos eth0 e eth1 para esses adaptadores (mas o problema existia também com os nomes enp*** ).

Quando eu faço logon, recebo isso:

$ ip route
default via 192.168.56.1 dev eth1 
default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 
10.0.2.0/24 dev eth0 proto dhcp scope link src 10.0.2.15 metric 202 
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.31

que resulta em

$ ping google.com
ping: google.com: Name or service not known

Pelo que entendi, isso ocorre porque o 192.168.56.1 (a interface somente do host) é adicionado com uma métrica mais baixa do que a interface do NAT.

Se eu fizer manualmente:

$ sudo ip route delete default
$ ip route
default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 
10.0.2.0/24 dev eth0 proto dhcp scope link src 10.0.2.15 metric 202 
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.31

Eu obtenho

$ ping google.com
PING google.com (172.217.12.174) 56(84) bytes of data.
64 bytes from ....1e100.net (172.217.12.174): icmp_seq=1 ttl=52 time=11.9 ms
64 bytes from ....1e100.net (172.217.12.174): icmp_seq=2 ttl=52 time=11.7 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 11.698/11.782/11.867/0.137 ms

Então, como posso garantir que o tráfego de saída seja roteado por eth0 / 10.0.2.0/24 (interface NAT para host) em vez de eth1 / 192.168.56.0/24 (rede somente host).

A questão é apenas tangencialmente relacionada ao VirtualBox (se houver uma configuração do VirtualBox que me permita alterar as métricas, não me importaria).

Eu acredito que deve haver uma maneira de fazer 1 de 1) Parar o systemd de adicionar a default via 192.168.56.1 dev eth1 route; ou 2) Adicione a rota default via 10.0.2.2 dev eth0 com uma métrica mais baixa, para que eu não precise excluir a rota padrão manualmente toda vez que eu iniciar a instância.

Pode haver outra solução que ainda não considerei. Até agora, mexendo com nomes, IP estático vs DHCP não ajudou.

O sistema operacional convidado é o ArchLinux.

PS: Originalmente, fiz esta pergunta no ServerFault , mas era migrou para o superusuário ( erroneamente na minha opinião ) . Alguém sugeriu que poderia ser mais apropriado aqui, então estou tentando.

    
por Sinan Ünür 18.08.2018 / 15:18

2 respostas

0

A seguir @ conselho do Bob , percebi que o problema era que o meu perfil IP estático para a rede somente de host estava especificando um gateway. Eu removi isso e tudo funcionou do jeito que eu queria.

Aqui estão os dois netctl perfis:

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

e

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

Isso resulta em:

$ ip route
default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 
10.0.2.0/24 dev eth0 proto dhcp scope link src 10.0.2.15 metric 202 
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.31

que pode ou não ser perfeito, mas funciona para mim.

    
por 19.08.2018 / 03:11
1

Adicione no arquivo /etc/network/interfaces à interface correspondente a linha:

post-up route del default via 192.168.56.1 dev eth1

que excluirá a rota default via 192.168.56.1 dev eth1 na inicialização da interface.

    
por 18.08.2018 / 16:00