Do niedawna na moim telefonie VPN’ami były: PPTP lub L2TP - oba niespecjalnie mi się podobały. Ale od wersji 4-tej pojawiły się dwa nowe tryby: IPSec Xauth PSK i IPSec Xauth RSA. W pierwszym autoryzacja wykorzystuje login i hasło, w drugim certyfikaty.

Tryb IPSec Xauth PSK jest bardzo wygodny bo łatwo można połączyć go z zewnętrznymi mechanizmami uwierzytelniającymi np. LDAP, Active Directory, itp.

Pokażę jak skonfigurować swojego Fortigate’a by umożliwić połączenie z telefonów i tabletów na Androidzie 4.x do “Intranetu”. Większość konfiguracji można przeprowadzić tylko w trybie CLI - zakładam że wiesz jak to zrobić. To co wygodniej można zrobić w trybie WWW to głównie tworzenie reguł dostępu na zaporze.

P.S. Teoretycznie powinno to też zadziałać na IPhone’ach/IPad’ach itp., przy czym udało mi się to zestawić na 4GS ale na 5-ce już nie - nie miałem tych aparatów na tyle długo by dokładniej to zbadać.

Na początek konfigurujemy fazę pierwszą - ja lubię interface mode ale oczywiście będzie to działać również w trybie policy (trzeba będzie nieco polecenia zmienić).

config vpn ipsec phase1-interface
  edit "vpn-android"
    set type dynamic
    set interface "port1"
    set dhgrp 2
    set peertype one
    set xauthtype auto
    set mode aggressive
    set mode-cfg enable
    set proposal aes128-sha1 aes128-md5 3des-sha1
    set negotiate-timeout 15
    set peerid "jakis-mobilny-identyfikator"
    set authusrgrp "grupa-ludzikow"
    set psksecret haslo
    set unity-support enable
    set ipv4-start-ip 172.16.0.5
    set ipv4-end-ip 172.16.0.100
    set ipv4-netmastk 255.255.255.0
    set ipv4-dns-server1 172.16.0.1
    set ipv4-dns-server2 8.8.8.8
  next
end

Jedna ciekawostka - opcja unity-support domyślnie jest ustawiana na enable i proponuję ją tak zostawić - dzięki temu ta sama konfiguracja będzie działać na urządzeniach z iOS’e i OS X, wystarczy skonfigurować VPN jako Cisco 😃

No to faza druga:

config vpn ipsec phase2-interface
  edit "mobile-vpn-p2"
    set keepalive enable
    set pfs disable
    set phase1name "vpn-android"
    set proposal aes128-sha1 aes128-md5 3des-sha1
    set keylifeseconds 3600
  next
end

Kilka ustawień na interfejsie:

config system interface
  edit "vpn-android"
    set ip 172.16.0.1 255.255.255.255
    set allowaccess ping
    set type tunnel
    set remote-ip 139.x.x.10
    set interface "port1"
  next
end

Włączymy sobie serwer DNS na interfejsie VPN:

config system dns-server
  edit "vpn-android"
  next
end

No to teraz trzeba utworzyć co najmniej jedną regułę na zaporze zezwalającą na dostęp z interfejsu vpn-android (z adresów tej sieci) do jakiejś sieci intranetowej (np. wewnętrznego serwera WWW), na odpowiednich portach.

Ponadto jeśli chcemy móc korzystać z cache DNS’a na interfejsie vpn-android to musimy umożliwić do niego dostęp tworząc regułę z interfejsu vpn-android (z adresów przydzielanych przez mode-cfg) do vpn-android (przynajmniej do DNS’a - 172.16.0.1).

Jeżeli chcemy by urządzenia mobilne mogły łączyć się do zewnętrznych usług przez tunel VPN (co w niektórych przypadkach może być bardzo cenne) to musimy też utworzyć regułę z interfejsu vpn-android do któregoś z interfejsów WAN’owskich.

VPN Screenshot

A tak należy to wyklikać na telefonie

http://kb.fortinet.com/kb/viewContent.do?externalId=FD31619&sliceId=1external link