O roteamento Linux não lida com nomes de domínio

O roteamento Linux não lida com nomes de domínio

Gostaria de saber se tenho um VPS com 2 Interfaces de Rede (1.1.1.1 E 2.2.2.2) e 1.1.1.1 definida como primária...

eth0 = 1.1.1.1
eth0:1 = 2.2.2.2

Agora quero rotear todo o tráfego para domain.com (não conheço o domínio se estiver usando Cloudflare) para passar pelo IP 2.2.2.2 eth0:1

ex1:

se eu executar, wget domain.comele passará por 2.2.2.2 eth0:1
, mas execute, wget google.comele passará por 1.1.1.1 eth0

ex2:

se eu for para "whatismyip.com" para passar pela eth0, ele mostrará que meu IP é "1.1.1.1",
mas se eu for para "whatismyipaddress.com", será pass-thru eth0:1, então mostrará que meu IP é "2.2.2.2"

Responder1

Existem algumas coisas a considerar:

O roteamento Linux não lida com nomes de domínio

Existem muitas opções de configuração para roteamento no Linux, mas nenhuma que aceite nomes de domínio simples. Afinal, estamos falando de roteamento IP. Portanto, devem ser definidas regras para endereços IP, que obviamente serão "quebradas" quando o(s) registro(s) DNS de um domínio mudarem.

Preferência de interface

Neste caso, existem 2 interfaces que fornecem uma rota para a mesma sub-rede (0.0.0.0/0, também conhecida como Internet). Para dizer ao Kernel para preferir uma interface específica, precisamos aplicar o Policy-Based Routing (PBR).

Como o nome indica, o roteamento baseado em políticas funciona definindo uma política (também conhecida como "regra") para determinar qual interface usar. Sem políticas, o kernel escolherá a primeira rota que corresponda à rede de destino.

Rotas, regras, tabelas

O kernel usa rotas para determinar como lidar com pacotes. Uma rota é uma definição simples que inclui o endereço de destino e o link (interface) a ser usado.

As rotas são agrupadas em tables, cuja tabela utilizada depende das políticas definidas.

Uma policy(ou regra) informa ao kernel qual tabela examinar para rotear pacotes. A definição da política inclui a origem, o destino e a tabela de roteamento de um pacote a serem examinados.

Exibir rotas e políticas atuais

Para exibir as rotas atualmente utilizadas pelo sistema, execute ip route

Isso mostra todas as entradas na maintabela de roteamento. Outras tabelas podem ser acessadas executando ip route show table <tablename>.

Para exibir as políticas usadas atualmente, execute ip rule

Isto lista todas as políticas/regras usadas pelo kernel. Eles são iterados de cima para baixo, até que uma regra corresponda ao pacote que está sendo tratado.

Exemplo

echo "101 out1" >> /etc/iproute2/rt_tables
ip rule add from all to 3.4.5.6 table out1
ip route add default via 10.0.0.1 dev eth0 src 1.1.1.1 table out1
ip route add 10.0.0.0/8 dev eth0 src 1.1.1.1 table out1

Esses comandos criarão uma nova tabela de roteamento out1e a adicionarão 10.0.0.1como gateway de acesso à internet. O tráfego enviado 3.4.5.6(que precisa ser substituído por um endereço IP real e resolvido do domínio de destino) será enviado através do gateway padrão definido na out1tabela, usando o dispositivo eth0e o IP especificados 1.1.1.1.

Eu recomendo a leitura de alguns tutoriais e guias existentes para se familiarizar com a terminologia. Procure por iproute2e linux advanced routing and traffic control.

E por último, mas não menos importante: teste suas alterações antes de aplicá-las em um sistema ativo. Erros acontecem, eu pessoalmente prefiro fritar uma VM em vez de um servidor remoto.

informação relacionada