Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Asignación de una dirección IP a una segunda interfaz en una instancia de Oracle Linux
Introducción
En este tutorial se proporcionan instrucciones paso a paso sobre cómo asignar una dirección IP a una interfaz de red secundaria en una instancia de Oracle Linux. Tanto si está ampliando la configuración de red como si está configurando una política de enrutamiento específica, la adición y configuración de una segunda interfaz es una aptitud crítica.
Aprenderá a:
-
Identifique las interfaces de red disponibles.
-
Configure la interfaz secundaria con una dirección IP estática o dinámica.
-
Actualice los archivos de configuración de red para que persistan tras los reinicios.
-
Verifique la configuración y garantice la conectividad.
Al final de este tutorial, podrá ampliar las capacidades de red de su instancia de Oracle Linux, permitirle interactuar sin problemas en varias subredes o redes.
Objetivos
En este tutorial, aprenderemos a asignar una dirección IP a una segunda interfaz de red en una instancia de Oracle Linux.
-
Comprenda los archivos de configuración implicados en la configuración de una interfaz de red secundaria.
-
Descubra cómo asignar una dirección IP estática a la segunda interfaz.
-
Verifique la conectividad y la funcionalidad adecuada de la interfaz recién configurada.
Requisitos
- Cree una red virtual en la nube (VCN) y 2 subredes x.
Tarea 1: Creación de una instancia informática de OCI
En esta tarea, crearemos una nueva instancia en Oracle Cloud Infrastructure (OCI).
-
Vaya a la consola de OCI, vaya a Compute, Instances y haga clic en Create instance.
-
En Crear instancia informática, introduzca la siguiente información.
- Introduzca un nombre para la instancia. En este ejemplo, utilizaremos
sriov-test-01
. - Desplazar hacia abajo.
- Haga clic en Cambiar unidad.
- Seleccione VM.Standard.E4. Flexibilizar, pero también puede utilizar E5.
- Desplazar hacia abajo.
- Haga clic en Seleccionar red virtual en la nube existente.
- Seleccione la VCN. En este ejemplo, estamos utilizando la VCN
oke
. - Seleccione la subred existente para la vNIC principal.
- Desplazar hacia abajo.
- Para la primera dirección IP de la interfaz VNIC, en Dirección IPv4 privada, seleccione Asignar automáticamente dirección IPv4 privada.
- Al seleccionar una subred pública para la interfaz principal, por lo tanto, en Dirección IPv4 pública, seleccione Asignar automáticamente dirección IPv4 pública.
- Desplazar hacia abajo.
- Haga clic en Cargar archivos de clave pública (.pub) para cargar claves SSH públicas y privadas existentes (generadas anteriormente).
- Haga clic en Examinar para seleccionar la clave pública existente.
- Verifique si la clave pública existente está seleccionada para la carga.
- Haga clic en Crear.
- Si la instancia se ha desplegado correctamente, el estado muestra EN EJECUCIÓN.
- Tenga en cuenta que la VNIC principal está configurada y las direcciones IP se asignan automáticamente.
- Introduzca un nombre para la instancia. En este ejemplo, utilizaremos
Tarea 2: Adición de la segunda VNIC a la instancia
-
Vaya a la página Detalles de instancia.
- Haga clic en VNIC asociadas.
- Tenga en cuenta que solo hay una VNIC y le cambiamos el nombre a
sr-iov-test-01
(el nombre por defecto que proporciona OCI es diferente). - Haga clic en Crear VNIC.
-
En Crear VNIC, introduzca la siguiente información.
- Introduzca un nombre para la segunda VNIC. En este ejemplo, utilizaremos
secondary-vnic
. - Seleccione la VCN. En este ejemplo, estamos utilizando la VCN
oke
. - Seleccione la subred existente para la VNIC secundaria. Esta es una subred diferente a la que está conectada la VNIC principal.
- Seleccione Usar grupos de seguridad de red para controlar el tráfico (opcional).
- (Opcional) Seleccione Permitir todo para crear un grupo de seguridad de red que permita todo el tráfico de entrada y salida.
- Desplazar hacia abajo.
- Para la segunda dirección IP de la interfaz VNIC, en Dirección IPv4 privada, seleccione Asignar automáticamente dirección IPv4 privada.
- Haga clic en Guardar cambios.
- Introduzca un nombre para la segunda VNIC. En este ejemplo, utilizaremos
-
Tenga en cuenta que ahora se crea la segunda VNIC y se asocia a la instancia y a la otra subred.
Nota: Aunque hemos seleccionado la opción de obtener automáticamente una dirección IP para la segunda VNIC de OCI, el sistema operativo (Oracle Linux) no configurará la dirección IP en la VNIC. La dirección IP está reservada por la consola de OCI, pero aún no está configurada.
Tarea 3: Configurar la dirección IP en la segunda VNIC
La configuración de la dirección IP en la segunda VNIC se puede realizar con varios métodos.
-
Método 1: utilice la interfaz de línea de comandos (CLI de OCI) de Oracle Cloud Infrastructure (paquete
oci-utils
) para asignar una dirección IP a la segunda interfaz de una instancia de OCI Compute mediante el comando OCI-network-config. -
Método 2: utilice la CLI de OCI (paquete
oci-utils
) para asignar una dirección IP a la segunda interfaz de una instancia de OCI Compute mediante el daemon ocid. -
Método 3: utilice la secuencia de comandos OCI_Multi_VNIC_Setup.
-
Método 4: cree el archivo de configuración de interfaz manualmente para la nueva VNIC en la carpeta
/etc/sysconfig/network-scripts/
.
Nota: Para obtener una experiencia de aprendizaje completa y práctica, comience con el método 1 o el método 2, ya que aprovechan las herramientas nativas de OCI y proporcionan una configuración sencilla. A medida que se familiarice, explore el método 3 para la creación de scripts y la automatización, y, por último, pruebe el método 4 para obtener configuraciones manuales avanzadas.
Método 1: uso de la CLI de OCI (paquete oci-utils
) para asignar una dirección IP a la segunda interfaz mediante el comando oci-network-config
En este método, cree una nueva instancia denominada sriov-test-04
y asigne una dirección IP a la segunda interfaz mediante el comando oci-network-config.
Requisitos: se ha aprovisionado una nueva instancia y se ha agregado una segunda VNIC.
-
Ejecute los siguientes comandos.
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Observe la interfaz
ens3
. - Tenga en cuenta que la interfaz
ens3
tiene una dirección IP configurada. - Observe la interfaz
ens5
. - Tenga en cuenta que la interfaz
ens5
no tiene ninguna dirección IP configurada. - Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. - Tenga en cuenta que solo hay un gateway disponible para la interfaz
ens3
.
- Ejecute el comando
-
Los siguientes comandos se utilizaron para probar si los comandos
oci-utils
están funcionando listos para usar.- Ejecute el comando
sudo oci-compartmentid
para recuperar el OCID del compartimento al que pertenece la instancia. - Ejecute el comando
sudo oci-instanceid
para recuperar el OCID de la instancia.
Aquí, hemos demostrado que los comandos
oci-utils
están funcionando listos para usar. - Ejecute el comando
-
Ejecute los siguientes comandos.
- Ejecute el comando
sudo oci-network-config show
para recuperar toda la configuración de red de la instancia. - Tenga en cuenta el error: No se puede mostrar la información: Fallo al obtener la sesión de API. La información relativa a las VNIC de la instancia no se proporcionará en el nivel del sistema operativo y no en el nivel de OCI.
- Observe la información de nivel del sistema operativo en la interfaz
ens3
. - Observe la información de nivel del sistema operativo en la interfaz
ens5
. - Observe el indicador
ADD
para la interfazens5
.
Para configurar la interfaz
ens5
que está marcada actualmente conADD
, ejecute el comandosudo oci-network-config configure
.Esto no es posible, ya que se obtendrá el mismo error al ejecutar el comando
oci-network-config show
que es No se puede mostrar información: Fallo al obtener la sesión de API.Pregunta: ¿por qué aparece este error?
Solución: una VCN no es un objeto propiedad de una instancia, lo que significa que la instancia no puede acceder directamente a la información de la VCN sin una autenticación adecuada. Para permitir que la instancia recupere los detalles de la VCN de la API, debe crear un grupo dinámico que incluya la instancia y asignar una política que otorgue los permisos necesarios.
- Ejecute el comando
-
Para permitir que una instancia de OCI Compute recupere detalles de VCN a través de la API, siga los pasos:
-
Crear un grupo dinámico: este grupo dinámico incluye las instancias que necesitan acceso a la API. Puede definir el grupo mediante reglas basadas en atributos como el OCID de instancia o el compartimento.
-
Asignar permisos con una política: debe crear una política de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) que otorgue al grupo dinámico permiso para leer o gestionar recursos relacionados con la VCN. Por ejemplo:
allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
-
Usar principales de instancia para autenticación: las instancias del grupo dinámico se autentican directamente mediante su identidad, lo que permite un acceso seguro a la API sin embeber credenciales en la aplicación. Este método simplifica la gestión de la seguridad al tiempo que mantiene un control de acceso sólido.
-
-
Vaya a la consola de OCI.
- Haga clic en el menú de hamburguesa (≡), vaya a Compute, Instances y seleccione la instancia informática para la que desea ejecutar los siguientes comandos
sudo oci-network-config show
ysudo oci-network-config configure
. - Haga clic en Mostrar para mostrar el valor de OCID de la instancia.
- Haga clic en Copiar para copiar el valor de OCID de la instancia.
- Haga clic en el menú de hamburguesa (≡), vaya a Identidad, Dominios, Dominio por defecto y haga clic en Grupos dinámicos.
- Haga clic en Crear grupo dinámico.
- Introduzca un nombre para el grupo dinámico. En este ejemplo, utilizaremos
sriov-test-04
. - Haga clic en Creador de reglas.
- Seleccione OCID de instancia en Coincidir instancias con.
- Introduzca el valor del OCID de instancia en Valor.
- Haga clic en Agregar regla.
- Tenga en cuenta que se agrega una nueva regla al grupo.
- Haga clic en Crear.
- Haga clic en el menú de hamburguesa (≡), vaya a Compute, Instances y seleccione la instancia informática para la que desea ejecutar los siguientes comandos
-
Ahora que tenemos el grupo al que pertenece la instancia, necesitamos crear una política en los compartimentos que contienen la instancia. Esta política permitirá a las instancias del grupo realizar operaciones en objetos de VCN, como subredes.
- Haga clic en el menú de hamburguesa (≡), vaya a Identidad y haga clic en Compartimentos.
- Haga clic en el compartimento raíz. En este ejemplo, es
oraseemeaocids4
.
- Tenga en cuenta que ahora estamos en los compartimentos secundarios.
- Haga clic en el siguiente compartimento secundario. En este ejemplo, es
NETWORK
.
- Tenga en cuenta que ahora estamos en el siguiente compartimento secundario.
- Haga clic en el siguiente compartimento secundario. En este ejemplo, es
Iwan
.
- Asegúrese de que se ha seleccionado el compartimento correcto.
- Haga clic en Políticas.
- Haga clic en Crear política.
-
En Crear política, introduzca la siguiente información.
- Introduzca un nombre para la política. En este ejemplo, utilizaremos
allow-sriov-test-04-to-vcn
. - Introduzca una descripción para la política. En este ejemplo, utilizaremos
allow-sriov-test-04-to-vcn
. - Seleccione Mostrar editor manual.
- Introduzca la siguiente política:
allow dynamic-group sriov-test-04 to manage all-resources in compartment Iwan
. - Haga clic en Crear.
- Introduzca un nombre para la política. En este ejemplo, utilizaremos
-
Observe la nueva sentencia de política dentro de la política recién creada.
-
Ahora que hemos permitido a la instancia realizar llamadas de API a través de la CLI de OCI a la VCN.
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
no tiene ninguna dirección IP configurada. - Ejecute el comando
sudo oci-network-config show
para recuperar toda la configuración de red de la instancia en el nivel de OCI. El error ha desaparecido. - Tenga en cuenta la información de nivel de OCI en la interfaz
ens5
y el indicadorADD
para la interfazens5
. - Observe la información de nivel del sistema operativo en las interfaces
ens3
yens5
.
- Ejecute el comando
-
Antes de ejecutar el comando
sudo oci-network-config configure
para configurar la dirección IP de la segunda VNIC, debemos crear un nuevo directorio denominado/etc/iproute2
y un nuevo archivo denominado/etc/iproute2/rt_tables
. Esto es necesario para que el sistema pueda configurar correctamente el enrutamiento y la puerta de enlace por defecto para esta nueva interfaz.El archivo
/etc/iproute2/rt_tables
se utiliza para definir y gestionar varias tablas de enrutamiento en Linux y para activar el enrutamiento basado en políticas. Asigna nombres legibles por humanos a números de tabla de enrutamiento, lo que permite configuraciones avanzadas como el enrutamiento de tráfico específico a través de diferentes gateways, interfaces o ISP.Ejecute el comando
sudo mkdir -p /etc/iproute2
para crear un directorio denominado/etc/iproute2
y el comandosudo touch /etc/iproute2/rt_tables
para crear el archivo denominadort_tables
. -
Ejecute los siguientes comandos.
- Ejecute el comando
sudo oci-network-config configure
para configurar la dirección IP de la segunda VNIC. - Observe el mensaje Configured (Configurado).
- Ejecute el comando
sudo oci-network-config show
para recuperar toda la configuración de red de la instancia en el nivel de OCI. - La información de nivel de OCI en la interfaz
ens5
y el indicadorADD
para la interfazens5
ya no están. - Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - La interfaz
ens5
ahora tiene una dirección IP configurada. - Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. - Tenga en cuenta que el gateway ahora está disponible para la interfaz
ens5
.
- Ejecute el comando
more /etc/iproute2/rt_tables
para verificar si se ha realizado una nueva entrada. - Observe la entrada
11 ort
. - Ejecute el comando
ip route show table 11
para revisar la tabla de enrutamiento para esta asignación. - Tenga en cuenta que hay una ruta por defecto para la interfaz
ens5
, la nueva segunda VNIC de la instancia.
- Ejecute el comando
Método 2: utilice la CLI de OCI (paquete oci-utils
) para asignar una dirección IP a la segunda interfaz mediante ocid daemon
En este método, cree una nueva instancia denominada sriov-test-01
y asigne una dirección IP a la segunda interfaz mediante el daemon ocid.
Requisitos: se ha aprovisionado una nueva instancia y se ha agregado una segunda VNIC.
-
Ejecute los siguientes comandos.
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
no tiene ninguna dirección IP configurada.
- Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. - Tenga en cuenta que solo hay un gateway disponible para la interfaz
ens3
.
- Ejecute el comando filtrado
ip -f inet -o addr
para mostrar todas las direcciones IP configuradas en todas las interfaces. - Tenga en cuenta que solo hay una interfaz configurada y que la dirección IP es la interfaz
ens3
.
- Ejecute el comando
systemctl list-unit-files ocid.service
para verificar si el daemon ocid está activado. - Tenga en cuenta que el daemon ocid está desactivado.
- Ejecute el comando
sudo systemctl start ocid
para iniciar el daemon ocid. - Ejecute el comando
sudo systemctl status ocid
para verificar el estado del daemon ocid. - Tenga en cuenta que el daemon ocid está activo y en ejecución.
- Ejecute el comando filtrado
ip -f inet -o addr
para mostrar todas las direcciones IP configuradas en todas las interfaces. - Tenga en cuenta que la interfaz
ens5
ahora está configurada y tiene una dirección IP.
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
ahora tiene una dirección IP configurada.
- Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. - Tenga en cuenta que el gateway ahora está disponible para la interfaz
ens5
.
- Ejecute el comando
-
Para asegurarse de que el servicio de OCID se inicie automáticamente después de un reinicio, ejecute el comando
sudo systemctl enable ocid
. -
Igual que el método 1, necesitamos crear un directorio denominado
/etc/iproute2
y un archivo denominado/etc/iproute2/rt_tables
. Esto es necesario para que el sistema pueda configurar correctamente el enrutamiento y la puerta de enlace por defecto para esta nueva interfaz.El archivo
/etc/iproute2/rt_tables
se utiliza para definir y gestionar varias tablas de enrutamiento en Linux y para activar el enrutamiento basado en políticas. Asigna nombres legibles por humanos a números de tabla de enrutamiento, lo que permite configuraciones avanzadas como el enrutamiento de tráfico específico a través de diferentes gateways, interfaces o ISP.Ejecute el comando
sudo mkdir -p /etc/iproute2
para crear un directorio denominado/etc/iproute2
y el comandosudo touch /etc/iproute2/rt_tables
para crear el archivo denominadort_tables
. -
Ejecute el comando
sudo reboot
.- Ejecute el comando
more /etc/iproute2/rt_tables
para verificar si se ha realizado una nueva entrada. - Observe la entrada
11 ort3
. - Ejecute el comando
ip route show table 11
para revisar la tabla de enrutamiento para esta asignación. - Tenga en cuenta que hay una ruta por defecto para la interfaz
ens5
, la nueva segunda VNIC de la instancia.
- Ejecute el comando
Método 3: utilice el script OCI_Multi_VNIC_Setup
En este método, cree una nueva instancia denominada sriov-test-02
y utilice el script OCI_Multi_VNIC_Setup para configurar la dirección IP para la segunda VNIC.
Requisitos: se ha aprovisionado una nueva instancia y se ha agregado una segunda VNIC.
-
Ejecute los siguientes comandos.
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
no tiene ninguna dirección IP configurada. - Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. - Tenga en cuenta que solo hay un gateway disponible para la interfaz
ens3
.
-
Descargue la secuencia de comandos con el siguiente comando curl.
curl -o OCI_Multi_VNIC_Setup.sh https://raw.githubusercontent.com/Olygo/OCI_Multi_VNIC_Setup/refs/heads/main/OCI_Multi_VNIC_Setup.sh
-
Ejecute el comando
ls -l
para mostrar todos los archivos. -
Tenga en cuenta que el script
CI_Multi_VNIC_Setup.sh
se ha descargado correctamente. -
Ejecute el comando
chmod +x ./OCI_Multi_VNIC_Setup.sh
para que el script descargado sea ejecutable. -
Ejecute el comando
sudo ./OCI_Multi_VNIC_Setup.sh
para ejecutar el script.
- Ejecute el comando
-
Recopile información de la consola de OCI que necesitamos utilizar como entrada al ejecutar el script.
- En la página Detalles de instancia, anote la dirección IPv4 privada de la interfaz principal.
- Desplazar hacia abajo.
- Haga clic en VNIC asociadas.
- Haga clic en la segunda VNIC.
- Anote la dirección MAC de la segunda VNIC.
- Anote la dirección IP de la segunda VNIC.
Nota: aunque la dirección IP no esté configurada en el sistema operativo de la instancia, la dirección IP ya está reservada por la gestión de la consola de OCI.
-
Mediante la dirección IP y la información de subred, determine la puerta de enlace por defecto para la subred, ya que la secuencia de comandos necesitará esta información.
Nota: La consola de OCI no proporciona detalles sobre el gateway por defecto, pero suele ser la primera dirección IP utilizable en la subred.
Tenemos la siguiente información:
Interfaz principal (ens3) Interfaz secundaria (ens5) Subred IPv4: 10.0.0.0/29 10.0.3.0/27 Dirección IPv4: 10.0.0.4 10.0.3.5/27 Gateway IPv4: 10.0.0.1 10.0.3.1 Dirección MAC: No es necesario para el script 2:0:17:0:61:1 -
Introduzca la siguiente información.
- Nombre de interfaz de VNIC principal: introduzca
ens3
. - IP de VNIC principal: introduzca
10.0.0.4
. - IP de gateway de VNIC principal: introduzca
10.0.0.1
. - Nombre de interfaz de VNIC secundaria: introduzca
ens5
. - Dirección IP de VNIC secundaria (notación CIDR): introduzca
10.0.3.5/27
con notación CIDR completa. - Dirección MAC de VNIC secundaria: introduzca
02:00:17:00:61:01
. - Esta interfaz formará parte de una subred diferente, por lo que introduzca
y
aquí. - Gateway de VNIC secundario: introduzca
10.0.3.1
.
- Verifique la información e introduzca
y
para confirmar. - Introduzca
y
para confirmar la configuración de nuevo. - Tenga en cuenta que la secuencia de comandos iniciará la configuración de la interfaz y proporcionará actualizaciones de estado al hacerlo.
- Nombre de interfaz de VNIC principal: introduzca
-
A continuación se proporciona la salida completa de los mensajes de estado:
Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... *** Checking if NetworkManager CLI (nmcli) is installed *** nmcli is already installed. *** Configuring NetworkManager *** NetworkManager is already enabled. NetworkManager is already running. NetworkManager is configured and running. *** Check and install iproute if not installed *** Package 'iproute' is already installed. Proceeding. *** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header. *** Starting ens5 configuration and persistence setup *** *** Configure secondary VNIC with NetworkManager *** Connection 'ens5' (582dd2d7-3a3e-45b9-8289-ce3d474f4b74) successfully added. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) *** Enable IP forwarding and configure reverse path filtering *** # Enable IP forwarding net.ipv4.ip_forward=1 # Configure reverse path filtering net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.default.rp_filter=2 net.ipv4.conf.ens3.rp_filter=2 net.ipv4.conf.ens5.rp_filter=2 *** Apply sysctl settings immediately *** kernel.unknown_nmi_panic = 1 net.ipv4.ip_forward = 1 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.ens3.rp_filter = 2 net.ipv4.conf.ens5.rp_filter = 2 *** Adding custom routing tables *** 100 vnic_1 200 vnic_2 *** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service. *** Testing connectivity *** PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data. 64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=0.059 ms 64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=0.037 ms 64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.031 ms 64 bytes from 10.0.0.4: icmp_seq=4 ttl=64 time=0.027 ms --- 10.0.0.4 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3073ms rtt min/avg/max/mdev = 0.027/0.038/0.059/0.013 ms PING 10.0.3.5 (10.0.3.5) 56(84) bytes of data. 64 bytes from 10.0.3.5: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from 10.0.3.5: icmp_seq=2 ttl=64 time=0.022 ms 64 bytes from 10.0.3.5: icmp_seq=3 ttl=64 time=0.023 ms 64 bytes from 10.0.3.5: icmp_seq=4 ttl=64 time=0.035 ms --- 10.0.3.5 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.022/0.026/0.035/0.007 ms PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.098 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.097 ms 64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.067 ms 64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.060 ms --- 10.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.060/0.080/0.098/0.019 ms *** Network configuration completed *** IP rules: 0: from all lookup local 32764: from 10.0.3.5 lookup vnic_2 32765: from 10.0.0.4 lookup vnic_1 32766: from all lookup main 32767: from all lookup default $ nmcli device show ens5 GENERAL.DEVICE: ens5 GENERAL.TYPE: ethernet GENERAL.HWADDR: 02:00:17:00:61:01 GENERAL.MTU: 9000 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens5 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 10.0.3.5/27 IP4.GATEWAY: 10.0.3.1 IP4.ROUTE[1]: dst = 10.0.3.0/27, nh = 0.0.0.0, mt = 101 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 101 IP4.ROUTE[3]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 0, table=200 IP6.ADDRESS[1]: fe80::70ba:d30f:3dac:6462/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024 *** Configuration complete! ens5 is set up and all settings are persistent *** [opc@sriov-test-02 ~]$
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
ahora tiene una dirección IP configurada. - Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. Tenga en cuenta que el gateway ahora está disponible para la interfazens5
.
Nota:
- Configurar una dirección IP y asegurarse de que el enrutamiento funcione correctamente son dos cosas diferentes.
- El script también configurará la parte de enrutamiento para nosotros.
- Preste atención a las salidas específicas del script.
- Ejecute el comando
-
La siguiente parte del script creará un directorio denominado
/etc/iproute2 directory
y un archivo denominadort_tables
.*** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header.
-
La siguiente parte de la secuencia de comandos agregará las entradas necesarias al archivo
rt_tables
.*** Adding custom routing tables *** 100 vnic_1 200 vnic_2
-
La siguiente parte del script agregará las reglas de enrutamiento de IP para permitir el enrutamiento basado en políticas en la instancia y también activará el servicio para el enrutamiento basado en políticas, que es necesario si tiene una instancia con varias VNIC.
*** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service.
-
Ejecute los siguientes comandos.
- Ejecute el comando
more /etc/iproute2/rt_tables
para verificar si se ha realizado una nueva entrada. - Tenga en cuenta que las entradas
100 vnic_1
y200 vnic_2
. - Ejecute el comando
ip route show table 100
para revisar la tabla de enrutamiento para esta asignación y observe que hay una ruta por defecto para la interfazens3
, la VNIC principal, en la instancia. - Ejecute el comando
ip route show table 200
para revisar la tabla de enrutamiento para esta asignación y observe que hay una ruta por defecto para la interfazens5
, la nueva segunda VNIC de la instancia.
- Ejecute el comando
Método 4: Creación manual del archivo de configuración de interfaz
Cree una nueva instancia denominada sriov-test-03
y configure la dirección IP para la segunda VNIC mediante una definición para la nueva VNIC en el directorio /etc/sysconfig/network-scripts/
.
Nota: En este método, configuraremos casi todos los pasos, que se realizaron automáticamente mediante el script en el método 3.
Requisitos: se ha aprovisionado una nueva instancia y se ha agregado una segunda VNIC.
-
Ejecute el siguiente comando.
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
no tiene ninguna dirección IP configurada. - Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. - Tenga en cuenta que solo hay un gateway disponible para la interfaz
ens3
.
- Ejecute el comando
-
Vaya a Instancia, VNIC asociadas y seleccione la segunda VNIC para recuperar la dirección IP de la segunda VNIC. Anote la dirección IP.
-
Vaya a la carpeta
/network-scripts
mediante el comandocd /etc/sysconfig/network-scripts/
y cree un nuevo archivo en la misma carpeta con el nombreifcfg-ens5
mediante el comandosudo nano ifcfg-ens5
. -
Configure la interfaz
ens5
con los siguientes parámetros.NAME="ens5" DEVICE="ens5" IPADDR=10.0.3.19 NETMASK=255.255.255.224 GATEWAY=10.0.3.1 ONBOOT=yes
- La dirección IP es la misma que recuperamos de la consola de OCI.
- La subred se deriva de la subred de la VCN a la que está conectada esta interfaz.
- La dirección IP de la puerta de enlace es la primera dirección IP de la subred.
-
Guarde el archivo de configuración denominado
ifcfg-ens5
con el editor nano.- Muestre los archivos del directorio
/etc/sysconfig/network-scripts/
con el comandols -l
. - Tenga en cuenta que hay un archivo de configuración de interfaz para
ens3
. - Tenga en cuenta que hay un archivo de configuración de interfaz para
ens5
.
- Verifique el contenido del archivo
ifcfg-ens5
con el comandomore ifcfg-ens5
. - Asegúrese de que todos los parámetros estén configurados correctamente.
- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
aún no tiene ninguna dirección IP configurada.
- Muestre los archivos del directorio
-
Reinicie la instancia con el comando
sudo reboot
.- Ejecute el comando
ip a
para recuperar la dirección IP de todas las interfaces. - Tenga en cuenta que la interfaz
ens5
ahora tiene una dirección IP configurada. - Ejecute el comando
route -n
para recuperar todas las rutas y gateways por defecto para todas las interfaces. Tenga en cuenta que el gateway ahora está disponible para la interfazens5
.
Nota: Configure una dirección IP y asegúrese de que el enrutamiento funciona correctamente son dos cosas diferentes.
- Ejecute el comando
-
Configurar direccionamiento. El archivo
/etc/iproute2/rt_tables
se utiliza para definir y gestionar varias tablas de enrutamiento en Linux y para activar el enrutamiento basado en políticas. Asigna nombres legibles por humanos a números de tabla de enrutamiento, lo que permite configuraciones avanzadas como el enrutamiento de tráfico específico a través de diferentes gateways, interfaces o ISP.Ejecute el comando
sudo mkdir -p /etc/iproute2
para crear el directorio denominado/etc/iproute2
y el comandosudo nano /etc/iproute2/rt_tables
para crear el archivo denominadort_tables
. -
Configure los siguientes parámetros en el archivo
rt_tables
.100 vnic_1 200 vnic_2
-
Cree el script de persistencia de direccionamiento de política con el comando
sudo nano /usr/local/bin/setup_policy_routing.sh
.#!/bin/bash # Reapply IP rules ip rule add from 10.0.0.3 table vnic_1 ip rule add from 10.0.3.19 table vnic_2 # Reapply routing rules ip route add default via 10.0.0.1 dev ens3 table vnic_1 ip route add default via 10.0.3.1 dev ens5 table vnic_2
-
Ejecute el comando
sudo chmod +x /usr/local/bin/setup_policy_routing.sh
para que el script de persistencia de enrutamiento de políticas sea ejecutable. -
Cree un servicio systemd para la secuencia de comandos de enrutamiento de políticas con el comando
nano /etc/systemd/system/policy-routing.service
. Esto es necesario si tiene una instancia con varias VNIC con el comando. -
Configure los siguientes parámetros en el archivo
policy-routing.service
.[Unit] Description=Setup Policy Routing for Multiple VNICs After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/setup_policy_routing.sh RemainAfterExit=true [Install] WantedBy=multi-user.target
-
Ejecute el comando
sudo chmod +x /etc/systemd/system/policy-routing.service
para que el archivo de servicio para el enrutamiento basado en políticas sea ejecutable. -
Ejecute el comando
sudo systemctl start policy-routing.service
para iniciar el servicio para el enrutamiento basado en políticas. -
Ejecute el comando
sudo systemctl status policy-routing
para asegurarse de que el servicio para el enrutamiento basado en políticas esté cargado y activo.[opc@sriov-test-03 ~]$ sudo systemctl status policy-routing ● policy-routing.service - Setup Policy Routing for Multiple VNICs Loaded: loaded (/etc/systemd/system/policy-routing.service; enabled; vendor preset: disabled) Active: active (exited) since Wed 2024-12-11 09:07:16 GMT; 4 weeks 1 days ago Process: 2415 ExecStart=/usr/local/bin/setup_policy_routing.sh (code=exited, status=0/SUCCESS) Main PID: 2415 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 99891) Memory: 0B CGroup: /system.slice/policy-routing.service Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. [opc@sriov-test-03 ~]$
-
Ejecute el comando
sudo systemctl enable policy-routing.service
para asegurarse de que el servicio para el enrutamiento basado en políticas se iniciará cuando la instancia se (re)inicie. -
Reinicie la instancia con el comando
sudo reboot
. -
Después del reinicio, ejecute los siguientes comandos.
- Ejecute el comando
more /etc/iproute2/rt_tables
para verificar si se ha realizado una nueva entrada. - Tenga en cuenta las entradas
100 vnic_1
y200 vnic_2
que hemos configurado manualmente. - Ejecute el comando
ip route show table 100
para revisar la tabla de enrutamiento para esta asignación y observe que hay una ruta por defecto para la interfazens3
, la VNIC principal, en la instancia. - Ejecute el comando
ip route show table 200
para revisar la tabla de enrutamiento para esta asignación y observe que hay una ruta por defecto para la interfazens5
, la nueva segunda VNIC de la instancia.
- Ejecute el comando
Pasos Siguientes
La selección del método adecuado para configurar una segunda interfaz en una instancia de OCI Linux depende de sus requisitos, experiencia técnica y nivel de control deseado. Si busca una configuración sencilla y eficaz, se recomienda utilizar los métodos 1 y 2, que utilizan el paquete oci-utils
y las herramientas nativas de Oracle. Estos métodos son ideales para los usuarios que desean aprovechar la funcionalidad incorporada de OCI sin sumergirse en la configuración manual o los scripts externos.
Además, cuando la automatización y la escalabilidad son fundamentales, el método 3, que utiliza la secuencia de comandos OCI_Multi_VNIC_Setup
, proporciona una solución flexible. Es especialmente útil al gestionar varias interfaces en diferentes instancias, lo que ofrece ahorro de tiempo y consistencia en la configuración.
Mientras tanto, el método 4, el enfoque de configuración manual, proporciona el nivel más alto de personalización. Este método es más adecuado para usuarios avanzados o entornos específicos en los que las herramientas de automatización no están disponibles o no se prefieren. También sirve como una excelente manera de comprender el funcionamiento interno de las redes en las instancias de Oracle Linux.
Al comprender estos métodos, obtienes la flexibilidad de configurar interfaces secundarias en una variedad de escenarios, desde la configuración básica hasta arquitecturas multinube complejas. Con el enfoque adecuado, puedes garantizar configuraciones de red fiables y eficientes adaptadas a tus cargas de trabajo de OCI.
Agradecimientos
- Autor: Iwan Hoogendoorn (especialista en red de OCI)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Assign an IP Address to a Second Interface on an Oracle Linux Instance
G25214-01
January 2025