IPSec: первый шаг
19.05.2017

IPSec Xauth PSK - безсертификационный вариант поднятия VPN-туннеля. В роли клиента может выступать Android, OS X и iPhone. В роли сервера racoon (aka ipsec-tools) на Debian 8.0.

Ставим все самое необходимое:

# apt-get install racoon ipsec-tools

racoon конфиг:

path pre_shared_key "/etc/racoon/psk.txt";
listen {
    adminsock disabled;
    isakmp 1.2.3.4 [500];
    isakmp_natt 1.2.3.4 [4500];
    strict_address;
}
remote anonymous {
    mode_cfg on;
    exchange_mode main,aggressive;
    generate_policy on;
    passive on;
    # obey is needed for android 6.0
    proposal_check obey;
    nat_traversal force;
    dpd_delay 3600;
    lifetime time 8 hour;
    proposal {
        encryption_algorithm aes;
        hash_algorithm sha1;
        dh_group modp1024;
        authentication_method xauth_psk_server;
    }
}
sainfo anonymous {
    pfs_group 2;
    encryption_algorithm aes;
    authentication_algorithm hmac_sha256, hmac_sha1;
    compression_algorithm deflate;
    lifetime time 4 hour;
}
mode_cfg {
    pfs_group 2;
    auth_source pam;
    auth_throttle 3;
    pool_size 50;
    network4 192.168.20.0;
    netmask4 255.255.255.0;
    dns4 8.8.8.8;
    # empty file to avoid annoying banner on client
    banner "/dev/null";
    # allow client to cache password:
    save_passwd on;
    conf_source local;
}

Содержимое /etc/racoon/psk.txt:

* secret

Необходимо разрешить маршрутизацию:

# sysctl net.ipv4.ip_forward=1

Необходимо разрешить протокол ESP:

# iptables -t filter -I INPUT -p esp -j ACCEPT

Разрешить входящие соединения на порты 500/udp и 4500/udp:

# iptables -t filter -I INPUT -p udp --dport 500 -j ACCEPT
# iptables -t filter -I INPUT -p udp --dport 4500 -j ACCEPT

Включить NAT для нашей сети:

# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j MASQUERADE

Создаем пользователя:

# groupadd vpn
# useradd -G vpn vpn_user
# passwd vpn_user

Запуск:

# racoon -vvddF

Скриншот настройки клиента на Android:

VPN Android настройка
Рисунок 1 - VPN Android настройка

IPSec pre-shared key: вводим значение из PSK-файла (у нас был secret). Также спросят имя пользователя и пароль - вводим данные созданного выше пользователя.

Успехов!

Теги → ipsec vpn psk