Posso fazer o roteamento de políticas em uma interface virtual?

2

Eu sei que é possível fornecer vários endereços IP para a mesma interface, digamos eth0 . Também é possível construir várias interfaces virtuais no mesmo NIC físico, digamos eth0: 1, eth0: 2, ... .

Suponha agora que todos pertencem à mesma sub-rede. Posso fazer o roteamento de políticas com eles? Por exemplo, tendo vários roteadores na mesma sub-rede, posso designar diferentes gateways para

  1. interfaces virtuais diferentes?
  2. endereços IP diferentes na mesma NIC?

Eu tentei e falhei até agora. Eu estou querendo saber agora se isso é um problema em minhas configurações, ou um problema na linha de princípio , ou seja, , isso simplesmente não pode ser feito.

EDITAR:

No final, consegui que funcionasse, e gostaria de compartilhar esse howto para o perito casual que precisa. Eu estou usando uma distribuição da família Debian. Quando eu encontrar a hora, postarei o equivalente para as distribuições systemd , Fedora, Arch Linux, ...

Eu não quero usar aliasing de IP porque é uma tecnologia obsoleta que é mantida apenas para compatibilidade com versões anteriores, veja este git.kernel.org página. Então eu deixei eth0 ser roteado através de 192.168.73.129, mas depois eu gostaria de criar uma nova interface virtual para ser roteada através de 192.168.73.1. Eu faço assim: Eu não mudo / etc / network / interfaces , onde nada é configurado por mim. Eu adicionei a linha

  200 lab

para / etc / iproute2 / rt_tables. Então eu emito os comandos:

  ip link add link eth0 mac0 address 56:61:4f:7c:77:db type macvlan

isso cria a interface virtual mac0 com o endereço MAC 56: 61: 4f: 7c: 77: db que eu uso para reserva de endereço no roteador;

  ip link set mac0 up

isso aumenta

  dhclient mac0

e isso lhe dá um endereço IP (sempre o mesmo, graças à reserva de endereço);

  IP=$(ifconfig | grep -A 1 mac0 | grep inet | awk '{print $2}' | awk -F ":" '{print $2}')

isso armazena o número IP da interface virtual mac0 na variável do shell IP ;

  ip route del default via 192.168.73.1 dev eth0 
  ip route add default via 192.168.73.129 dev eth0 
  ip route add 192.168.73.0/24 dev eth0
  ip route add default via 192.168.73.1 dev mac0 table lab
  ip route add 192.168.73.0/24 dev mac0 table lab
  ip route del 192.168.73.0/24 dev mac0 table main

Isto configura a tabela de roteamento, para usar 192.168.73.129 como um gateway padrão para eth0 e 192.168.73.1 como gateway para mac0 na tabela de roteamento lab ;

        ip rule add from $IP table lab

esta regra especifica sob quais condições usar a tabela de roteamento lab . Todos os comandos acima são inseridos em um shell script executável, e o comando para executá-lo é colocado em /etc/rc.local , para que o sistema apareça na inicialização já configurado corretamente.

Últimas coisas a fazer, algum encaminhamento de porta e reserva de endereço. Feito.

Obrigado pela sua ajuda.

P.S: caso alguém esteja se perguntando ... eu preciso disso porque eu tenho dois roteadores em casa, 192.168.73.1 e 192.168.73.129; o primeiro é um roteador normal, o outro é um roteador DD-WRT atuando como um cliente OpenVPN para o servidor OpenVPN do meu laboratório. Todo o tráfego para 192.168.73.129 é redirecionado para o meu laboratório, por motivos óbvios relacionados ao trabalho, enquanto o resto da família usa 192.168.73.1, que executa o serviço DHCP. Meu trabalho PC usa 192.168.73.129 como um gateway. Quando estou na estrada, às vezes preciso acessar negócios relacionados ao trabalho no meu pc, que tem um servidor SSH em execução, mas passa por 192.168.73.1. Então, se eu tentar ssh no meu pc de trabalho longe de casa, os pedidos vêm através de 192.168.73.1, mas as respostas passam por 192.168.73.129, e a sessão ssh nunca é estabelecida. A engenhoca acima resolve este enigma.

    
por MariusMatutiae 16.01.2014 / 07:53

2 respostas

3
  1. Sim, você pode.
  2. Sim, você pode, se estiver falando sobre um IP em eth0, eth0: 1 eth0: 2 e assim por diante. Eu nunca vi vários endereços IP em um único NIC (é para isso que o: 1: 2 está lá).

Tudo isso pode ser realizado com o comando ip.

O motivo pelo qual você está tendo problemas de roteamento é porque você só tem uma única tabela de roteamento e, como as interfaces estão em uma única sub-rede, o GW padrão dessa sub-rede acaba sendo aplicado. Se, no entanto, você criar várias tabelas de roteamento, poderá direcionar o tráfego para dentro e para fora delas com base na interface recebida, no IP de origem ou em qualquer outro tipo de critério disponível para você nesse contexto.

link

    
por 16.01.2014 / 13:36
2

Quebrando isso:

  • A ' interface ' (interface Ethernet para ser mais específica) é hardware real, tem um endereço MAC exclusivo e opera na camada de enlace físico e de dados. Realmente faz o trabalho de comunicação.
  • Você pode enviar e receber pacotes IP na camada OSI pacote / datagrama dessa interface.
  • Uma interface virtual é uma abstração de software em um kernel que se refere a interfaces de hardware reais ou a túneis (que, na minha opinião, são abstrações de interface).
  • Uma sub-rede é um intervalo de endereços IP possíveis e, portanto, requer um roteador.
  • O roteamento de política é roteado com base em um endereço diferente do endereço de destino, como, por exemplo, roteamento baseado no endereço do remetente para direcionar determinado tráfego por uma rota diferente.

Onde fico perplexo é 'ter vários roteadores na mesma sub-rede'.

Além disso, sem um roteador, acho que um gateway só pode manipular uma conexão a uma interface de rede por vez.

Espero que isso possa ajudá-lo a pensar sobre isso, se nada mais. O software de rede pode ser muito complexo e às vezes me surpreende o que realmente está acontecendo.

    
por 16.01.2014 / 13:12