Criação de um túnel IPSec GRE entre Mikrotik hEX S e Juniper SRX via modem USB

O objetivo

É necessário organizar um túnel VPN entre dois dispositivos, como Mikrotik e a linha SRX da Juniper.

O que temos

Dos Mikrotiks, escolhemos no site do Mikrotik Wiki um modelo que pode suportar a criptografia de hardware IPSec, que, em nossa opinião, é compacto e acessível, especificamente o Mikrotik hEXS.

O modem USB foi adquirido na operadora de celular mais próxima, modelo Huawei E3370. Nenhuma operação de desbloqueio foi realizada. Tudo é padrão e foi configurado pela própria operadora.

O núcleo possui o roteador central Juniper SRX240H.

O que conseguimos

Conseguimos implementar um esquema de operação que permite, através da operadora de celular, sem ter um endereço estático, criar uma conexão IPsec por meio de um modem que encapsula o túnel GRE.

Este esquema de conexão é utilizado e funciona em modens USB da Beeline e MegaFon.

A configuração é a seguinte:

O núcleo possui Juniper SRX240H
Endereço Local: 192.168.1.1/24
Endereço Externo: 1.1.1.1/30
GW: 1.1.1.2

Ponto remoto

Mikrotik hEX S
Endereço Local: 192.168.152.1/24
Endereço Externo: Dinâmico

Um pequeno diagrama para entender o funcionamento:

Criação de um túnel IPSec GRE entre Mikrotik hEX S e Juniper SRX via modem USB

Configuração do Juniper SRX240:

Versão do software JUNOS Software Release [12.1X46-D82]

Configuração do Juniper

interfaces {
    ge-0/0/0 {
        description Internet-1;
        unit 0 {
            family inet {
                address 1.1.1.1/30;
            }
        }
    }
    gr-0/0/0 {
        unit 1 {
            description GRE-Tunnel;
            tunnel {
                source 172.31.152.2;
                destination 172.31.152.1;
            }
            family inet;
            vlan {
                unit 0 {
                    family inet {
                        address 192.168.1.1/24;
                    }
                }
            }
        }
    st0 {
        unit 5 {
            description "Área - 192.168.152.0/24";
            family inet {
                mtu 1400;
            }
        }
    }
routing-options {
    static {
        route 0.0.0.0/0 next-hop 1.1.1.2;
        route 192.168.152.0/24 next-hop gr-0/0/0.1;
        route 172.31.152.0/30 next-hop st0.5;
    }
    router-id 192.168.1.1;
}
security {
    ike {
        traceoptions {
            file vpn.log size 256k files 5;
            flag all;
        }
        policy ike-gretunnel {
            mode aggressive;
            description area-192.168.152.0;
            proposal-set standard;
            pre-shared-key ascii-text "mysecret"; ## SECRET-DATA
        }
        gateway gw-gretunnel {
            ike-policy ike-gretunnel;
            dynamic inet 172.31.152.1;
            external-interface ge-0/0/0.0;
            version v2-only;
        }
    ipsec {
        }
        policy vpn-policy0 {
            perfect-forward-secrecy {
                keys group2;
            }
            proposal-set standard;
        }
        vpn vpn-gretunnel {
            bind-interface st0.5;
            df-bit copy;
            vpn-monitor {
                optimized;
                source-interface st0.5;
                destination-ip 172.31.152.1;
            }
            ike {
                gateway gw-gretunnel;
                no-anti-replay;
                ipsec-policy vpn-policy0;
                install-interval 10;
            }
            establish-tunnels immediately;
        }
    }
    policies {
        from-zone vpn to-zone vpn {
            policy st-vpn-vpn {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                    log {
                        session-init;
                        session-close;
                    }
                    count;
                }
            }
        }
        from-zone trust to-zone vpn {
            policy st-trust-to-vpn {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                    log {
                        session-init;
                        session-close;
                    }
                    count;
                }
            }
        }
        from-zone vpn to-zone trust {
            policy st-vpn-to-trust {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                    log {
                        session-init;
                        session-close;
                    }
                    count;
                }
            }
        }
    }
zones {
        security-zone trust {
            vlan.0 {
                host-inbound-traffic {
                    system-services {
                        all;
                    }
                    protocols {
                        all;
                    }
                }
            }
        }
        security-zone vpn {
            interfaces {
                st0.5 {
                    host-inbound-traffic {
                        protocols {
                            ospf;
                        }
                    }
                }
                gr-0/0/0.1 {
                    host-inbound-traffic {
                        system-services {
                            all;
                        }
                        protocols {
                            all;
                        }
                    }
                }
            }
        }
        security-zone untrust {
            interfaces {
                ge-0/0/0.0 {
                    host-inbound-traffic {
                        system-services {
                            ping;
                            ssh;
                            ike;
                        }
                    }
                }
            }
        }
    }
vlan {
    vlan-local {
        vlan-id 5;
        l3-interface vlan.1;
    }
}

Configuração Mikrotik hEX S:

Versão do software RouterOS [6.44.3]

Configuração Mikrotik

/ip address
add address=172.31.152.1/24 comment=GRE-Tunnel interface=gre-srx network=172.31.152.0
add address=192.168.152.1/24 comment=Local-Area interface=bridge network=192.168.152.0

/interface gre
add comment=GRE-Tunnel-SRX-HQ !keepalive local-address=172.31.152.1 name=gre-srx remote-address=172.31.152.2

/ip ipsec policy group
add name=srx-gre

/ip ipsec profile
add dh-group=modp1024 dpd-interval=10s name=profile1

/ip ipsec peer
add address=1.1.1.1/32 comment=GRE-SRX exchange-mode=aggressive local-address=172.31.152.1 name=peer2 profile=profile1

/ip ipsec proposal
set [ find default=yes ] enc-algorithms=aes-256-cbc,aes-128-cbc,3des
add enc-algorithms=aes-128-cbc,3des name=proposal1

/ip route
add distance=10 dst-address=192.168.0.0/16 gateway=gre-srx

/ip ipsec identity
add comment=IPSec-GRE my-id=address:172.31.152.1 peer=peer2 policy-template-group=srx-gre secret=mysecret

/ip ipsec policy
set 0 disabled=yes
add dst-address=0.0.0.0/0 proposal=proposal1 sa-dst-address=1.1.1.1 sa-src-address=172.31.152.1 src-address=172.31.152.0/30 tunnel=yes

/ip address
add address=172.31.152.1/24 comment=GRE-Tunnel interface=gre-srx network=172.31.152.0
add address=192.168.152.1/24 comment=Local-Area interface=bridge network=192.168.152.0

Resultado:
Do lado do Juniper SRX

netscreen@srx240> ping 192.168.152.1  
PING 192.168.152.1 (192.168.152.1): 56 bytes de dados
64 bytes de 192.168.152.1: icmp_seq=0 ttl=64 tempo=29.290 ms
64 bytes de 192.168.152.1: icmp_seq=1 ttl=64 tempo=28.126 ms
64 bytes de 192.168.152.1: icmp_seq=2 ttl=64 tempo=26.775 ms
64 bytes de 192.168.152.1: icmp_seq=3 ttl=64 tempo=25.401 ms
^C
--- Estatísticas de ping para 192.168.152.1 ---
4 pacotes transmitidos, 4 pacotes recebidos, 0% de perda de pacotes
tempo de ida e volta min/média/máx/desvio padrão = 25.401/27.398/29.290/1.457 ms

Do lado do Mikrotik

net[admin@GW-LTE-] > ping 192.168.1.1 
  SEQ HOST                                     TAM TTL TEMPO  STATUS                                                                                                                                               
    0 192.168.1.1                                56  64 34ms 
    1 192.168.1.1                                56  64 40ms 
    2 192.168.1.1                                56  64 37ms 
    3 192.168.1.1                                56  64 40ms 
    4 192.168.1.1                                56  64 51ms 
    enviados=5 recebidos=5 perda de pacotes=0% min-rtt=34ms avg-rtt=40ms max-rtt=51ms 

Como resultado, obtemos um serviço de "monitoramento como serviço", automatizado na linha de produção de integração contínua. O desenvolvedor ou testador precisa apenas definir a lista de métricas em um arquivo JSON, e tudo o mais acontece automaticamente. Obtemos um controle de qualidade transparente dos lançamentos: todas as notificações sobre desempenho, consumo de recursos ou regressões arquitetônicas.

Após o trabalho realizado, obtemos estabilidade VPN Tunnel, da rede remota temos acesso a toda a rede que está atrás do juniper, e vice-versa.

Não recomendo usar o IKE2 neste esquema, houve situações em que após a reinicialização de um dos dispositivos, o IPSec não se levantava.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster