Configurando o endereço do gateway por meio do arquivo de interfaces de rede

1

Aqui está a versão abreviada da minha pergunta: Por que a configuração do parâmetro gateway em meu arquivo de interfaces de rede não tem efeito sobre minhas interfaces de rede?

Ou, como alternativa, por que o comando post-up trabalha onde gateway falha e o que exatamente está configurando o parâmetro gateway supostamente?

Aqui está uma descrição mais longa da minha pergunta.

Considere o seguinte arquivo de configuração da interface de rede ( /etc/network/interfaces ) em uma VM do VirtualBox que executa o Debian:

# /etc/network/interfaces

# Original file

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface (NAT)
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

# Host-only interface (vboxnet0)
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.1

Quando inicializo a máquina e executo route -n , recebo a seguinte saída:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Para minha surpresa, não há nenhum gateway definido para a rede 192.168.56.0/24 na interface eth1 .

Agora considere o seguinte arquivo de configuração alternativa:

# /etc/network/interfaces

# Modified file

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface (NAT)
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

# Host-only interface (vboxnet0)
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
# gateway 192.168.56.1
post-up route add default gw 192.168.56.1
pre-down route del default gw 192.168.56.1

Quando reinicializo a máquina com essa configuração e executo route -n , obtenho a seguinte saída:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.1    0.0.0.0         UG    0      0        0 eth1
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Portanto, o resultado é que a abordagem post-up / pre-down para configurar um gateway padrão funciona, mas o próprio parâmetro gateway não. O que estou perdendo aqui?

    
por igal 21.09.2017 / 21:18

3 respostas

1

De uma perspectiva de rede, você tem gateways de rede como um próximo salto versus um gateway padrão, também conhecido como gateway de último recurso. Do seu primeiro comando route -n (sem post-up) você está vendo 10.0.2.2 como o gateway de último recurso. Quando sua máquina tiver uma solicitação para uma rede que não esteja em sua tabela de roteamento, ela encaminhará o tráfego de rede desconhecido para esse endereço. A configuração do gateway para a configuração das interfaces é o próximo salto para o tráfego nessa rede. No entanto, como a interface está diretamente conectada a essa rede, ela não precisa do gateway para encaminhar o tráfego. A rede será sempre conhecida e o tráfego destinado a dispositivos nessa rede será encaminhado diretamente para esse dispositivo. Seu comando de post-up está criando dois gateways de último recurso (o que é indesejável). Se você quer que o 192.168.56.1 seja seu último recurso real, você quer fazer uma rota padrão e não adicionar.

    
por 21.09.2017 / 21:47
1

Isso dá alguma incitação

link

Sua tabela de roteamento fornece informações sobre como rotear conexões entre todas as interfaces.

A rota padrão da interface seria usada para outras finalidades e só se aplica a essa interface, não ao sistema como um todo.

Se você tivesse apenas uma interface de rede, o sistema a configuraria automaticamente como a rota padrão porque é o único gateway padrão.

Lembre-se de que a tabela de roteamento funciona de baixo para cima, de modo que o gateway padrão na parte superior será a última rota usada para tentar uma conexão.

    
por 21.09.2017 / 21:56
1

Do manual ( man interfaces ):

gateway address
                 Default gateway (dotted quad)

Portanto, gateway é usado para especificar uma rota padrão , não uma rota estática. Rotas estáticas são usadas para tráfego de rede que não é projetado para usar um gateway padrão. O gateway padrão é usado para todo o tráfego que não é destinado à rede local e para o qual nenhuma rota preferencial foi especificada em uma tabela de roteamento. Sua interface DHCP em eth0 adquire o gateway padrão . Depois disso, você especifica uma rota estática em eth1 com post-up route add default gw .

Leitura adicional:

Separe o tráfego de rede em duas interfaces de rede

Experimente da seguinte forma.

echo '200 hostonly' >> /etc/iproute2/rt_tables

Edite /etc/network/interfaces .

# The loopback network interface
auto lo
iface lo inet loopback

# The VirtualBox NAT interface.
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

# The VirtualBox host-only interface.
auto eth1
allow-hotplug eth1
iface eth1 inet static
    address 192.168.56.2
    netmask 255.255.255.0
    post-up ip route add 192.168.56.0/24 dev eth1 src 192.168.56.1 table hostonly
    post-up ip route add default via 192.168.56.1 dev eth1 table hostonly
    post-up ip rule add from 192.168.56.2/32 table hostonly
    post-up ip rule add to 192.168.56.2/32 table hostonly

Reinicie e veja como fica.

    
por 21.09.2017 / 22:14