Creación de un túnel GRE IPSec entre Mikrotik hEX S y Juniper SRX a través de un módem USB

El objetivo

Es necesario organizar un túnel VPN entre dos dispositivos, como Mikrotik y Juniper de la línea SRX.

Lo que tenemos

De los dispositivos Mikrotik seleccionamos en el sitio wiki de Mikrotik, un modelo que pueda soportar cifrado por hardware IPSec; a nuestro parecer, resultó ser suficientemente compacto y económico, específicamente el Mikrotik hEXS.

Se compró un módem USB en el operador de telefonía móvil más cercano, el modelo fue Huawei E3370. No realizamos ninguna operación para desvincularlo del operador. Todo es original y está programado por el propio operador.

En el núcleo se instaló el enrutador central Juniper SRX240H.

Lo que se logró

Se logró implementar un esquema de trabajo que permite, a través del operador de telefonía móvil, sin tener una dirección estática, crear una conexión IPsec mediante el módem que encapsula un túnel GRE.

Este esquema de conexión se utiliza y funciona en los módems USB de Beeline y MegaFon.

La configuración es la siguiente:

En el núcleo se instaló Juniper SRX240H
Dirección local: 192.168.1.1/24
Dirección externa: 1.1.1.1/30
GW: 1.1.1.2

Punto remoto

Mikrotik hEX S
Dirección local: 192.168.152.1/24
Dirección externa: Dinámica

Un pequeño diagrama para entender el funcionamiento:

Creación de un túnel GRE IPSec entre Mikrotik hEX S y Juniper SRX a través de un módem USB

Configuración de Juniper SRX240:

Versión del software JUNOS Software Release [12.1X46-D82]

Configuración de 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;
                        }
                    }
                }
            }
        }
vlans {
    vlan-local {
        vlan-id 5;
        l3-interface vlan.1;
    }

Configuración de Mikrotik hEX S:

Versión del software RouterOS [6.44.3]

Configuración de 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:
Desde el lado de Juniper SRX

netscreen@srx240> ping 192.168.152.1  
PING 192.168.152.1 (192.168.152.1): 56 bytes de datos
64 bytes desde 192.168.152.1: icmp_seq=0 ttl=64 tiempo=29.290 ms
64 bytes desde 192.168.152.1: icmp_seq=1 ttl=64 tiempo=28.126 ms
64 bytes desde 192.168.152.1: icmp_seq=2 ttl=64 tiempo=26.775 ms
64 bytes desde 192.168.152.1: icmp_seq=3 ttl=64 tiempo=25.401 ms
^C
--- estadísticas de ping 192.168.152.1 ---
4 paquetes transmitidos, 4 paquetes recibidos, 0% de pérdida de paquetes
viaje de ida y vuelta min/prom/max/sd = 25.401/27.398/29.290/1.457 ms

Desde el lado de Mikrotik

net[admin@GW-LTE-] > ping 192.168.1.1 
  SEQ HOST                                     TAMAÑO TTL TIEMPO  ESTADO                                                                                                                                               
    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 recibidos=5 pérdida de paquetes=0% min-rtt=34ms avg-rtt=40ms max-rtt=51ms 

Conclusiones

Después del trabajo realizado, hemos obtenido estabilidad VPN Tunnel, desde la red remota tenemos acceso a toda la red que se encuentra detrás de Juniper, y viceversa.

No recomiendo utilizar IKE2 en este esquema, ha habido situaciones en las que después de reiniciar algún dispositivo, el IPSec no se levanta.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster