
Tengo un solo dispositivo que configuré con una dirección IP estática (192.168.1.16) y está conectado directamente al cuarto puerto (enp4s0) en mi PC con Ubuntu Linux. El m/c también está conectado a mi LAN a través del tercer puerto (enp3s0). Mi LAN usa DHCP para distribuir IP en mi red 192.168.1.1/24.
Ahora quiero poder hacer ping a mi dispositivo en 192.168.1.19 a través de enp4s0, así que usé este comando para agregarle una ruta a través de una única dirección IP:
sudo ip route add 192.168.1.19/32 dev enp4s0
Lamentablemente el ping falla:
$ ping 192.168.1.19
PING 192.168.1.19 (192.168.1.19) 56(84) bytes of data.
From 192.168.1.168 icmp_seq=1 Destination Host Unreachable
From 192.168.1.168 icmp_seq=2 Destination Host Unreachable
From 192.168.1.168 icmp_seq=3 Destination Host Unreachable
Mirando algún estado veo que dice que el enlace está caído:
$ ip route
default via 192.168.1.1 dev enp3s0 proto dhcp metric 101
default via 10.136.209.45 dev wwan0 proto static metric 700
10.136.209.40/29 dev wwan0 proto kernel scope link src 10.136.209.44 metric 700
169.254.0.0/16 dev enp3s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.168 metric 101
192.168.1.19 dev enp4s0 scope link linkdown
$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 78:d0:04:31:91:bd brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 78:d0:04:31:91:be brd ff:ff:ff:ff:ff:ff
4: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 78:d0:04:31:91:bf brd ff:ff:ff:ff:ff:ff
inet 192.168.1.168/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
valid_lft 85575sec preferred_lft 85575sec
inet6 fe80::1191:4ec4:6844:2273/64 scope link noprefixroute
valid_lft forever preferred_lft forever
5: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 78:d0:04:31:91:c0 brd ff:ff:ff:ff:ff:ff
6: wwan0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether e6:83:24:bc:f6:81 brd ff:ff:ff:ff:ff:ff
inet 10.136.209.44/29 brd 10.136.209.47 scope global noprefixroute wwan0
valid_lft forever preferred_lft forever
7: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:f1:f6:93:0b brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:f1ff:fef6:930b/64 scope link
valid_lft forever preferred_lft forever
9: veth36abd25@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether ae:27:23:82:70:6a brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::ac27:23ff:fe82:706a/64 scope link
valid_lft forever preferred_lft forever
¿Me falta algo más que debo hacer para poder acceder al dispositivo en 192.168.1.19?
Actualizar:
Después de intentar intercambiar algunos cables, descubrí que los conectores no están en un orden lógico. En lugar de ser 1,2,3,4, en realidad son 1,4,3,2.
Entonces lo que pensé que era enp4s0 es en realidad en2s0. Superada esta confusión, ahora parece haberotro problemacomo se demuestra aquí:
$ sudo ip route add 192.168.1.19/32 dev enp2s0
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default setup.ubnt.com 0.0.0.0 UG 102 0 0 enp3s0
default _gateway 0.0.0.0 UG 700 0 0 wwan0
10.63.138.32 0.0.0.0 255.255.255.248 U 700 0 0 wwan0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 102 0 0 enp3s0
eZ80Acclaim 0.0.0.0 255.255.255.255 UH 0 0 0 enp2s0
$ ping 192.168.1.19
PING 192.168.1.19 (192.168.1.19) 56(84) bytes of data.
64 bytes from 192.168.1.19: icmp_seq=1 ttl=250 time=1.01 ms
64 bytes from 192.168.1.19: icmp_seq=2 ttl=250 time=1.06 ms
64 bytes from 192.168.1.19: icmp_seq=3 ttl=250 time=1.18 ms
64 bytes from 192.168.1.19: icmp_seq=4 ttl=250 time=1.27 ms
64 bytes from 192.168.1.19: icmp_seq=5 ttl=250 time=1.18 ms
64 bytes from 192.168.1.19: icmp_seq=6 ttl=250 time=1.04 ms
64 bytes from 192.168.1.19: icmp_seq=7 ttl=250 time=1.17 ms
64 bytes from 192.168.1.19: icmp_seq=8 ttl=250 time=1.18 ms
64 bytes from 192.168.1.19: icmp_seq=9 ttl=250 time=1.05 ms
64 bytes from 192.168.1.19: icmp_seq=10 ttl=250 time=1.17 ms
64 bytes from 192.168.1.19: icmp_seq=11 ttl=250 time=1.43 ms
64 bytes from 192.168.1.19: icmp_seq=12 ttl=250 time=0.941 ms
From 192.168.1.168 icmp_seq=13 Destination Host Unreachable
From 192.168.1.168 icmp_seq=14 Destination Host Unreachable
From 192.168.1.168 icmp_seq=15 Destination Host Unreachable
^C
--- 192.168.1.19 ping statistics ---
18 packets transmitted, 12 received, +3 errors, 33.3333% packet loss, time 17129ms
rtt min/avg/max/mdev = 0.941/1.139/1.433/0.124 ms, pipe 4
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default setup.ubnt.com 0.0.0.0 UG 102 0 0 enp3s0
default _gateway 0.0.0.0 UG 700 0 0 wwan0
10.63.138.32 0.0.0.0 255.255.255.248 U 700 0 0 wwan0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 102 0 0 enp3s0
$
Como puede ver, la ruta se agrega a la tabla de rutas y funciona el ping al dispositivo. Sin embargo, después de unos segundos, el destino se vuelve inalcanzable. Mirando la tabla de rutas nuevamente, ¡veo que la ruta ha sido eliminada!
Entonces la pregunta ahora es "¿quién" eliminó la ruta y por qué?
Respuesta1
Si su tarjeta de red no está conectada (como parece), debe ignorar el estado del operador.
Veresta otra preguntapara detalles
Respuesta2
Creo que encontré la respuesta a la eliminación de las rutas estáticas. Parece que a NetworkManger (nmcli) no le gusta que agregue una ruta directamente, por lo que las elimina en segundo plano.
tengo algo de inspiracionaquísobre cómo agregar una ruta estática para mi dispositivo usando nmcli en su lugar. Entonces utilicé este comando para agregar la ruta que necesito.
$ sudo nmcli con add type ethernet con-name "static-ip" ifname enp2s0 ipv4.method manual ipv4.addresses 192.168.1.19/32 gw4 0.0.0.0
No estoy seguro de entender exactamente todo lo que hace, pero parece funcionar y ahora puedo hacer ping a mi dispositivo en 192.168.1.19 todo el tiempo. Aún mejor, el cambio es persistente durante los reinicios y parece que también puedo hacer ping al dispositivo desde mi computadora portátil en la misma red 192.168.1.0/24.