S2S VPN SSG <-> Cisco IOS

JunOS / Juniper / Netscreen
Wiadomość
Autor
Gizmo
wannabe
wannabe
Posty: 185
Rejestracja: 28 sty 2008, 21:55

S2S VPN SSG <-> Cisco IOS

#1

#1 Post autor: Gizmo »

Witam,

Trafiłem na niezłą zagwozdkę. Potrzebuję zestawić S2S VPN pomiędzy firewallem SSG a ruterem Cisco. Generalne w sieci jest sporo receptur jak zestawić VPN ale wszystkie w "starym" stylu, tj. czysty IPSEC na SSG i crypto map przypięty do interfejsu wanowego na Cisco. Ja jednak wolałbym zestawić na VTI po stronie Cisco. I tu zagadka. Na SSG na interfejsie tunnel jest tylko encapsulacja GRE. Po skonfigurowaniu VPNu, zbindowaniu go do interfejsu tunnel mam fajną sytuację:
Po stronie Cisco wszystko wygląda OK, tj. IPSEC P1 i P2 - OK interfejs tunel up/up.

Kod: Zaznacz cały

#sh crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id status
77.x.y.z  31.x.y.z     QM_IDLE           1087 ACTIVE

#sh crypto ipsec sa

interface: Tunnel100
    Crypto map tag: Tunnel100-head-0, local addr 31.x.y.z

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
   remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
   current_peer 77.x.y.z port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
    #pkts decaps: 187, #pkts decrypt: 187, #pkts verify: 187
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 0, #recv errors 0

     local crypto endpt.: 31.x.y.z, remote crypto endpt.: 77.x.y.z
     path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet0/0
     current outbound spi: 0x3172C542(829605186)
     PFS (Y/N): Y, DH group: group2

     inbound esp sas:
      spi: 0x7525764E(1965389390)
        transform: esp-aes esp-sha-hmac ,
        in use settings ={Tunnel, }
        conn id: 2075, flow_id: Onboard VPN:75, sibling_flags 80000046, crypto map: Tunnel100-head-0
        sa timing: remaining key lifetime (k/sec): (4494339/2670)
        IV size: 16 bytes
        replay detection support: Y
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0x3172C542(829605186)
        transform: esp-aes esp-sha-hmac ,
        in use settings ={Tunnel, }
        conn id: 2076, flow_id: Onboard VPN:76, sibling_flags 80000046, crypto map: Tunnel100-head-0
        sa timing: remaining key lifetime (k/sec): (4494360/2670)
        IV size: 16 bytes
        replay detection support: Y
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:
Na SSG mam:

Kod: Zaznacz cały

plfw01-> get log even

2011-09-20 22:11:18 system info  00536 IKE 31.x.y.z Phase 2 msg ID
                                       3aa98e48: Completed negotiations with
                                       SPI 3172c542, tunnel ID 3, and
                                       lifetime 3600 seconds/4194303 KB.
2011-09-20 22:11:18 system info  00536 IKE 31.x.y.z phase 2:The symmetric
                                       crypto key has been generated
                                       successfully.

plfw01-> get ike cookies

IKEv1 SA -- Active: 1, Dead: 0, Total 1

81182f/0003, 31.x.y.z:500->77.x.y.z:500, PRESHR/grp2/3DES/SHA, xchg(2) (MVPN/grp-1/usr-1)
resent-tmr 322 lifetime 28800 lt-recv 28800 nxt_rekey 27754 cert-expire 0
responder, err cnt 0, send dir 1, cond 0xc0
nat-traversal map not available
ike heartbeat              : disabled
ike heartbeat last rcv time: 0
ike heartbeat last snd time: 0
XAUTH status: 0
DPD seq local 0, peer 0


IKEv2 SA -- Active: 0, Dead: 0, Total 0

plfw01-> get sa
total configured sa: 1
HEX ID    Gateway         Port Algorithm     SPI      Life:sec kb Sta   PID vsys
00000003<     31.x.y.z  500 esp:a128/sha1 3172c542  2551 4095M A/U    -1 0
00000003>     31.x.y.z  500 esp:a128/sha1 7525764e  2551 4095M A/U    -1 0
plfw01->

plfw01-> get vpn
Name            Gateway         Mode RPlay 1st Proposal         Monitor Use Cnt Interface
--------------- --------------- ---- ----- -------------------- ------- ------- ---------------
MVP          MVPN         tunl Yes   g2-esp-aes128-sha    on            0 eth0/0
  Total Auto VPN: 1
  Total Pure Transport Mode IPSEC VPN: 0
Ale interfejs tunel:

Kod: Zaznacz cały

plfw01-> get inter 

tun.1          192.168.0.5/30                    Trust       N/A               -   D   -

VPN ma status up ale oczywiście żadne pakiety nie przechodzą.

2011-09-20 22:11:19 critical VPN 'MVP' from 31.x.y.z is up.

Konfig interfejsu i vpn na SSG

Kod: Zaznacz cały

set interface "tunnel.1" zone "Trust"
set interface tunnel.1 ip 192.168.0.5/30
set interface tunnel.1 tunnel encap gre
set interface tunnel.1 tunnel local-if ethernet0/0 dst-ip 31.x.y.z
set interface tunnel.1 tunnel keep-alive interval 10 threshold 3
set interface tunnel.1 mtu 1400

set route 10.1.0.0/21 interface tunnel.1 gateway 192.168.0.6 permanent
set route 10.7.5.0/24 interface tunnel.1 gateway 192.168.0.6 permanent
set route 10.1.8.10/24 interface tunnel.1 gateway 192.168.0.6 permanent

set ike respond-bad-spi 1
set ike ikev2 ike-sa-soft-lifetime 60
set ike gateway "MVPN" address 31.x.y.z Main local-id "SSG5FW" outgoing-interface "ethernet0/0" preshare "abcde123456" proposal "pre-g2-3des-sha"

set vpn "MVP" gateway "MVPN" replay tunnel idletime 0 proposal "g2-esp-aes128-sha"
set vpn "MVP" monitor
set vpn "MVP" id 0x3 bind interface tunnel.1

Police nie są zdefiniowane, bo gdy VPN jest zbindowany do tunelu to nie można stworzyć policy typu tunnel (używane przy old style VPN).

Cisco skonfigurowane klasycznie:

Kod: Zaznacz cały


crypto isakmp policy 15
 encr 3des
 authentication pre-share
 group 2
 lifetime 28800

crypto isakmp key abcde123456 address 77.x.y.z
crypto isakmp invalid-spi-recovery

crypto ipsec transform-set AES_SHA esp-aes esp-sha-hmac
!
crypto ipsec profile VPN_to_home
 set transform-set AES_SHA
 set pfs group2
 set identity SSG5FW
!
interface Tunnel100
 description *** VPN do home-net (SSG5) ***
 ip address 192.168.0.6 255.255.255.252
 ip mtu 1400
 ip virtual-reassembly
 zone-member security INSIDE
 ip tcp adjust-mss 1360
 load-interval 30
 keepalive 10 3
 tunnel source GigabitEthernet0/0
 tunnel mode ipsec ipv4
 tunnel destination 77.x.y.z
 tunnel path-mtu-discovery
 tunnel protection ipsec profile VPN_to_home

ip route 192.168.1.0 255.255.255.0 Tunnel100 name VPN_to_home
Pzdr.

Awatar użytkownika
krisator
wannabe
wannabe
Posty: 446
Rejestracja: 06 maja 2005, 18:35

#2

#2 Post autor: krisator »

Problem polega na tym, że właśnie musisz na SSG zdefiniować jeszcze polityki dla ruchu.

Skoro robisz VPN'a route-based - na interfejsach tunelowych (a nie policy-based - na crypto-map'ie), to w polityce na SSG nie szyfruj ruchu - zrób zwykłą politykę bez szyfrowania.

Dodatkowy routing (który powinieneś skonfigurować na interfejs tunelowy) powinien wrzucić ten ruch w tunel gdzie zostanie on zaszyfrowany. Jak to w ten sposób dokonfigurujesz - nie ma opcji żeby nie działało :wink:

K

Gizmo
wannabe
wannabe
Posty: 185
Rejestracja: 28 sty 2008, 21:55

#3

#3 Post autor: Gizmo »

No właśnie, nie. Ta sama konfiguracja, tylko przy zdjętym IPSECu działa poprawnie. Problemem jest niedziałający interfejs tunnel.1 po stonie SSG. A niestety w logach SSG nie widzą niczego co by mogło sugerować przyczynę.

MK

b4n3
wannabe
wannabe
Posty: 128
Rejestracja: 25 cze 2010, 09:58

#4

#4 Post autor: b4n3 »

Podam Ci przykładowy konfig IPsec route based VPN, który działa u mnie, aby go wykonać musisz mieć wersje netscreen od 6.3.0 w górę, ponieważ ona obsługuje multiple proxy id. No chyba, że sieć docelowa mieści się w konkretnej masce, to luz, choć tak czy inaczej polecam wersję od 6.3.0 w górę, działa spoko. Zatem:

Kod: Zaznacz cały

Tworzysz zone i interfejsy:
set zone id 100 "EXTERNAL"
set zone id 101 "INTERNAL"
set interface "ethernet0/8" zone "Internal"
set interface "ethernet0/9" zone "EXTERNAL"
set interface "tunnel.1" zone "EXTERNAL"  <-- tutaj oczywiście możesz dać inną zone, i sterować sobie ruchem osobno.
set interface ethernet0/8 ip 12.12.12.12/29
set interface ethernet0/8 route
set interface ethernet0/9 ip 1.1.1.1/29
set interface ethernet0/9 route
set interface tunnel.1 ip unnumbered interface ethernet0/9

Ustawiasz adres book, żeby później zrobić sobie policy:
set address "INTERNAL" "Net-Internal-1" 10.10.10.0 255.255.254.0
set address "INTERNAL" "Net-Internal-2" 10.10.12.0.0 255.255.254.0
set address "EXTERNAL" "Net-External-1" 22.22.22.0 255.255.255.0
set group address "INTERNAL" "ALL-INTERNAL" add "Net-Internal-1"
set group address "INTERNAL" "ALL-INTERNAL" add "Net-Internal-2"

Ustawiasz sobie poroposale, tak jak Ci pasują, np:
set ike p1-proposal "pre-g2-3des-sha-86400" preshare group2 esp 3des sha-1 second 86400
set ike p2-proposal "g2-esp-3des-sha1-28800" group2 esp 3des sha-1 second 28800

Ustawiasz docelowego peera:
set ike gateway "DOM" address 5.5.5.5 Main outgoing-interface "ethernet0/9" preshare "TAJNY-KLUCZ" proposal "pre-g2-3des-sha-86400"

Ustawiasz phase2 i bindujesz do interfejsu tunnel.1:
set vpn "SITE-TO-DOM" gateway "DOM" no-replay tunnel idletime 0 proposal "g2-esp-3des-sha1-28800" 
set vpn "SITE-TO-DOM" bind interface tunnel.1

Ustawiasz proxy id, czyli to co wpisujesz w ACL dla crypto mapy:
set vpn "SITE-TO-DOM" proxy-id local-ip 10.10.10.0/23 remote-ip 22.22.22.0/24 "ANY" 
set vpn "SITE-TO-DOM" proxy-id local-ip 10.10.12.0/23 remote-ip 22.22.22.0/24 "ANY" 

Ustawiasz policy dla ruchu:
set policy id 1 from "INTERNAL" to "EXTERNAL"  "ALL-INTERNAL" "Net-External-1" "ANY" permit log 
set policy id 1
set log session-init
exit
set policy id 2 from "EXTERNAL" to "INTERNAL" "Net-External-1" "ALL-INTERNAL" "ANY" permit log 
set policy id 2
set log session-init
exit

Ustawiasz routing globlany i dla sieci docelowej, którą chcesz wysłać przez VPN:
set route 0.0.0.0/0 interface ethernet0/9 gateway 3.3.3.3
set route 22.22.22.0/24 interface tunnel.1
To w sumie by było na tyle, jak będziesz miał jeszcze jakiś problem to daj znać, aa i sprawdź w debugu na Cisco czy aby na pewno wszystko jest ok, najczęściej przy L2L pomiędzy Cisco i Juniperem problem występuje na różnicach w proxy id.
Po stronie ssg też jest debug, z tego co pamiętam to debug ike basic powinien wystarczyć.

Gizmo
wannabe
wannabe
Posty: 185
Rejestracja: 28 sty 2008, 21:55

#5

#5 Post autor: Gizmo »

Witam,

Miałem w końcu trochę czasu pobawić się. W końcu ruszyło, choć powiem że logicznie konfiguracja na SSG nie wygląda dobrze. Dzięki b4n3 za pomoc, uparcie wstawiałem enkapsulację GRE na interfejs tunnel, dopiero samo utworzenie interfejsu i użycie go jako unnumbered rozwiązało sprawę. Co ciekawe po stronie Cisco nie ma znaczenia czy interfejs jest unnumbered czy ip address x.x.x.x , najwyżej w traceroute wstawiany jest adres publiczny zamiast prywatnego.

Ach, i proxy-id na SSG musi być ustawione na local 0..0.0/0 remote 0.0.0.0/0. Interfejs VTI na Cisco używa tylko i wyłącznie takiego proxy-id. Przy użyciu crypto-mapy oczywiście muszą być poprawne, lustrzane aclki.

Pzdr.
Marcin

ODPOWIEDZ