Rota entre duas interfaces virtuais em um NIC Linux

3

Eu tenho uma máquina Ubuntu que é meu firewall

A máquina possui 2 placas NIC. eth0 e eth1. eth1 está conectado a um modem que lhe dá um IP de 10.10.1.X

O eth1 é necessário para fornecer o DHCP no 192.168.2.X e ter outro IP de um comutador que esteja conectado a um roteador que forneça o DHCP no 192.168.1.X

Atualmente, esta máquina possui os seguintes IPs

eth0 - 10.10.0.4
eth1 - 192.168.2.1 (DHCP Server, Gateway)
eth1:0 - 102.168.1.103

Estou tentando realizar o seguinte

Se uma máquina está conectada a eth1 através de um switch, ela deve ser capaz de executar ping em 192.168.1.10 que

 [Modem+Router 10.1.1.0/24]
   |
   |
   |
 (eth0)                  |----- [ Server 192.168.1.10]
 Ubuntu                  |
Firewall (eth1) ----- [Switch]-----[Modem+Router 192.168.1.0/24]
         (eth1:0)--------| \
                            \
                             \--------[EndPoint 192.168.2.4]   

Meu problema fundamental reside no fato de eu receber pacotes vindos do 2.4 que são destinados para a Internet e eu posso rotea-los apropriadamente usando o IpTables. Considerando que, se um pacote chega para 1.10, devo enviá-lo de volta para o switch com as opções apropriadas definidas.

Eu tentei o seguinte

  • definindo o gateway padrão para 1.0 como 2.1 em 2.4 e defina o próximo hop como 1.1 que eu esperava que fizesse o encaminhamento certo
  • Eu também conectei eth1 e eth1: 0 usando bridge-utils e, em seguida, apliquei o encaminhamento de iptables para qualquer pessoa em 2.X que queira ir para a Internet a partir de 10.10.0.1
por Hitesh Dharamdasani 17.12.2015 / 09:32

1 resposta

2

Sua configuração geralmente deve funcionar imediatamente. O roteamento, em princípio, é suportado pelo código de roteamento do Linux e não tem nada a ver com o Netfilter. "iptables" é o utilitário userspace para a configuração da estrutura do kernel do Netfilter, que faz filtragem e modificação de pacotes (mangling e tradução de endereços), mas não faz nenhum roteamento. Por isso, é incorreto dizer "eu roteio usando iptables".

Bridging também é diferente e não deve ajudá-lo aqui. A criação de ponte de interfaces com alias provavelmente deve fazer um loop e, assim, interromper a rede nesse segmento de ethernet.

Você precisa de rotas em ambos os lados, por exemplo, ip route add 192.168.2.0/24 via 192.168.1.103 em hosts na rede 192.168.1.0/24 e configurar 192.168.2.1 como gateway padrão em hosts na rede 192.168.2.0/24.

Se você tiver definido com firmeza o firewall na caixa do firewall, será necessário ativar o encaminhamento do tráfego de eth1 para eth1: 1 e voltar:

iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth1:0 -j ACCEPT

Ou talvez seja necessário apenas uma primeira regra, se você já tiver configurado o firewall com estado iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT ou com o estado -m (obsoleto).

A configuração especial do iptables só é necessária se você quiser mascarar esse tráfego, pois os hosts em 192.168.1.0/24 não sabem que você está se conectando da rede 192.168.2.0/24. Então você não precisa de nenhuma rota adicional no lado .1.0 / 24, mas precisa da regra NAT e da regra forward enable:

iptables -t nat -A POSTROUTING -o eth1:1 -s 192.168.2.0/24 -o 192.168.1.0/24 -j SNAT --to-source 192.168.1.103
iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT
    
por 17.12.2015 / 12:51