Tworzenie tunelu IPSec GRE między Mikrotik hEX S a Juniper SRX za pomocą modemu USB

Cel

Konieczne jest zorganizowanie tunelu VPN między dwoma urządzeniami, takimi jak Mikrotik i Juniper z serii SRX.

Co mamy

Z mikrotików wybraliśmy na stronie wiki Mikrotika model, który wspiera sprzętowe szyfrowanie IPSec. Naszym zdaniem, okazał się on wystarczająco kompaktowy i niedrogi, a mianowicie Mikrotik hEXS.

Modem USB został zakupiony u najbliższego operatora komórkowego, model to Huawei E3370. Nie przeprowadzaliśmy żadnych operacji odblokowujących od operatora. Wszystko jest standardowe i wgrane przez samego operatora.

W rdzeniu zainstalowany jest centralny router Juniper SRX240H.

Co udało się osiągnąć

Udało się zrealizować schemat pracy, który pozwala na stworzenie połączenia IPsec przez operatora komórkowego, bez posiadania statycznego adresu, za pomocą modemu, w którym zamknięty jest tunel GRE.

Ten schemat połączenia jest używany i działa na modemach USB Beeline i Megafon.

Konfiguracja wygląda następująco:

W rdzeniu zainstalowany jest Juniper SRX240H
Adres lokalny: 192.168.1.1/24
Adres zewnętrzny: 1.1.1.1/30
GW: 1.1.1.2

Punkt zdalny

Mikrotik hEX S
Adres lokalny: 192.168.152.1/24
Adres zewnętrzny: Dynamiczny

Mała diagram do zrozumienia działania:

Tworzenie tunelu IPSec GRE między Mikrotik hEX S a Juniper SRX za pomocą modemu USB

Konfiguracja Juniper SRX240:

Wersja oprogramowania JUNOS Software Release [12.1X46-D82]

Konfiguracja Juniper

interfejsy {
    ge-0/0/0 {
        opis Internet-1;
        jednostka 0 {
            rodzina inet {
                adres 1.1.1.1/30;
            }
        }
    }
    gr-0/0/0 {
        jednostka 1 {
            opis GRE-Tunnel;
            tunel {
                źródło 172.31.152.2;
                docelowe 172.31.152.1;
            }
            rodzina inet;
    vlan {
        jednostka 0 {
            rodzina inet {
                adres 192.168.1.1/24;
            }
        }
    st0 {
        jednostka 5 {
            opis "Obszar - 192.168.152.0/24";
            rodzina inet {
                mtu 1400;
            }
        }
    opcje-routingu {
    statyczne {
        trasa 0.0.0.0/0 następny-skok 1.1.1.2;
        trasa 192.168.152.0/24 następny-skok gr-0/0/0.1;
        trasa 172.31.152.0/30 następny-skok st0.5;
    }
    identyfikator-routera 192.168.1.1;
}
bezpieczeństwo {
    ike {
        opcje-śledzenia {
            plik vpn.log rozmiar 256k pliki 5;
            flaga wszystkie;
        }
        polityka ike-gretunnel {
            tryb agresywny;
            opis obszar-192.168.152.0;
            zestaw-propozycji standard;
            klucz-wstępnie-podzielony ascii-tekst "mysecret"; ## DANE-TAJNE
        }
        brama gw-gretunnel {
            polityka-ike ike-gretunnel;
            inet dynamiczny 172.31.152.1;
            zewnętrzny-interfejs ge-0/0/0.0;
            wersja tylko-v2;
        }
    ipsec {
        }
        polityka vpn-policy0 {
            doskonała-przekaźność {
                klucze grupa2;
            }
            zestaw-propozycji standard;
        }
        vpn vpn-gretunnel {
            powiązany-interfejs st0.5;
            bit-df kopiuj;
            monitor-vpn {
                zoptymalizowane;
                interfejs-źródłowy st0.5;
                adres-ip-docelowy 172.31.152.1;
            }
            ike {
                brama gw-gretunnel;
                brak-ochrony-replay;
                polityka-ipsec vpn-policy0;
                interwał-instalacji 10;
            }
            nawiąż-tunele natychmiast;
        }
    }
    polityki {
        z-strefy vpn do-strefy vpn {
            polityka st-vpn-vpn {
                dopasowanie {
                    adres-źródłowy dowolny;
                    adres-docelowy dowolny;
                    aplikacja dowolna;
                }
                następnie {
                    zezwól;
                    log {
                        inicjacja-sesji;
                        zamknięcie-sesji;
                    }
                    zlicz;
                }
            }
        }
        z-strefy trust do-strefy vpn {
            polityka st-trust-to-vpn {
                dopasowanie {
                    adres-źródłowy dowolny;
                    adres-docelowy dowolny;
                    aplikacja dowolna;
                }
                następnie {
                    zezwól;
                    log {
                        inicjacja-sesji;
                        zamknięcie-sesji;
                    }
                    zlicz;
                }
            }
        }
        z-strefy vpn do-strefy trust {
            polityka st-vpn-to-trust {
                dopasowanie {
                    adres-źródłowy dowolny;
                    adres-docelowy dowolny;
                    aplikacja dowolna;
                }
                następnie {
                    zezwól;
                    log {
                        inicjacja-sesji;
                        zamknięcie-sesji;
                    }
                    zlicz;
                }
            }
        }
    strefy {
        strefa-bezpieczeństwa trust {
                vlan.0 {
                    ruch-inbound-od-hosta {
                        usługi-systemowe {
                            wszystkie;
                        }
                        protokoły {
                            wszystkie;
                        }
                    }
                }
        strefa-bezpieczeństwa vpn {
            interfejsy {
                st0.5 {
                    ruch-inbound-od-hosta {
                        protokoły {
                            ospf;
                        }
                    }
                }
                gr-0/0/0.1 {
                    ruch-inbound-od-hosta {
                        usługi-systemowe {
                            wszystkie;
                        }
                        protokoły {
                            wszystkie;
                        }
                    }
                }
        strefa-bezpieczeństwa untrust {
            interfejsy {
                ge-0/0/0.0 {
                    ruch-inbound-od-hosta {
                        usługi-systemowe {
                            ping;
                            ssh;
                            ike;
                        }
                    }
                }
            }
        }
vlan-y {
    vlan-lokal {
        id-vlan 5;
        interfejs-l3 vlan.1;
    }

Konfiguracja Mikrotik hEX S:

Wersja oprogramowania RouterOS [6.44.3]

Konfiguracja 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

Wynik:
Ze strony Juniper SRX

netscreen@srx240> ping 192.168.152.1  
PING 192.168.152.1 (192.168.152.1): 56 bajtów danych
64 bajty z 192.168.152.1: icmp_seq=0 ttl=64 czas=29.290 ms
64 bajty z 192.168.152.1: icmp_seq=1 ttl=64 czas=28.126 ms
64 bajty z 192.168.152.1: icmp_seq=2 ttl=64 czas=26.775 ms
64 bajty z 192.168.152.1: icmp_seq=3 ttl=64 czas=25.401 ms
^C
--- statystyki ping 192.168.152.1 ---
4 pakiety wysłane, 4 pakiety odebrane, 0% utraty pakietów
czas w obie strony min/średni/maks/stddev = 25.401/27.398/29.290/1.457 ms

Ze strony Mikrotik

net[admin@GW-LTE-] > ping 192.168.1.1 
  SEQ HOST                                     ROZMIAR TTL CZAS STAN                                                                                                                                               
    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 
    wysłane=5 odebrane=5 utrata-pakietów=0% min-rtt=34ms avg-rtt=40ms max-rtt=51ms 

Wnioski

Po wykonanej pracy uzyskaliśmy stabilne połączenie VPN Tunnel, z zdalnej sieci mamy dostęp do całej sieci znajdującej się za juniperem, a zatem w drugą stronę również.

Nie polecam używać w tej konfiguracji IKE2, pojawiały się sytuacje, że po ponownym uruchomieniu któregoś z urządzeń IPSec nie wznawia się.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster