serwer VPN IPSec z użyciem strongSwan
Ostatnia zmiana: 2013-11-26 18:43

IPSec jest obecny standardowo w większości obecnych systemów, począwszy od androda, przez iPhone a na Windows 7 skończywszy, więc w przeciwieństwie do OpenVPN nie trzeba instalować dodatkowego oprogramowania na kliencie. Przedstawione rozwiązanie zapewnia szyfrowany tunel do routera z dostępem do internetu przez ten router, zabezpieczony parą login/hasło.

Poniższy poradnik wykorzystuje strongSwan. Reguły przetestowano dla OpenWrt Attitude Adjustment 12.09. Jako klient: Android 4.1/4.2, powinno także działać z iPhone.
Instalacja strongSwan wraz z zależnościami zajmuje dużo miejsca, więc wymaga extroota.

OpenWrt

Instalacja



    # opkg install strongswan-default
    # opkg install strongswan-mod-dhcp strongswan-mod-farp
    # mkdir -p /etc/ipsec.d/private


Pliki konfiguracyjne

/etc/ipsec.conf


    config setup
                            
    conn android
        keyexchange=ikev1
        authby=xauthpsk
        xauth=server
        left=%defaultroute
        leftsubnet=0.0.0.0/0
        leftfirewall=yes
        right=%any
        rightsourceip=%dhcp
        forceencaps=yes
        auto=add

/etc/ipsec.secrets


        : PSK "pass18"
    user1 : XAUTH "haslo1"
    user2 : XAUTH "haslo2"
    user3 : XAUTH "haslo3"


"pass18" jest tzw. kluczem wspólnym.
/etc/strongswan.conf


    # strongswan.conf - strongSwan configuration file

    charon {
        dns1 = 8.8.8.8

        plugins {
            dhcp {
                server = 192.168.1.1
            }
        }
    }

    pluto {

    }

    libstrongswan {
        # set to no, the DH exponent size is optimized
        # dh_exponent_ansi_x9_42 = no
    }

/etc/init.d/ipsec


    #!/bin/sh /etc/rc.common

    START=99
    STOP=01
    
    start() {
        ipsec start
    }
                        
    stop() {
        ipsec stop
    }

Firewall



    # uci add firewall rule
    # uci set firewall.@rule[-1].src=wan
    # uci set firewall.@rule[-1].target=ACCEPT
    # uci set firewall.@rule[-1].proto=tcpudp
    # uci set firewall.@rule[-1].dest_port=4500
    # uci add firewall rule
    # uci set firewall.@rule[-1].src=wan
    # uci set firewall.@rule[-1].target=ACCEPT
    # uci set firewall.@rule[-1].proto=tcpudp
    # uci set firewall.@rule[-1].dest_port=500
    # uci commit firewall

Uruchomienie



    # chmod 755 /etc/init.d/ipsec
    # /etc/init.d/firewall restart
    # /etc/init.d/ipsec enable
    # /etc/init.d/ipsec start

Android 4.1/4.2

Należy po kolei wybrać:
- Ustawienia -> Sieci zwykłe i bezprzewodowe -> Więcej -> VPN -> Dodaj profil VPN
- Nazwa: dowolna
- Typ: IPSec Xauth PSK (nie L2TP/IPSec PSK!)
- Adres serwera: adres IP na WAN
- Identyfikator IPSec: zostawić puste
- Klucz wspólny IPSec: pass18
- pozostałe elementy zostawiamy w spokoju takie jakie są.
- Wybrać Zapisz

Do połączenia należy podać użytkownika i hasło podane wcześniej w pliku, czyli np. user2 jako użytkownik i haslo2 jako jego hasło.