Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Designar um Endereço IP a uma Segunda Interface em uma Instância do Oracle Linux
Introdução
Este tutorial fornece instruções passo a passo sobre como atribuir um endereço IP a uma interface de rede secundária em uma instância do Oracle Linux. Se você está expandindo sua configuração de rede ou configurando uma política de roteamento específica, adicionar e configurar uma segunda interface é uma habilidade crítica.
Você aprenderá a:
-
Identifique as interfaces de rede disponíveis.
-
Configure a interface secundária com um endereço IP estático ou dinâmico.
-
Atualize os arquivos de configuração de rede para persistência nas reinicializações.
-
Verifique a configuração e garanta a conectividade.
No final deste tutorial, você poderá estender os recursos de rede da sua instância do Oracle Linux, permitir que ela interaja perfeitamente em várias sub-redes ou redes.
Objetivos
Neste tutorial, aprenderemos a atribuir um endereço IP a uma segunda interface de rede em uma instância do Oracle Linux.
-
Entenda os arquivos de configuração envolvidos na configuração de uma interface de rede secundária.
-
Saiba como atribuir um endereço IP estático à segunda interface.
-
Verifique a conectividade e a funcionalidade adequada da interface recém-configurada.
Pré-requisitos
- Crie uma rede virtual na nuvem (VCN) e 2 sub-redes x.
Tarefa 1: Criar uma Instância do OCI Compute
Nesta tarefa, criaremos uma nova instância na Oracle Cloud Infrastructure (OCI).
-
Vá para a Console do OCI, navegue até Compute, Instâncias e clique em Criar instância.
-
Em Criar instância de computação, digite as informações a seguir.
- Informe um Nome para a instância. Neste exemplo, usaremos
sriov-test-01
. - Rolar para Baixo.
- Clique em Alterar forma.
- Selecione VM.Standard.E4. Flex, mas você também pode usar E5.
- Rolar para Baixo.
- Clique em Selecionar rede virtual na nuvem existente.
- Selecione a VCN. Neste exemplo, estamos usando a VCN
oke
. - Selecione a sub-rede existente para a vNIC principal.
- Rolar para Baixo.
- Para o primeiro endereço IP da interface VNIC, em Endereço IPv4 privado, selecione Designar automaticamente endereço IPv4 privado.
- À medida que selecionamos uma sub-rede pública para a interface primária, em Endereço IPv4 público, selecione Designar endereço IPv4 público automaticamente.
- Rolar para Baixo.
- Clique em Fazer upload de arquivos de chave pública (.pub) para fazer upload de chaves SSH públicas e privadas existentes (geradas anteriormente).
- Clique em Pesquisar para selecionar a chave pública existente.
- Verifique se a chave pública existente está selecionada para upload.
- Clique em Criar.
- Se a instância for implantada com sucesso, o status mostrará RUNNING.
- Observe que a VNIC Principal está configurada e os endereços IP são designados automaticamente.
- Informe um Nome para a instância. Neste exemplo, usaremos
Tarefa 2: Adicionar Segunda VNIC à Instância
-
Vá para a página Detalhes da instância.
- Clique em VNICs Anexadas.
- Observe que há apenas uma VNIC e a renomeamos para
sr-iov-test-01
(o nome padrão fornecido pelo OCI é diferente). - Clique em Criar VNIC.
-
Em Criar VNIC, especifique as informações a seguir.
- Informe um Nome para a segunda VNIC. Neste exemplo, usaremos
secondary-vnic
. - Selecione a VCN. Neste exemplo, estamos usando a VCN
oke
. - Selecione a sub-rede existente para a VNIC secundária. Esta é uma sub-rede diferente daquela à qual a VNIC Principal está anexada.
- Selecione Usar grupos de segurança de rede para controlar o tráfego (opcional).
- (Opcional) Selecione allow-all para criar um Grupo de segurança de rede que permita todo o tráfego de entrada e saída.
- Rolar para Baixo.
- Para o segundo endereço IP da interface da VNIC, em Endereço IPv4 privado, selecione Designar automaticamente endereço IPv4 privado.
- Clique em Salvar alterações.
- Informe um Nome para a segunda VNIC. Neste exemplo, usaremos
-
Observe que a segunda VNIC agora é criada e anexada à instância e à outra sub-rede.
Observação: Mesmo que tenhamos selecionado a opção de obter automaticamente um endereço IP para a segunda VNIC do OCI, o Sistema Operacional (Oracle Linux) não configurará o endereço IP na VNIC. O endereço IP é reservado pela Console do OCI, mas ainda não está configurado.
Tarefa 3: Configurar Endereço IP na Segunda VNIC
A configuração do endereço IP na segunda VNIC pode ser feita com vários métodos.
-
Método 1: Use a CLI do OCI (Interface de Linha de Comando) do Oracle Cloud Infrastructure (pacote
oci-utils
) para designar um endereço IP à segunda interface de uma instância do OCI Compute usando o comando OCI-network-config. -
Método 2: Use a CLI do OCI (pacote
oci-utils
) para designar um endereço IP à segunda interface de uma instância do OCI Compute usando o daemon ocid. -
Método 3: Use o script OCI_Multi_VNIC_Setup.
-
Método 4: Crie o arquivo de configuração da interface manualmente para a nova VNIC na pasta
/etc/sysconfig/network-scripts/
.
Observação: Para uma experiência de aprendizado abrangente e prática, comece com o Método 1 ou o Método 2, pois eles aproveitam as ferramentas nativas da OCI e fornecem uma configuração direta. À medida que você se familiariza, explore o Método 3 para criação de scripts e automação e, por fim, experimente o Método 4 para obter configurações manuais avançadas.
Método 1: Usar a CLI do OCI (pacote oci-utils
) para Designar um Endereço IP à Segunda Interface usando o Comando oci-network-config
Neste método, crie uma nova instância chamada sriov-test-04
e designe um endereço IP à segunda interface usando o comando oci-network-config.
Pré-requisitos: Provisionou uma nova instância e adicionou uma segunda VNIC.
-
Execute os comandos a seguir.
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe a interface
ens3
. - Observe que a interface
ens3
tem um endereço IP configurado. - Observe a interface
ens5
. - Observe que a interface
ens5
não tem endereço IP configurado. - Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. - Observe que só há um gateway disponível para a interface
ens3
.
- Execute o comando
-
Os comandos a seguir foram usados para testar se os comandos
oci-utils
estão funcionando imediatamente.- Execute o comando
sudo oci-compartmentid
para recuperar o OCID do compartimento ao qual a instância pertence. - Execute o comando
sudo oci-instanceid
para recuperar o OCID da instância.
Aqui, provamos que os comandos
oci-utils
estão funcionando prontos para uso. - Execute o comando
-
Execute os comandos a seguir.
- Execute o comando
sudo oci-network-config show
para recuperar toda a configuração de rede da instância. - Observe o erro: Não é possível mostrar informações: Falha ao obter a sessão da API. As informações sobre as VNICs da instância não serão fornecidas no nível do Sistema Operacional e não no nível do OCI.
- Observe as informações no nível do Sistema Operacional na interface
ens3
. - Observe as informações no nível do Sistema Operacional na interface
ens5
. - Observe o flag
ADD
da interfaceens5
.
Para configurar a interface
ens5
que está marcada no momento comADD
, execute o comandosudo oci-network-config configure
.Isso não é possível, pois obteremos o mesmo erro quando executarmos o comando
oci-network-config show
que é Não é possível mostrar informações: Falha ao obter a sessão da API.Pergunta: Por que estamos obtendo esse erro?
Solução: Uma VCN não é um objeto pertencente a uma instância, o que significa que a instância não pode acessar diretamente as informações da VCN sem a autenticação adequada. Para permitir que a instância extraia detalhes da VCN da API, crie um grupo dinâmico que inclua a instância e designe uma política que conceda as permissões necessárias.
- Execute o comando
-
Para permitir que uma instância do OCI Compute extraia detalhes da VCN por meio da API, siga as etapas:
-
Criar um Grupo Dinâmico: Esse grupo dinâmico inclui as instâncias que exigem acesso à API. Você define o grupo usando regras com base em atributos como OCID da instância ou compartimento.
-
Designar Permissões a uma Política: Você precisa criar uma política do OCI IAM (Oracle Cloud Infrastructure Identity and Access Management) que conceda ao grupo dinâmico permissão para ler ou gerenciar recursos relacionados à VCN. Por exemplo:
allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
-
Usar Controladores de Instâncias para Autenticação: As instâncias do grupo dinâmico são autenticadas diretamente usando sua identidade, permitindo acesso seguro à API sem incorporar credenciais no aplicativo. Esse método simplifica o gerenciamento de segurança, mantendo um controle de acesso robusto.
-
-
Vá até a Console do OCI.
- Clique no menu de hambúrguer (≡), navegue até Compute, Instances e selecione a instância de computação para a qual você deseja executar os comandos
sudo oci-network-config show
esudo oci-network-config configure
a seguir. - Clique em Mostrar para exibir o valor do OCID da instância.
- Clique em Copiar para copiar o valor do OCID da instância.
- Clique no menu de hambúrguer (≡), navegue até Identidade, Domínios, Domínio padrão e clique em Grupos dinâmicos.
- Clique em Criar grupo dinâmico.
- Informe um Nome para o grupo dinâmico. Neste exemplo, usaremos
sriov-test-04
. - Clique em Construtor de regras.
- Selecione OCID da Instância em Corresponder instâncias com.
- Informe o valor do OCID da instância em Valor.
- Clique em Adicionar regra.
- Observe que uma nova regra é adicionada ao grupo.
- Clique em Criar.
- Clique no menu de hambúrguer (≡), navegue até Compute, Instances e selecione a instância de computação para a qual você deseja executar os comandos
-
Agora que temos o grupo ao qual a instância pertence, precisamos criar uma política nos compartimentos que contêm a instância. Essa política permitirá que as instâncias do grupo executem operações em objetos da VCN, como sub-redes.
- Clique no menu de hambúrguer (≡), navegue até Identidade e clique em Compartimentos.
- Clique no compartimento raiz. Neste exemplo, é
oraseemeaocids4
.
- Observe que agora estamos nos compartimentos filhos.
- Clique no próximo compartimento filho. Neste exemplo, é
NETWORK
.
- Observe que agora estamos no próximo compartimento filho.
- Clique no próximo compartimento filho. Neste exemplo, é
Iwan
.
- Certifique-se de que o compartimento direito esteja selecionado.
- Clique em Políticas.
- Clique em Criar Política.
-
Em Criar Política, especifique as informações a seguir.
- Digite um Nome para a política. Neste exemplo, usaremos
allow-sriov-test-04-to-vcn
. - Digite uma Descrição para a política. Neste exemplo, usaremos
allow-sriov-test-04-to-vcn
. - Selecione Mostrar editor manual.
- Digite a seguinte política:
allow dynamic-group sriov-test-04 to manage all-resources in compartment Iwan
. - Clique em Criar.
- Digite um Nome para a política. Neste exemplo, usaremos
-
Observe a nova instrução de política dentro da política recém-criada.
-
Agora que permitimos que a instância execute chamadas de API por meio da CLI do OCI para a VCN.
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
não tem endereço IP configurado. - Execute o comando
sudo oci-network-config show
para recuperar toda a configuração de rede da instância no nível do OCI. O erro desapareceu agora. - Observe as informações de nível do OCI na interface
ens5
e o flagADD
para a interfaceens5
. - Observe as informações no nível do Sistema Operacional nas interfaces do
ens3
e doens5
.
- Execute o comando
-
Antes de executarmos o comando
sudo oci-network-config configure
para configurar o endereço IP da segunda VNIC, precisamos criar um novo diretório chamado/etc/iproute2
e um novo arquivo chamado/etc/iproute2/rt_tables
. Isso é necessário para que o sistema possa configurar corretamente o roteamento e o gateway padrão para essa nova interface.O arquivo
/etc/iproute2/rt_tables
é usado para definir e gerenciar várias tabelas de roteamento no Linux e para ativar o roteamento baseado em política. Ele mapeia nomes legíveis para números de tabelas de roteamento, permitindo configurações avançadas, como rotear tráfego específico por meio de diferentes gateways, interfaces ou ISPs.Execute o comando
sudo mkdir -p /etc/iproute2
para criar um diretório chamado/etc/iproute2
e o comandosudo touch /etc/iproute2/rt_tables
para criar um arquivo chamadort_tables
. -
Execute os comandos a seguir.
- Execute o comando
sudo oci-network-config configure
para configurar o endereço IP da segunda VNIC. - Observe a mensagem Configurado.
- Execute o comando
sudo oci-network-config show
para recuperar toda a configuração de rede da instância no nível do OCI. - As informações de nível do OCI na interface
ens5
e no flagADD
da interfaceens5
agora desapareceram. - Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - A interface
ens5
agora tem um endereço IP configurado. - Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. - Observe que o gateway agora está disponível para a interface
ens5
.
- Execute o comando
more /etc/iproute2/rt_tables
para verificar se uma nova entrada foi feita. - Observe a entrada
11 ort
. - Execute o comando
ip route show table 11
para revisar a tabela de roteamento desse mapeamento. - Observe que há uma rota padrão para a interface
ens5
, a nova segunda VNIC da instância.
- Execute o comando
Método 2: Usar a CLI do OCI (pacote oci-utils
) para Designar um Endereço IP à Segunda Interface usando o ocid daemon
Neste método, crie uma nova instância chamada sriov-test-01
e designe um endereço IP à segunda interface usando o ocid daemon.
Pré-requisitos: Provisionou uma nova instância e adicionou uma segunda VNIC.
-
Execute os comandos a seguir.
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
não tem endereço IP configurado.
- Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. - Observe que só há um gateway disponível para a interface
ens3
.
- Execute o comando filtrado
ip -f inet -o addr
para mostrar todos os endereços IP configurados em todas as interfaces. - Observe que só há interface configurada e o endereço IP é a interface
ens3
.
- Execute o comando
systemctl list-unit-files ocid.service
para verificar se o daemon ocid está ativado. - Observe que o daemon ocid está desativado.
- Execute o comando
sudo systemctl start ocid
para iniciar o daemon ocid. - Execute o comando
sudo systemctl status ocid
para verificar o status do daemon ocid. - Observe que o daemon ocid está ativo e em execução.
- Execute o comando filtrado
ip -f inet -o addr
para mostrar todos os endereços IP configurados em todas as interfaces. - Observe que a interface
ens5
agora está configurada e tem um endereço IP.
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
agora tem um endereço IP configurado.
- Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. - Observe que o gateway agora está disponível para a interface
ens5
.
- Execute o comando
-
Para garantir que o serviço OCID seja iniciado automaticamente após uma reinicialização, execute o comando
sudo systemctl enable ocid
. -
O mesmo que o Método 1, precisamos criar um diretório chamado
/etc/iproute2
e um arquivo chamado/etc/iproute2/rt_tables
. Isso é necessário para que o sistema possa configurar corretamente o roteamento e o gateway padrão para essa nova interface.O arquivo
/etc/iproute2/rt_tables
é usado para definir e gerenciar várias tabelas de roteamento no Linux e para ativar o roteamento baseado em política. Ele mapeia nomes legíveis para números de tabelas de roteamento, permitindo configurações avançadas, como rotear tráfego específico por meio de diferentes gateways, interfaces ou ISPs.Execute o comando
sudo mkdir -p /etc/iproute2
para criar um diretório chamado/etc/iproute2
e o comandosudo touch /etc/iproute2/rt_tables
para criar um arquivo chamadort_tables
. -
Execute o comando
sudo reboot
.- Execute o comando
more /etc/iproute2/rt_tables
para verificar se uma nova entrada foi feita. - Observe a entrada
11 ort3
. - Execute o comando
ip route show table 11
para revisar a tabela de roteamento desse mapeamento. - Observe que há uma rota padrão para a interface
ens5
, a nova segunda VNIC da instância.
- Execute o comando
Método 3: Usar o Script OCI_Multi_VNIC_Setup
Nesse método, crie uma nova instância chamada sriov-test-02
e use o script OCI_Multi_VNIC_Setup para configurar o endereço IP da segunda VNIC.
Pré-requisitos: Provisionou uma nova instância e adicionou uma segunda VNIC.
-
Execute os comandos a seguir.
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
não tem endereço IP configurado. - Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. - Observe que só há um gateway disponível para a interface
ens3
.
-
Faça download do script com o seguinte 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
-
Execute o comando
ls -l
para listar todos os arquivos. -
Observe que o download do script
CI_Multi_VNIC_Setup.sh
foi feito com sucesso. -
Execute o comando
chmod +x ./OCI_Multi_VNIC_Setup.sh
para tornar o script baixado executável. -
Execute o comando
sudo ./OCI_Multi_VNIC_Setup.sh
para executar o script.
- Execute o comando
-
Reúna algumas informações da Console do OCI que precisamos usar como entrada quando executarmos o script.
- Na página Detalhes da instância, anote o Endereço IPv4 privado da interface principal.
- Rolar para Baixo.
- Clique em VNICs Anexadas.
- Clique na segunda VNIC.
- Anote o endereço MAC da segunda VNIC.
- Anote o endereço IP da segunda VNIC.
Observação: Embora o endereço IP não esteja configurado no Sistema Operacional da instância, o endereço IP já está reservado pelo gerenciamento da Console do OCI.
-
Usando o endereço IP e as informações da sub-rede, determine o gateway padrão da sub-rede, pois o script exigirá essas informações.
Observação: A Console do OCI não fornece detalhes sobre o gateway padrão, mas geralmente é o primeiro endereço IP utilizável na sub-rede.
Temos as seguintes informações:
Interface principal (ens3) Interface secundária (ens5) Sub-rede IPv4: 10.0.0.0/29 10.0.3.0/27 Endereço IPv4: 10.0.0.4 10.0.3.5/27 Gateway IPv4: 10.0.0.1 10.0.3.1 Endereço MAC: Não obrigatório para script 2:0:17:0:61:1 -
Digite as seguintes informações.
- Nome da Interface da VNIC Principal: Digite
ens3
. - IP da VNIC Principal: Digite
10.0.0.4
. - IP do Gateway de VNIC Principal: Digite
10.0.0.1
. - Nome da Interface da VNIC Secundária: Digite
ens5
. - Endereço IP da VNIC Secundária (Notação CIDR): Digite
10.0.3.5/27
com notação CIDR completa. - Endereço MAC da VNIC Secundária: Digite
02:00:17:00:61:01
. - Essa interface fará parte de uma sub-rede diferente. Digite
y
aqui. - Gateway de VNIC secundário: Digite
10.0.3.1
.
- Verifique as informações e digite
y
para confirmar. - Digite
y
para confirmar as definições novamente. - Observe que o script iniciará a configuração da interface e fornecerá atualizações de status ao fazer isso.
- Nome da Interface da VNIC Principal: Digite
-
A saída completa das mensagens de status é fornecida abaixo:
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 ~]$
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
agora tem um endereço IP configurado. - Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. Observe que o gateway agora está disponível para a interfaceens5
.
Observação:
- Configurar um endereço IP e garantir que o roteamento funcione corretamente são duas coisas diferentes.
- O script também configurará a parte de roteamento para nós.
- Preste atenção às saídas específicas do script.
- Execute o comando
-
A parte a seguir do script criará um diretório chamado
/etc/iproute2 directory
e um arquivo chamadort_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.
-
A parte a seguir do script adicionará as entradas necessárias ao arquivo
rt_tables
.*** Adding custom routing tables *** 100 vnic_1 200 vnic_2
-
A parte a seguir do script adicionará as regras de roteamento de IP para permitir o roteamento baseado em política na instância e também ativará o serviço para roteamento baseado em política, que será necessário se você tiver uma instância com várias VNICs.
*** 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.
-
Execute os comandos a seguir.
- Execute o comando
more /etc/iproute2/rt_tables
para verificar se uma nova entrada foi feita. - Observe que as entradas
100 vnic_1
e200 vnic_2
. - Execute o comando
ip route show table 100
para revisar a tabela de roteamento desse mapeamento e observe que há uma rota padrão para a interfaceens3
a VNIC principal na instância. - Execute o comando
ip route show table 200
para revisar a tabela de roteamento desse mapeamento e observe que há uma rota padrão para a interfaceens5
, a nova segunda VNIC da instância.
- Execute o comando
Método 4: Criar o Arquivo de Configuração da Interface Manualmente
Crie uma nova instância chamada sriov-test-03
e configure o endereço IP da segunda VNIC por uma definição para a nova VNIC no diretório /etc/sysconfig/network-scripts/
.
Observação: Neste método, configuraremos quase todas as etapas, que foram feitas automaticamente pelo script no Método 3.
Pré-requisitos: Provisionou uma nova instância e adicionou uma segunda VNIC.
-
Execute o seguinte comando.
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
não tem endereço IP configurado. - Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. - Observe que só há um gateway disponível para a interface
ens3
.
- Execute o comando
-
Navegue até Instância, VNICS Anexada e selecione a segunda VNIC para recuperar o endereço IP da segunda VNIC. Anote o endereço IP.
-
Vá para a pasta
/network-scripts
usando o comandocd /etc/sysconfig/network-scripts/
e crie um novo arquivo na mesma pasta com o nomeifcfg-ens5
usando o comandosudo nano ifcfg-ens5
. -
Configure a interface
ens5
com os parâmetros a seguir.NAME="ens5" DEVICE="ens5" IPADDR=10.0.3.19 NETMASK=255.255.255.224 GATEWAY=10.0.3.1 ONBOOT=yes
- O endereço IP é o mesmo que recuperamos da Console do OCI.
- A sub-rede é derivada da sub-rede dentro da VCN à qual essa interface está conectada.
- O endereço IP do gateway é o primeiro endereço IP na sub-rede.
-
Salve o arquivo de configuração chamado
ifcfg-ens5
com o editor nano.- Liste os arquivos no diretório
/etc/sysconfig/network-scripts/
com o comandols -l
. - Observe que há um arquivo de configuração de interface para
ens3
. - Observe que há um arquivo de configuração de interface para
ens5
.
- Verifique o conteúdo do arquivo
ifcfg-ens5
com o comandomore ifcfg-ens5
. - Certifique-se de que todos os parâmetros estejam configurados corretamente.
- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
ainda não tem endereço IP configurado.
- Liste os arquivos no diretório
-
Reinicialize a instância com o comando
sudo reboot
.- Execute o comando
ip a
para recuperar o endereço IP de todas as interfaces. - Observe que a interface
ens5
agora tem um endereço IP configurado. - Execute o comando
route -n
para recuperar todas as rotas e gateways padrão para todas as interfaces. Observe que o gateway agora está disponível para a interfaceens5
.
Observação: configure um endereço IP e certifique-se de que o roteamento funcione corretamente são duas coisas diferentes.
- Execute o comando
-
Configurar roteamento. O arquivo
/etc/iproute2/rt_tables
é usado para definir e gerenciar várias tabelas de roteamento no Linux e para ativar o roteamento baseado em política. Ele mapeia nomes legíveis para números de tabelas de roteamento, permitindo configurações avançadas, como rotear tráfego específico por meio de diferentes gateways, interfaces ou ISPs.Execute o comando
sudo mkdir -p /etc/iproute2
para criar o diretório chamado/etc/iproute2
e o comandosudo nano /etc/iproute2/rt_tables
para criar o arquivo chamadort_tables
. -
Configure os parâmetros a seguir no arquivo
rt_tables
.100 vnic_1 200 vnic_2
-
Crie o script de persistência de roteamento de política com o 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
-
Execute o comando
sudo chmod +x /usr/local/bin/setup_policy_routing.sh
para tornar executável o script de persistência de roteamento de política. -
Crie um serviço systemd para o script de roteamento de política com o comando
nano /etc/systemd/system/policy-routing.service
. Isso será necessário se você tiver uma instância com várias VNICs com o comando. -
Configure os parâmetros a seguir no arquivo
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
-
Execute o comando
sudo chmod +x /etc/systemd/system/policy-routing.service
para tornar executável o arquivo de serviço do roteamento baseado em política. -
Execute o comando
sudo systemctl start policy-routing.service
para iniciar o serviço para roteamento baseado em política. -
Execute o comando
sudo systemctl status policy-routing
para certificar-se de que o serviço de roteamento baseado em política esteja carregado e ativo.[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 ~]$
-
Execute o comando
sudo systemctl enable policy-routing.service
para certificar-se de que o serviço de roteamento baseado em política será iniciado quando a instância for (re)inicializada. -
Reinicialize a instância com o comando
sudo reboot
. -
Após a reinicialização, execute os comandos a seguir.
- Execute o comando
more /etc/iproute2/rt_tables
para verificar se uma nova entrada foi feita. - Observe as entradas
100 vnic_1
e200 vnic_2
que configuramos manualmente. - Execute o comando
ip route show table 100
para revisar a tabela de roteamento desse mapeamento e observe que há uma rota padrão para a interfaceens3
a VNIC principal na instância. - Execute o comando
ip route show table 200
para revisar a tabela de roteamento desse mapeamento e observe que há uma rota padrão para a interfaceens5
, a nova segunda VNIC da instância.
- Execute o comando
Próximas Etapas
A seleção do método certo para configurar uma segunda interface em uma instância do OCI Linux depende de seus requisitos, experiência técnica e nível de controle desejado. Se você estiver procurando uma configuração direta e eficiente, os Métodos 1 e o Método 2, que usam o pacote oci-utils
e as ferramentas nativas da Oracle, são altamente recomendados. Esses métodos são ideais para usuários que desejam aproveitar a funcionalidade integrada da OCI sem mergulhar na configuração manual ou em scripts externos.
E, onde a automação e a escalabilidade são essenciais, o Método 3, utilizando o script OCI_Multi_VNIC_Setup
, fornece uma solução flexível. É especialmente útil ao gerenciar várias interfaces em diferentes instâncias, oferecendo economia de tempo e consistência na configuração.
Enquanto isso, o Método 4, a abordagem de configuração manual, fornece o mais alto nível de personalização. Esse método é mais adequado para usuários avançados ou ambientes específicos em que as ferramentas de automação não estão disponíveis ou não são preferenciais. Ele também serve como uma excelente maneira de entender o funcionamento interno da rede em instâncias do Oracle Linux.
Ao entender esses métodos, você obtém a flexibilidade de configurar interfaces secundárias em uma variedade de cenários, desde configuração básica até arquiteturas complexas multicloud. Com a abordagem certa, você pode garantir configurações de rede confiáveis e eficientes adaptadas às suas cargas de trabalho da OCI.
Confirmações
- Autor - Iwan Hoogendoorn (Especialista em Rede da OCI)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Assign an IP Address to a Second Interface on an Oracle Linux Instance
G25220-01
January 2025