Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 20. Configuração de rotas baseadas em políticas para definir rotas alternativas

Por padrão, o kernel na RHEL decide onde encaminhar os pacotes de rede com base no endereço de destino usando uma tabela de roteamento. O roteamento baseado em políticas permite a configuração de cenários complexos de roteamento. Por exemplo, você pode encaminhar pacotes com base em vários critérios, como o endereço de origem, metadados de pacotes ou protocolo.

Esta seção descreve como configurar o roteamento baseado em políticas usando o NetworkManager.

Nota

Em sistemas que utilizam o NetworkManager, apenas o utilitário nmcli suporta a definição de regras de roteamento e a atribuição de rotas a tabelas específicas.

20.1. Roteamento do tráfego de uma sub-rede específica para um gateway padrão diferente usando o NetworkManager

Esta seção descreve como configurar o RHEL como um roteador que, por padrão, encaminha todo o tráfego para o provedor de Internet A usando a rota padrão. Usando o roteamento baseado em políticas, a RHEL encaminha o tráfego recebido da sub-rede interna das estações de trabalho para o provedor B.

O procedimento assume a seguinte topologia de rede:

roteamento baseado em políticas

Pré-requisitos

  • O sistema usa NetworkManager para configurar a rede, que é o padrão no RHEL 8.
  • O roteador RHEL que você deseja instalar no procedimento tem quatro interfaces de rede:

    • A interface enp7s0 está conectada à rede do provedor A. O gateway IP da rede do provedor é 198.51.100.2, e a rede usa uma máscara de rede /30.
    • A interface enp1s0 está conectada à rede do provedor B. O gateway IP da rede do provedor é 192.0.2.2, e a rede usa uma máscara de rede /30.
    • A interface enp8s0 está conectada à sub-rede 10.0.0.0/24 com estações de trabalho internas.
    • A interface enp9s0 está conectada à sub-rede 203.0.113.0/24 com os servidores da empresa.
  • Os anfitriões na sub-rede interna das estações de trabalho utilizam 10.0.0.1 como o gateway padrão. No procedimento, você atribui este endereço IP à interface de rede enp8s0 do roteador.
  • Os anfitriões na sub-rede do servidor utilizam 203.0.113.1 como porta de entrada padrão. No procedimento, você atribui este endereço IP para a interface de rede enp9s0 do roteador.
  • O serviço firewalld está habilitado e ativo.

Procedimento

  1. Configurar a interface de rede para o provedor A:

    # nmcli connection add type ethernet con-name Provider-A ifname enp7s0 ipv4.method manual ipv4.addresses 198.51.100.1/30 ipv4.gateway 198.51.100.2 ipv4.dns 198.51.100.200 connection.zone external

    O comando nmcli connection add cria um perfil de conexão NetworkManager. A lista a seguir descreve as opções do comando:

    • type ethernet : Define que o tipo de conexão é Ethernet.
    • con-nameconnection_name: Define o nome do perfil. Use um nome significativo para evitar confusão.
    • ifnamenetwork_device: Define a interface da rede.
    • ipv4.method manual : Permite configurar um endereço IP estático.
    • ipv4.addressesIP_address/subnet_mask: Define os endereços IPv4 e a máscara de sub-rede.
    • ipv4.gatewayIP_address: Define o endereço padrão do gateway.
    • ipv4.dnsIP_of_DNS_server: Define o endereço IPv4 do servidor DNS.
    • connection.zonefirewalld_zone: Atribui a interface de rede à zona firewalld definida. Note que firewalld permite automaticamente o mascaramento para as interfaces atribuídas à zona external.
  2. Configurar a interface de rede para o provedor B:

    # nmcli connection add type ethernet con-name Provider-B ifname enp1s0 ipv4.method manual ipv4.addresses 192.0.2.1/30 ipv4.routes "0.0.0.0/0 192.0.2.2 table=5000" connection.zone external

    Este comando usa o parâmetro ipv4.routes ao invés de ipv4.gateway para definir o gateway padrão. Isto é necessário para atribuir o gateway padrão para esta conexão a uma tabela de roteamento diferente (5000) do que o padrão. O NetworkManager cria automaticamente esta nova tabela de roteamento quando a conexão é ativada.

  3. Configurar a interface da rede para a subrede interna das estações de trabalho:

    # nmcli connection add type ethernet con-name Internal-Workstations ifname enp8s0 ipv4.method manual ipv4.addresses 10.0.0.1/24 ipv4.routes "10.0.0.0/24 src=192.0.2.1 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone internal

    Este comando usa o parâmetro ipv4.routes para adicionar uma rota estática à tabela de roteamento com ID 5000. Esta rota estática para a sub-rede 10.0.0.0/24 usa o IP da interface da rede local para o provedor B (192.0.2.1) como próximo salto.

    Além disso, o comando usa o parâmetro ipv4.routing-rules para adicionar uma regra de roteamento com prioridade 5 que roteia o tráfego da subrede 10.0.0.0/24 para a tabela 5000. Valores baixos têm uma prioridade alta.

    Observe que a sintaxe no parâmetro ipv4.routing-rules é a mesma de um comando ip route add, exceto que ipv4.routing-rules sempre requer a especificação de uma prioridade.

  4. Configurar a interface de rede para a sub-rede do servidor:

    # nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone internal

Etapas de verificação

  1. Em um host RHEL na sub-rede interna da estação de trabalho:

    1. Instale o pacote traceroute:

      # yum install traceroute
    2. Use o utilitário traceroute para exibir a rota para um host na Internet:

      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  10.0.0.1 (10.0.0.1)     0.337 ms  0.260 ms  0.223 ms
       2  192.0.2.1 (192.0.2.1)   0.884 ms  1.066 ms  1.248 ms
       ...

      A saída do comando mostra que o roteador envia pacotes sobre 192.0.2.1, que é a rede do provedor B.

  2. Em um host RHEL na sub-rede do servidor:

    1. Instale o pacote traceroute:

      # yum install traceroute
    2. Use o utilitário traceroute para exibir a rota para um host na Internet:

      # traceroute redhat.com
      traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets
       1  203.0.113.1 (203.0.113.1)    2.179 ms  2.073 ms  1.944 ms
       2  198.51.100.2 (198.51.100.2)  1.868 ms  1.798 ms  1.549 ms
       ...

      A saída do comando mostra que o roteador envia pacotes através de 198.51.100.2, que é a rede do provedor A.

Passos para a solução de problemas

No roteador RHEL:

  1. Exibir a lista de regras:

    # ip rule list
    0:	from all lookup local
    5:	from 10.0.0.0/24 lookup 5000
    32766:	from all lookup main
    32767:	from all lookup default

    Por padrão, a RHEL contém regras para as tabelas local, main, e default.

  2. Mostrar as rotas na tabela 5000:

    # ip route list table 5000
    0.0.0.0/0 via 192.0.2.2 dev enp1s0 proto static metric 100
    10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102
  3. Exibir as interfaces e as zonas de firewall:

    # firewall-cmd --get-active-zones
    external
      interfaces: enp1s0 enp7s0
    internal
      interfaces: enp8s0 enp9s0
  4. Verifique se a zona external tem o mascaramento ativado:

    # firewall-cmd --info-zone=external
    external (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp1s0 enp7s0
      sources:
      services: ssh
      ports:
      protocols:
      masquerade: yes
      ...

Recursos adicionais

  • Para mais detalhes sobre os parâmetros ipv4.* você pode definir no comando nmcli connection add, veja a seção IPv4 settings na página de manual nm-settings(5).
  • Para mais detalhes sobre os parâmetros connection.* você pode definir no comando nmcli connection add, veja a seção Connection settings na página de manual nm-settings(5).
  • Para mais detalhes sobre o gerenciamento de conexões NetworkManager usando nmcli, consulte a seção Connection management commands na página de manual nmcli(1).