Hasta donde yo sé, la configuración básica de la red entra /etc/network/interfaces
y el sistema genera la tabla de enrutamiento a partir de esta información. También me enseñaron que, en general, /etc/network/interfaces
es el lugar para agregar permanentemente comandos personalizados para manipular la tabla de enrutamiento (a veces también se sugiere /etc/rc.local
un script personalizado /etc/network/if-up.d/
). Además, se pueden especificar tablas de enrutamiento personalizadas en /etc/iproute2/rt_tables
.
- ¿Hay otros lugares que afectarán la tabla de enrutamiento (principal)?
- En particular, ¿existen otras posibilidades además de
/etc/network/interfaces
hacer permanentes las rutas agregadas/eliminadas manualmente?
- En particular, ¿existen otras posibilidades además de
- ¿Un sistema con múltiples NIC tiene un concepto deprimarioyinterfaces de red secundarias¿O estas sólo se utilizan para ayudar al usuario? (Durante la configuración, uno debe elegir el si principal y
/etc/network/interfaces
contendrá un comentario apropiado). Si tal concepto existe, ¿dónde se puede configurar? - ¿Existe alguna diferencia en el concepto de tabla de enrutamiento entre Debian Squeeze y Debian Jessie?
El trasfondo de mi pregunta es que tengo un sistema Debian Squeeze heredado y un nuevo sistema Debian Jessie que arrancan con diferentes tablas de enrutamiento pero que (hasta donde yo sé) están configurados de manera idéntica. Podría manipular manualmente la tabla de enrutamiento para adaptarla a mis necesidades y hacer que los cambios sean permanentes, /etc/network/interfaces
pero quiero entender qué está pasando.
EDITAR
Aquí están los archivos de configuración de ambas máquinas. Cambié las primeras partes de cada dirección IP por razones de privacidad. Sin embargo, las subredes y las partes de dirección de las respectivas redes no se modificaron. El /etc/network/interfaces.d/
directorio de la máquina Jessie está vacío.
/etc/iproute2/rt_tables
en jessie
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/iproute2/rt_tables
en apretar
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/rc.local
en 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
en apretar
#!/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
en 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
en apretar
# 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
salida de ip route show table main
en 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
salida de ip route show table main
en 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
salida de route -n
en 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
salida de route -n
en 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
Respuesta1
ambos de ustedes/etc/red/interfacesLos archivos contienen el mismo error: la puerta de enlace predeterminada se especifica dos veces.
Puede tener múltiples puertas de enlace predeterminadas, solo bajo una circunstancia muy específica (despreciando las métricas): que tenga varias tablas de enrutamiento, cada una especificada en el archivo./etc/iproute2/rt_tables, pero cada tabla de enrutamiento tendrá unsolteropuerta de enlace predeterminada.
En su lugar, especifique uno para cada interfaz, en elmisma mesa principal. Entonces, lo que estamos viendo aquí es una ligera diferencia en la implementación deliproute2paquete y cómo responde a los errores.
En el caso deJessie, establece la puerta de enlace mencionada en primer lugar, 143.103.155.254, como la única puerta de enlace, simplemente porque se menciona en primer lugar. Cuando se produce la declaración de la segunda puerta de enlace, 27.126.19.193, no pasa nada porque esnoprecedido por
ip route del default
Squeeze, en cambio, trata el error de una manera diferente: limita elalcancede la segunda puerta de entrada aenlace local. Para más información sobrealcance, verel manual de iproute2, Que estados:
enlace de alcance --- la dirección es enlace local, válida solo en este dispositivo.
WikipediaEstablece que:
En una red informática, una dirección de enlace local es una dirección de red que es válida sólo para comunicaciones dentro del segmento de red (enlace) o el dominio de transmisión al que está conectado el host.
Así, la gama (sinónimo impreciso dealcance) de la segunda puerta de enlace se ha limitado en gran medida a su segmento de red (es decir, su dominio de transmisión 143.103.155.0/24). Por lo tanto, Jessie también, de otra manera, ha lidiado con su declaración incorrecta de múltiples puertas de enlace en la misma tabla de enrutamiento.
Por supuesto, no haycomportamiento esperadosobre cómo los paquetes manejan los errores. La forma correcta de configurar tu/etc/red/interfacesarchivo es omitir la declaración
gateway 143.103.155.254
en total (esto es extraño también porque dice que la puerta de enlace de tu propia pc es... ¡ella misma!). Para ver una buena explicación de esto lea elPárrafo de solución inicial aquí; Más adelante, también se explica cómo agregar múltiples puertas de enlace, con múltiples tablas de enrutamiento.
Si, como usted afirma,
Puedo intentar nuevamente verificarlo, pero estoy bastante seguro de que ya lo intenté y todavía no pude acceder a ninguna IP externa.
Lo más probable es que se deba a que no permitiste el reenvío de IPv4 de una interfaz a otra (como sudo:
echo 1 > /proc/sys/net/ipv4/ip_forward
se encarga de eso), o porque las reglas de iptables bloquearon el reenvío.
Respuesta2
La principal diferencia entre Squeeze y Jessie es que ip
el comando requiere ifconfig
el primero y iproute2
el último.
ifconfig no conoce múltiples configuraciones de puerta de enlace, al menos sin métricas. Es por eso que ves diferencias entre los dos ip route
comandos (o route -n
(obsoleto))
iproute2 puede rastrear múltiples tablas de enrutamiento
ip route show all
El concepto de interfaces de red primaria y secundaria es solo una forma de distinguirlas, generalmente llamadas eth0 (1.ª) y eth1 (2.ª), ¡pero el orden puede variar!
Y sí, puede establecer una ruta permanente /etc/network/interfaces
mediante el uso de up
esta manera:
up ip route add 1.2.3.4/24 via 1.2.3.1