Pelo que eu sei, a configuração básica da rede entra /etc/network/interfaces
e 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.local
um 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/interfaces
de tornar permanentes as rotas adicionadas/excluídas manualmente?
- Em particular, existem outras possibilidades além
- 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/interfaces
irá 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/interfaces
mas 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_tables
em Jessie
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/iproute2/rt_tables
no aperto
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/rc.local
em 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.local
no 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/interfaces
em 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/interfaces
no 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 main
Jessie
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 main
no 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 -n
Jessie
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 -n
no 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 ip
comando chama ifconfig
o primeiro e iproute2
o ú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 route
comandos (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/interfaces
do uso up
desta forma:
up ip route add 1.2.3.4/24 via 1.2.3.1