Como configurar um túnel L2 criptografado usando os MikroTik Routers?

4

O que eu gostaria de alcançar

Eu quero espalhar com segurança uma sub-rede interna existente em vários edifícios. Isso significa que tenho dois locais com máquinas virtuais que precisam estar dentro da mesma sub-rede. A ideia é que as máquinas virtuais (com um IP estático) possam ser migradas de um local para o outro.

As máquinas host (físicas) são conectadas a um comutador em cada local. Então, se não houvesse nenhum problema de segurança ou custo, eu simplesmente conectaria os dois switches com um cabo de rede:

[Máquinas] --- [Interruptor A] < ---- CABO LONGO --- > [Switch B] --- [Máquinas]

O que eu gostaria, é substituir este cabo longo por um túnel criptografado usando dois gateways que não precisam se preocupar com endereços IP ou roteamento e apenas pegar qualquer pacote de entrada, criptografá-los e enviá-los para o outro gateway através de um túnel criptografado. O outro gateway, em seguida, descriptografa os pacotes e os envia para o switch remoto. Isso seria fisicamente assim:

[Máquinas] --- [Trocar A] --- [GATEWAY A] < - INTERNET - > [GATEWAY B] - [Switch B] --- [Máquinas]

Eu gostaria de evitar que os gateways precisassem de endereços IP dentro da sub-rede. As regras devem ser completamente baseadas em portos:

  • Entrada de dados na porta 1 : rota através da interface de túnel
  • Entrada de dados na interface de túnel : rota via porta 1

Os dois gateways teriam um endereço IP roteavel estático para estabelecer o túnel. A criptografia deve ser strong (pelo menos AES128, SHA256, DH2048; segredo compartilhado é bom), que túneis simples do tipo PPP não suportam. Assim, uma camada de criptografia adicional / separada pode ser necessária.

Eu só tenho os MikroTik Routers disponíveis. Então eu preferiria usá-los. No entanto, estou principalmente procurando as 'palavras mágicas' (nomes de protocolo e similares) e a combinação certa de tecnologia que me permite fazer isso. Então, se você sabe como fazer isso com roteadores Cisco ou HP, provavelmente também ajudaria, se você explicasse como você faria isso ...

Perguntas / tentativas

Que tipo de filtros e protocolos de firewall posso usar para conseguir isso?

Minha primeira ideia foi usar o IPsec para abranger o túnel criptografado. Mas, eu precisaria definir a diretiva IPsec que é baseada em porta física. Mas existe apenas uma opção para definir esses dados de / para uma combinação especial endereço IP / porta IP.

O IPsec funcionaria apenas como camada de criptografia para outro tipo de encapsulamento (o PPTP, o SSTP, o L2TP e o OVPN são atualmente suportados pelo MikroTik RouterOS). Como os Túneis PPP normalmente não suportam criptografia strong, eu deixaria o IPsec fazer esse trabalho e abranger o túnel PPP não criptografado através do túnel IPsec criptografado.

Ok, agora tínhamos pelo menos uma interface de túnel, que podemos usar como uma porta de saída. No entanto, estou meio perdido aqui. Eu não acho que a possibilidade de dizer: "um quadro com entrada em tem que ser enviado via interface" e "um quadro de entrada tem que ser enviado via interface".

Eu não costumo trabalhar no Layer2 ... então, na verdade, estou procurando pelo "termo" ou "categoria" certa. Eu poderia imaginar encontrá-lo no IP-Firewall (mangle- > prerouting) ou algo parecido, mas eu suponho que já seja material da Camada 3 ...

Eu só preciso configurar uma ponte? Em caso afirmativo, como posso adicionar a interface de túnel à ponte (de preferência usando a interface do Winbox)? A ponte precisa de um endereço MAC?

Apenas no caso de esta tentativa ser um beco sem saída: Eu também encontrei "EoIP", "IP Tunnel" e "GRE Tunnel" na configuração "Interface". Mas eu não tenho idéia do que eles podem fazer ... Então, apenas no caso, deixe-me saber qual deles vale a pena investigar ...

Além disso, se houver uma solução mais fácil e limpa, não se importe em me informar sua solução ... Você não precisa continuar minhas tentativas acima, se houver uma maneira mais fácil!

    
por SDwarfs 11.12.2015 / 14:55

1 resposta

5

Você pode realizar o que pergunta usando uma combinação de pontes, túneis EoIP e IPsec.

Primeiro você cria um túnel EoIP em ambos os lados para que os dois roteadores possam se comunicar. EoIP é um túnel proprietário da MikroTik que funciona como o proto 47.
Ele pode encaminhar quadros Ethernet inteiros não apenas IP (como interface IPIP ou TAP, por exemplo), tornando-o ideal para 'expandir' domínios de broadcast L2 sobre links L3.

Em seguida, você configura o IPsec para criptografar as comunicações no túnel.
Nas versões mais recentes do Mikrotik isso pode ser feito automaticamente a partir das configurações da interface EoIP, embora eu prefira configurá-lo manualmente para melhor controle. Você aplica as políticas IPsec nos IPs do ponto de extremidade dos túneis EoIP (criptografando assim todo o tráfego de túnel EoIP) e não as redes que passam pelo túnel.

E, finalmente, você cria uma ponte em ambos os roteadores e conecta as portas Ethernet e o túnel EoIP em cada lado.

Desta forma, você pode expandir o domínio de broadcast L2 para o lado remoto e a bridge cuidará de quais pacotes devem passar pelo túnel e quais devem permanecer localmente.
Bridges são como switches de software, então eles mantêm uma tabela de quais MACs estão em quais portas e automaticamente encaminham pacotes destinados a cada porta. Todo o tráfego de transmissão será encaminhado para o túnel, é claro. Mais informações sobre pontes

Na documentação oficial do MikroTik , este cenário já está documentado (com exceção do IPsec criptografia).

Let us assume we want to bridge two networks: 'Office LAN' and 'Remote LAN'. By using EoIP setup can be made so that Office and Remote LANs are in the same Layer2 broadcast domain.

Consider following setup: enter image description here

As you know wireless station cannot be bridged, to overcome this limitation (not involving WDS) we will create EoIP tunnel over the wireless link and bridge it with interfaces connected to local networks.

We will not cover wireless configuration in this example, lets assume that wireless link is already established

At first we create EoIP tunnel on our gateway ...

[admin@Our_GW] interface eoip> add name="eoip-remote" tunnel-id=0 \
\... remote-address=10.0.0.2
[admin@Our_GW] interface eoip> enable eoip-remote
[admin@Our_GW] interface eoip> print
Flags: X - disabled, R - running
  0    name=eoip-remote mtu=1500 arp=enabled remote-address=10.0.0.2 tunnel-id=0
[admin@Our_GW] interface eoip>

... and on Remote router

[admin@Remote] interface eoip> add name="eoip" tunnel-id=0 \
\... remote-address=10.0.0.1
[admin@Remote] interface eoip> enable eoip-main
[admin@Remote] interface eoip> print
Flags: X - disabled, R - running
  0   name=eoip mtu=1500 arp=enabled remote-address=10.0.0.1 tunnel-id=0

[admin@Remote] interface eoip>

Next step is to bridge local interfaces with EoIP tunnel On Our GW ...

[admin@Our_GW] interface bridge> add 
[admin@Our_GW] interface bridge> print
Flags: X - disabled, R - running
 0  R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 
      protocol-mode=none priority=0x8000 auto-mac=yes 
      admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s 
      transmit-hold-count=6 ageing-time=5m 
[admin@Our_GW] interface bridge> port add bridge=bridge1 interface=eoip-remote
[admin@Our_GW] interface bridge> port add bridge=bridge1 interface=office-eth
[admin@Our_GW] interface bridge> port print
Flags: X - disabled, I - inactive, D - dynamic
 #    INTERFACE      BRIDGE  PRIORITY PATH-COST
 0    eoip-remote    bridge1 128      10
 1    office-eth     bridge1 128      10
[admin@Our_GW] interface bridge>

... and Remote router:

[admin@Remote] interface bridge> add 
[admin@Remote] interface bridge> print
Flags: X - disabled, R - running
 0  R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 
      protocol-mode=none priority=0x8000 auto-mac=yes 
      admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s 
      transmit-hold-count=6 ageing-time=5m 
[admin@Remote] interface bridge> port add bridge=bridge1 interface=ether
[admin@Remote] interface bridge> port add bridge=bridge1 interface=eoip-main
[admin@Remote] interface bridge> port print
Flags: X - disabled, I - inactive, D - dynamic
 #    INTERFACE      BRIDGE  PRIORITY PATH-COST
 0    ether          bridge1 128      10
 1    eoip-main      bridge1 128      10     
[admin@Remote] interface bridge>

Now both sites are in the same Layer2 broadcast domain. You can set up IP addresses from the same network on both sites.

E você também precisa configurar o IPSec. Mais informações aqui

Tenha em mente que o IPsec, embora seja a forma mais segura de se comunicar no Mikrotik neste momento, é que ele tem fome de CPU, a menos que seus roteadores tenham aceleração de hardware. Então, se você estiver usando uma simples routerboard, não espere nada além de 10-15mbits de taxa de transferência.

Se seus roteadores tiverem IPs de internet dinâmicos, você precisará usar o IP > Recurso de nuvem do MikroTik para obter um DNS dinâmico e usar esses DynDNS com um pequeno script para atualizar automaticamente os IPs nos túneis EoIP e pontos IPsec e políticas quando seus IPs públicos forem alterados.

Por fim, presumo que suas conexões com a Internet tenham, na melhor das hipóteses, um MTU de 1500 bytes. Usando o túnel e o EoIP você precisará baixar a MTU da interface de túnel EoIP no reino de 1400 bytes (é melhor fazer alguns testes para descobrir o melhor valor para a sua configuração / tráfego). Para minha configuração / tráfego eu uso 1400 bytes. Infelizmente, devido à natureza do IPsec, dependendo do tamanho de seus pacotes, a sobrecarga é variável, então você não pode sempre tirar o melhor proveito dela.

    
por 12.12.2015 / 12:46