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.