Quais arquivos de configuração afetam a tabela de roteamento de um sistema Debian

Quais arquivos de configuração afetam a tabela de roteamento de um sistema Debian

Pelo que eu sei, a configuração básica da rede entra /etc/network/interfacese o sistema gera a tabela de roteamento a partir dessas informações. Também aprendi que, em geral, /etc/network/interfacesé o local para adicionar permanentemente comandos personalizados para manipular a tabela de roteamento (às vezes também é sugerido /etc/rc.localum script personalizado /etc/network/if-up.d/). Além disso, pode-se especificar tabelas de roteamento personalizadas em arquivos /etc/iproute2/rt_tables.

  • Existem outros locais que afetarão a tabela de roteamento (principal)?
    • Em particular, existem outras possibilidades além /etc/network/interfacesde tornar permanentes as rotas adicionadas/excluídas manualmente?
  • Um sistema com múltiplas NICs tem um conceito deprimárioeinterfaces de rede secundáriasou essas palavras são usadas apenas para ajudar o usuário? (Durante a configuração é necessário escolher o if primário e /etc/network/interfacesirá conter um comentário apropriado.) Se tal conceito existir, onde ele poderá ser configurado?
  • Há alguma diferença no conceito de tabela de roteamento entre o Debian Squeeze e o Debian Jessie?

O pano de fundo da minha pergunta é que eu tenho um sistema Debian Squeeze legado e um novo sistema Debian Jessie que inicializa com diferentes tabelas de roteamento, mas são (até onde eu sei) configurados de forma idêntica. Eu poderia manipular manualmente a tabela de roteamento para atender às minhas necessidades e tornar as alterações permanentes, /etc/network/interfacesmas quero entender o que está acontecendo.

EDITAR

Aqui estão os arquivos de configuração de ambas as máquinas. Alterei as primeiras partes de cada endereço IP por motivos de privacidade. No entanto, as sub-redes e as partes de endereço das respectivas redes não foram alteradas. O /etc/network/interfaces.d/diretório na máquina Jessie está vazio.

/etc/iproute2/rt_tablesem Jessie

#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep

/etc/iproute2/rt_tablesno aperto

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep

/etc/rc.localem Jessie

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

/etc/rc.localno aperto

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

/etc/network/interfacesem Jessie

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
    address 143.103.155.254
    netmask 255.255.255.0
    network 143.103.155.0
    gateway 143.103.155.254

# The primary network interface
auto eth2
iface eth2 inet static
    address 27.126.19.194
    netmask 255.255.255.248
    network 27.126.19.192
    broadcast 27.126.19.199
    gateway 27.126.19.193
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 143.103.5.1
    dns-search subdomain.domain.de

/etc/network/interfacesno aperto

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

auto eth0
iface eth0 inet static
        address 143.103.155.254
        netmask 255.255.255.0
        network 143.103.155.0
        gateway 143.103.155.254

auto eth2
iface eth2 inet static
        address 27.126.19.194
        netmask 255.255.255.248
        network 27.126.19.192
        broadcast 27.126.19.199
        gateway 27.126.19.193

saída de ip route show table mainJessie

default via 143.103.155.254 dev eth1 
143.103.155.0/24 dev eth1  proto kernel  scope link  src 143.103.155.254 
27.126.19.192/29 dev eth2  proto kernel  scope link  src 27.126.19.194

saída de ip route show table mainno Squeeze

27.126.19.192/29 dev eth2  proto kernel  scope link  src 27.126.19.194
143.103.155.0/24 dev eth0  proto kernel  scope link  src 143.103.155.254
default via 27.126.19.193 dev eth2
default via 143.103.155.254 dev eth0  scope link

saída de route -nJessie

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         143.103.155.254  0.0.0.0         UG    0      0        0 eth1
143.103.155.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
27.126.19.192  0.0.0.0         255.255.255.248 U     0      0        0 eth2

saída de route -nno Squeeze

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
27.126.19.192  0.0.0.0         255.255.255.248 U     0      0        0 eth2
143.103.155.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         27.126.19.193  0.0.0.0         UG    0      0        0 eth2
0.0.0.0         143.103.155.254  0.0.0.0         UG    0      0        0 eth0

Responder1

Ambos os seus/etc/rede/interfacesos arquivos contêm o mesmo erro: o gateway padrão é especificado duas vezes.

Você pode ter vários gateways padrão, apenas sob uma circunstância muito específica (negligenciando métricas): você tem várias tabelas de roteamento, cada uma especificada no arquivo/etc/iproute2/rt_tables, mas cada tabela de roteamento deve ter umsolteirogateway padrão.

Em vez disso, você especifica um para cada interface, no campomuito mesma mesa principal. Então, o que estamos vendo aqui é uma ligeira diferença na implementação doiproute2pacote e como ele responde aos erros.

No caso deJessie, ele estabelece o primeiro gateway mencionado, 143.103.155.254, como o único gateway, simplesmente porque é mencionado primeiro. Quando ocorre a declaração do segundo gateway, 27.126.19.193, nada acontece porque énãoprecedido por

      ip route del default

Squeeze, em vez disso, lida com o erro de uma maneira diferente: limita oescopoda segunda porta de entradalink local. Para mais informações sobreescopo, vero manual do iproute2, quais Estados:

link de escopo --- o endereço é link local, válido apenas neste dispositivo.

Wikipédiaafirma que:

Em uma rede de computadores, um endereço de link local é um endereço de rede válido apenas para comunicações dentro do segmento de rede (link) ou do domínio de transmissão ao qual o host está conectado.

Assim, o intervalo (sinônimo impreciso deescopo) do segundo gateway foi muito limitado ao seu segmento de rede (ou seja, seu domínio de transmissão 143.103.155.0/24). Assim, Jessie também, de uma maneira diferente, lidou com a declaração incorreta de vários gateways na mesma tabela de roteamento.

Claro, não hácomportamento esperadosobre como os pacotes lidam com erros. A maneira correta de você configurar seu/etc/rede/interfacesarquivo é omitir a declaração

   gateway 143.103.155.254

no total (isso é estranho também porque diz que o gateway do seu próprio pc é ... ele mesmo!). Para ver uma boa explicação sobre isso, leia oParágrafo da solução inicial aqui; posteriormente também é explicado como adicionar múltiplos gateways, com múltiplas tabelas de roteamento.

Se, como você afirma,

Posso tentar verificar novamente, mas tenho certeza de que já tentei e ainda não consegui acessar nenhum IP externo.

é mais provável que você não tenha permitido o encaminhamento IPv4 de uma interface para outra (como sudo:

     echo 1 > /proc/sys/net/ipv4/ip_forward

cuida disso) ou porque suas regras do iptables bloquearam o encaminhamento.

Responder2

A principal diferença entre Squeeze e Jessie é que o ipcomando chama ifconfigo primeiro e iproute2o último.

ifconfig não conhece múltiplas configurações de gateway, pelo menos sem métricas. É por isso que você vê diferenças entre os dois ip routecomandos (ou route -n(obsoleto))

iproute2 pode rastrear múltiplas tabelas de roteamento

ip route show all

O conceito de interfaces de rede primária e secundária é apenas uma forma de distingui-las, geralmente chamadas de eth0 (1ª) e eth1 (2ª), mas a ordem pode variar!

E sim, você pode definir uma rota permanente através /etc/network/interfacesdo uso updesta forma:

up ip route add 1.2.3.4/24 via 1.2.3.1

informação relacionada