18 votos

Cómo establecer la ruta predeterminada con netplan, servidor Ubuntu 18.04, 2 NIC

Tengo dos NIC, ambos son controlados mediante DHCP. Uno tiene IP pública, el segundo privada.

Ambas interfaces tienen IP estática reservada en DHCP y ambas interfaces obtienen la IP correcta, pero a veces cuando reinicio el servidor no puedo acceder desde la pública, porque la ruta predeterminada es desde la NIC privada.

¿Cómo puedo configurar esto permanentemente con netplan?

NIC pública ens18 (IP: 213.133.xxx.xxx) NIC privada ens19 (IP: 10.10.10.xxx)

Mi configuración de netplan es:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: yes
      dhcp6: no
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
    ens19:
      dhcp4: yes
      dhcp6: no

11voto

mihi Puntos 2504

El problema es que networkd va a levantar ambas redes y ambas tendrán una puerta de enlace predeterminada configurada, ambas con la misma métrica.

Netplan actualmente no te permite saltarte la configuración de la ruta en una interfaz, pero puedes configurar networkd por separado para indicarle que lo haga, basándote en lo que netplan ya ha generado.

He copiado los comandos a continuación. Aquí estoy asumiendo que ens19 es la interfaz "secundaria" para la cual no deseas establecer una puerta de enlace predeterminada - nota que para hacerlo con éxito, también se necesita que suceda antes de reiniciar con la nueva interfaz (o puedes copiar parte de la configuración, omitir la línea MACAddress=, etc. para que sea lo suficientemente genérica y que una nueva interfaz sea coincidente).

sudo cp /run/systemd/network/10-netplan-ens19.network /etc/systemd/network
sudo vi /etc/systemd/network/10-netplan-ens19.network

Luego agrega debajo de [DHCP]:

UseRoutes=false            # si no deseas aplicar rutas desde DHCP

RouteMetric=200        # cualquier número por encima de 100 si deseas que las rutas se apliquen, pero que sean menos preferidas.

Si aún no tienes el archivo (es decir, aún no has conectado la interfaz) entonces podrías copiar el contenido de otra interfaz configurada para DHCP y eliminar MACAddress=.

En general, el archivo debería tener un aspecto similar a esto:

[Match]
Name=nombreinterfaz

[Network]
DHCP=ipv4

[DHCP]
UseMTU=true
RouteMetric=200    # o UseRoutes=false, como prefieras.

10voto

Garagoth Puntos 51

Para interfaces estáticas, simplemente omitir la opción de configuración gateway4 (o gateway6) hace que netplan NO cree una ruta predeterminada para esa interfaz. Luego, si necesitas enrutamiento adicional usando el elemento routes (array de diccionarios)

Para interfaces DHCP puedes hacer lo siguiente:

dhcp4-overrides:
    route-metric: 100

Solo aumenta la métrica para interfaces posteriores y deberías estar bien.

(Ver: https://netplan.io/examples)

8voto

ca202 Puntos 41

Para detener que una interfaz dhcp en netplan establezca una ruta predeterminada, simplemente establezca use-routes en false en dhcp4-overrides.

eth2:
    dhcp4: true
    dhcp4-overrides:
        use-routes: false

También puede ser mejor no editar directamente /etc/netplan/50-cloud-init.yaml sino en su lugar:

  • Cambie la fuente a /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg.
  • Ejecute cloud-init clean -r para reiniciar. (esto propaga los cambios en la configuración en la nube a la configuración de netplan)

5voto

Thiago Conrado Puntos 200

Usar dos NIC es complicado. Yo preferiría una configuración estática y definir la tabla de enrutamiento, aquí algunos consejos:

  • Es necesario definir las pasarelas de cada NIC, a menos que ambas compartan la misma pasarela
  • Incluso con múltiples pasarelas, para algunos sistemas (por ejemplo, Ubuntu) solo SE PERMITE UNA puerta de enlace predeterminada (tomó algo de tiempo aprender esto), pero hay algunas distribuciones de Linux que permiten varias puertas de enlace predeterminadas
  • Siempre prueba ping de entrada y salida para/de cada NIC (ping -I google.com)
  • Si solo algunos rangos están conectados correctamente, es posible tener conexión entre esos, pero no a otras redes (recibir y enviar pings entre direcciones conocidas, pero incapaz de hacer ping a 8.8.8.8)
  • ip r get 8.8.8.8 ayudará a comprender cómo el sistema alcanza una dirección externa
  • Configurar la dirección MAC para cada red, ya que el nombre del adaptador puede cambiar al reiniciar

En el ejemplo a continuación, observe que cada NIC tiene su propia pasarela y eno2 tiene la pasarela predeterminada del sistema. Si desea tener un comportamiento seguro, eche un vistazo al enlace de interfaces o manualmente a través de iproute2 (readmore)

# Este archivo describe las interfaces de red disponibles en su sistema
# Para obtener más información, consulte netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses: [88.88.24.26/29, "8888.ffff:1:20::c02/64"]
      routes:
          - to: 0.0.0.0/0
            via: 88.88.24.25
            metric: 40
            table: 400
      routing-policy:
          - from: 88.88.24.26/29
            table: 400
      match:
          macaddress: 0c:c4:7b:0b:7b:eb
      set-name: mainInf
      gateway6: "8888.ffff:1:20:0:0:0:1"
      nameservers:
          search: [mydomain.com]
          addresses:
              - 8.8.8.8
              - 1.1.1.1
              - "2606:4700:4700::1111"
    eno2:
      addresses: [88.88.51.44/29, "8888.ffff:1:20::fa02/64"]
      gateway4: 88.88.51.41
      routes:
          - to: 0.0.0.0/0
            via: 88.88.51.41
            metric: 40
            table: 200
      routing-policy:
          - from: 88.88.51.41/29
            table: 200
      match:
          macaddress: 0c:c4:7b:0b:7b:bb
      set-name: support
      gateway6: "8888.ffff:1:20:0:0:0:1"
      nameservers:
          search: [mydomain.com]
          addresses:
              - 8.8.8.8
              - 1.1.1.1
              - "2606:4700:4700::1111"

-9voto

Mike Pan Puntos 176

Instalo servidor Ubuntu Server 18.04.1 LTS

$ uname -a
Linux srv02 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

.

# Este archivo se genera a partir de la información proporcionada por
# la fuente de datos. Los cambios no persistirán en una instancia.
# Para deshabilitar las capacidades de configuración de red de cloud-init, escriba un archivo
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg con lo siguiente:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            addresses: []
            dhcp4: true
            dhcp6: false
            nameservers:
                addresses:
                - 10.99.0.1
                search: []
    version: 2

Necesita cambiar la IP

$ sudo nano /etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        eth0:
            addresses: [10.99.0.6/23]
            gateway4: 10.99.0.5
            dhcp4: false
            dhcp6: false
            nameservers:
                addresses:
                - 10.99.0.5
                search: []
    version: 2

  $ sudo netplan apply
  Invalid YAML at //etc/netplan/50-cloud-init.yaml line 9 column 0: found character that cannot start any token 9 column - addresses: [10.99.0.6/23]

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:

X