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
- interfaces virtuais diferentes?
- 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.