Objetivo
Deje que Ethernet tenga prioridad sobre la conexión inalámbrica cuando el cable de Ethernet esté enchufado
Método
Después de haber hecho una buena cantidad de Google y lectura, he llegado a un punto en el que creo que lo que debería estar haciendo es algo similar a
nmcli connection modify [id-of-ethernet-interface] ipv4.route-metric 200
nmcli connection modify [id-of-ethernet-interface] ipv6.route-metric 200
donde 200 es un valor más bajo que la métrica inalámbrica, para que Ethernet tenga prioridad sobre la inalámbrica.
Resultados
Lo que me deja perplejo son los informes que recibo route -n
después de haber ejecutado los comandos anteriores y reiniciar (por si acaso), y el hecho de que esto no parece llegar a alcanzar mi objetivo
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 123.456.89.1 0.0.0.0 UG 600 0 0 wlp1s0
0.0.0.0 123.456.89.1 0.0.0.0 UG 20200 0 0 enp0s31f6
123.456.89.0 0.0.0.0 255.255.255.192 U 200 0 0 enp0s31f6
123.456.89.0 0.0.0.0 255.255.255.192 U 600 0 0 wlp1s0
654.321.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
Los números se suman con respecto a la ejecución de mi comando, pero para las líneas que dicen
0.0.0.0 123.456.89.1 0.0.0.0 UG 20200 0 0 enp0s31f6
654.321.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
La primera línea tiene 20 prefijos antes del valor 200 que configuré. Esto se sigue aplicando constantemente según lo que ejecuto; Si cambio el valor de la métrica nmcli
hasta decir 500, route -n
informaré 20500. ¿Por qué sucede esto? Seguro que no se ve bien, ya que dije que quería 200 o 500, no 20200 y 20500.
La segunda línea tiene un valor métrico que no tengo idea de dónde viene, y parece que no puedo afectarlo en absoluto. Si alguien puede arrojar luz sobre esto, estoy agradecido.
No parece que estos comandos terminen en algo tangible, aparte de afectar las métricas; No puedo decir que Ethernet tenga prioridad, así que supongo que no.
Otros hallazgos
Lo que he encontrado curioso, y parece estar funcionando hasta cierto punto, es el uso de $ sudo ifmetric enp0s31f6 200
. Esto hace dos o tres cosas;
- Afecta la métrica de la interfaz (
route -n
informa que todas las líneas con Ifaceenp0s31f6
tienen el valor 200) - Afecta la interfaz de usuario en Ubuntu (en la esquina superior derecha veré un cambio visual entre Ethernet e iconos inalámbricos, dependiendo de los valores métricos que proporcione en el
ifmetric
comando) - A veces me arroja un
NETLINK: Error: File exists
error. Ejecuciones posteriores del mismo comando pueden o pueden no dar lugar a este error
Alguna información del sistema
- EliteBook 850 G5
- Ubuntu 18.04
- La instalación de Ubuntu se realiza permitiendo que el instalador use todo el disco, el cifrado habilitado, descargas de controladores de terceros habilitadas, etc.
Actualización n. ° 1
$ nmcli c show
NAME UUID TYPE DEVICE
Wired connection 2 [n/a] ethernet enp0s31f6
WiFi1 [n/a] wifi wlp1s0
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 [n/a] 0.0.0.0 UG 600 0 0 wlp1s0
0.0.0.0 [n/a] 0.0.0.0 UG 20200 0 0 enp0s31f6
[n/a] 0.0.0.0 255.255.255.192 U 200 0 0 enp0s31f6
[n/a] 0.0.0.0 255.255.255.192 U 600 0 0 wlp1s0
[n/a] 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
nmcli c show
igual a la salida deroute -n
'?Respuestas:
Has apilado problemas aquí:
123.456.89.0/24
ip rules
)Tal vez debería confiar en scripts externos para desactivar automáticamente wifi cuando ethernet está enchufado como este:
Crea el guión
/etc/NetworkManager/dispatcher.d/70-wifi-wired-exclusive.sh
. Contenido:Para deshabilitar el script, solo ejecute
touch /etc/NetworkManager/.wifi-wired-exclusive
fuente
Creo que esto es NetworkManager que penaliza las conexiones que considera inalcanzables, al agregar 20000 al valor métrico. Del manual de NetworkManager.conf :
Solución 1
Puede intentar deshabilitar la comprobación de conectividad comentando la opción
uri=
o dejándola en blancoNetworkManager.conf
.Solución 2
Establecer
net.ipv4.conf.all.rp_filter = 2
en/etc/sysctl.conf
o donde corresponda en su distribución. Tenga cuidado con las posibles vulnerabilidades de fuga de información .Antecedentes
El manual de NetworkManager.conf tiene una pequeña explicación sobre por qué la comprobación de conectividad podría estar fallando:
En mi distribución, el filtrado estricto está habilitado:
El valor
1
significa un filtrado estricto y esto es responsable de la falla de la verificación de conectividad. La gente de systemd cambió esto a2
(filtrado suelto) con un compromiso controvertido que introdujo vulnerabilidades , por lo que fue revertido por las distribuciones.fuente