2 votos

¿Cómo es posible tener una puerta de enlace predeterminada fuera del alcance de la red de cualquier interfaz?

Siempre he pensado que la puerta de enlace predeterminada, tiene que estar en la misma red que el servidor/cliente intenta conectarse a internet. Sin embargo hoy he alquilado un servidor de Hetzner y el servidor es capaz de conectarse a internet incluso si, como parece a mí, la puerta de enlace predeterminada es definitivamente no conectados a la misma red. También la máscara de red parece ser ajustado a /32.

root@test:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 138.201.187.120  netmask 255.255.255.255  broadcast 138.201.187.120
        inet6 fe80::9400:ff:fe3b:eece  prefixlen 64  scopeid 0x20<link>
        inet6 2a01:4f8:c17:69b0::1  prefixlen 64  scopeid 0x0<global>
        ether 96:00:00:3b:ee:ce  txqueuelen 1000  (Ethernet)
        RX packets 1166  bytes 638244 (638.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 653  bytes 92539 (92.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 112  bytes 8824 (8.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 112  bytes 8824 (8.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@test:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.1.1      0.0.0.0         UG    0      0        0 eth0
172.31.1.1      0.0.0.0         255.255.255.255 UH    0      0        0 eth0
root@test:~# ip route
default via 172.31.1.1 dev eth0
172.31.1.1 dev eth0 scope link
root@test:~# ping ipv4.google.com
PING ipv4.l.google.com (172.217.21.238) 56(84) bytes of data.
64 bytes from fra16s13-in-f14.1e100.net (172.217.21.238): icmp_seq=1 ttl=54 time=4.83 ms
64 bytes from fra16s13-in-f14.1e100.net (172.217.21.238): icmp_seq=2 ttl=54 time=4.96 ms
64 bytes from fra16s13-in-f14.1e100.net (172.217.21.238): icmp_seq=3 ttl=54 time=5.01 ms
^C
--- ipv4.l.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 4.837/4.938/5.010/0.073 ms
root@test:~#
root@test:~# traceroute ipv4.google.com
traceroute to ipv4.google.com (216.58.207.78), 30 hops max, 60 byte packets
 1  _gateway (172.31.1.1)  0.139 ms  0.091 ms  0.062 ms
 2  12643.your-cloud.host (136.243.182.17)  0.320 ms  0.103 ms  0.075 ms
 3  * * *
 4  213-239-251-233.clients.your-server.de (213.239.251.233)  1.479 ms 213-239-251-237.clients.your-server.de (213.239.251.237)  0.722 ms  1.320 ms
 5  core21.fsn1.hetzner.com (213.239.239.125)  0.417 ms  0.310 ms  0.278 ms
 6  core4.fra.hetzner.com (213.239.245.18)  5.536 ms core4.fra.hetzner.com (213.239.245.14)  4.880 ms core0.fra.hetzner.com (213.239.252.33)  5.539 ms
 7  72.14.218.94 (72.14.218.94)  5.094 ms  5.085 ms  5.113 ms
 8  108.170.251.193 (108.170.251.193)  5.018 ms * 108.170.252.65 (108.170.252.65)  6.311 ms
 9  108.170.235.246 (108.170.235.246)  7.428 ms 72.14.232.50 (72.14.232.50)  4.903 ms 72.14.234.227 (72.14.234.227)  4.951 ms
10  108.170.252.18 (108.170.252.18)  5.287 ms fra16s25-in-f14.1e100.net (216.58.207.78)  4.804 ms 108.170.251.145 (108.170.251.145)  5.646 ms
root@test:~#

Gracias!

2voto

T.Raghavendra Puntos 174

Para ser exactos, la puerta de enlace debe estar en el mismo físico de la red el ordenador, ya que de llegar a ella (o llegar a cualquier ordenador de la red, la verdad) requiere ARP paquetes a enviar. Para esto, cualquier local de la red requiere una entrada de ruta, que se define "en el enlace de" equipos". Esto es lo que una entrada de ruta para una red más comunes de configuración quedaría así:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.193.254 0.0.0.0         UG    0      0        0 enp0s3
192.168.193.0   0.0.0.0         255.255.255.0   U     0      0        0 enp0s3

Como se puede ver a partir de la segunda línea, es bien definido cómo llegar al servidor de puerta de enlace. El Gateway columna 0.0.0.0, lo que significa que "no usar la puerta de enlace para que dichas direcciones", por lo que se definen las direcciones estén disponibles directamente. Por desgracia, la salida de route -n no es intuitivo en este sentido, pero si utilizas ip route el contrario, se vería un poco más sencillo de representación:

default via 192.168.193.254 dev enp0s3
192.168.193.0/24 dev enp0s3 scope link

Aquí, dev enp0s3 scope link significa "este es en enlace con la enp0s3 dispositivo, por lo que es accesible directamente a través de él". Desde la puerta de entrada es en sí mismo en esa subred, el equipo sabe que puede ser alcanzado directamente, así que si es necesario, sabe cómo enrutar paquetes hacia el mundo exterior.

Si la segunda entrada, no estaría allí, el gw sería inalcanzable, incluso si es en la misma red.

En su caso, la segunda línea de la ruta de entrada sirve a ese propósito, aunque es para un único host, no para una red:

172.31.1.1      0.0.0.0         255.255.255.255 UH    0      0        0 eth0

o, como la salida o ip route muestra:

172.31.1.1 dev eth0 scope link

Así que la solución es que el ordenador y la puerta de enlace está probablemente en la misma red física, y su servidor se le dice cómo llegar a la puerta de enlace. A partir de este punto no importa si comparten la misma red lógica o no.

También, no importa lo que la máscara de red es, siempre y cuando la tabla de enrutamiento contiene entradas para los equipos. La configuración de la máscara de red sólo define cómo rellenar la tabla de enrutamiento, pero si usted tiene un /24 de subred entrada en la tabla de enrutamiento (como en mi primer ejemplo), y establecer la máscara de red a /32, el servidor estará feliz de llegar para cada equipo definido en la tabla de enrutamiento.

Esto funciona en la dirección opuesta: si usted tiene un /24 máscara de red, pero no "en el enlace" entradas de enrutamiento, entonces la red local será inaccesible.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: