VPN для iPhone

в 9:18, , рубрики: iphone, l2tp, информационная безопасность, Сетевые технологии, метки: , ,

Организация VPN сервера для использования с iOS устройствами

Прочитав статью Теплый и ламповый интернет озаботился проблемой поднятия VPN сервера, которым можно пользоваться с iOS устройств.

Для использования OpenVPN нужен Jailbreak. Этот вариант мной не рассматривался.

iOS поддерживает L2TP, PPTP, Cisco IPSec.

Cisco IPSec работает с соответствующим оборудованием. PPTP иногда режется сотовыми операторами. Исходя из этого был выбран L2TP.

У меня уже был VQ7 сервер от Hetzner с установленной Ubuntu 12.04 32 bit, поэтому все эксперименты проводились на данном сервере.

Установка IPSec

Устанавливается OpenSwan

sudo aptitude install openswan

При установке будет предложено создать сертификат x509. Это не обязательно, так как доступ будет использоваться по ключевой фразе.

Настройка IPSec:

sudo nano /etc/ipsec.conf

Конфигурация выглядит следующим образом:

version 2.0
config setup
    nat_traversal=yes # Позволяет подключаться клиентам расположенным за NAT
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=YOUR.SERVER.IP.ADDRESS
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

Конфигурируем доступ к серверу по IPSec:

sudo nano /etc/ipsec.secrets

Файл должен содержать одну строчку:

YOUR.SERVER.IP.ADDRESS   %any:  PSK "YourSharedSecret"

Ссылка на pre-shared ключ должна быть удалена, иначе IPSec не сможет инициализироваться.
YOUR.SERVER.IP.ADDRESS в обоих файлах — IP адрес вашего сервера.
%any в /etc/ipsec.secrets определяет с каких адресов может быть доступ. В данном случае разрешается доступ со всех адресов.
YourSharedSecret — ключ, который будет использоваться для доступа по IPSec.

Для того, чтобы IPSec нормально работал, делаются дополнительные настройки:

sudo nano /root/ipsec

Содержимое:

iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

Первые две строчки на самом деле используются для L2TP

Делаем скрипт исполняемым:

sudo chmod +x /root/ipsec

Добавляем его в rc.local

Установка L2TP:

Устанавливается xl2tpd:

sudo aptitude install xl2tpd

Настройка L2TP:

sudo nano /etc/xl2tpd/xl2tpd.conf

Содержимое:

[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
refuse chap = yes
refuse pap = yes
require authentication = yes # во время теста можно отключить, тогда все кто пройдет верификация ключом IPSec будут иметь доступ
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

Дополнительные настройки:

sudo nano /etc/ppp/options.xl2tpd

Содержимое:

require-mschap-v2
ms-dns 8.8.8.8 # Публичный DNS Google
ms-dns 8.8.4.4 # Публичный DNS Google
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd # Имя сервиса, используется в настройках
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

Добавление пользователей:

sudo nano /etc/ppp/chap-secrets

Формат файла

# user      server      password            ip
test        l2tpd       testpassword        *

test — имя пользователя
l2tpd — имя сервиса из /etc/ppp/options.xl2tpd
testpassword — пароль для пользователя
* — диапазон разрешенных адресов для логина данного пользователя (формат 10.254.253.128/25)

После этого рестарт IPSec и L2TPD должны активировать всю систему:

sudo /etc/init.d/ipsec restart
sudo /etc/init.d/xl2tpd restart

Настройка iPhone:

Настройки > Основные > VPN > Добавить конфигурацию VPN.
VPN для iPhone
VPN для iPhone

Описание — Имя подключения
Сервер — IP адрес вашего сервера
Учетная запись — это user из файла /etc/ppp/chap-secrets
Пароль password из /etc/ppp/chap-secrets
Общий ключYourSharedSecret из /etc/ipsec.secrets

VPN для iPhone

После этого в меню Настройки и в меню Настройки > Основные > VPN появляется возможность включить VPN. Если все пройдет успешно, то появится соответствующий значок.

VPN для iPhone

VPN для iPhone

VPN надо будет включать вручную, при каждом использовании.

Настройка подключения в Windows 7

В центре управления сетями и общим доступом, установка нового подключения к сети создание нового подключения:

VPN для iPhone

Создаете новое VPN подключение:

VPN для iPhone

В поле “интернет адрес” вводите IP вашего сервера. Не подключаетесь сразу.

VPN для iPhone

После этого заходите в свойства нового подключения и в настройках указываете использование L2TP, вводите ключ YourSharedSecret из /etc/ipsec.secrets

VPN для iPhone

При подключении указываете логин и пароль из /etc/ppp/chap-secrets.

При написании статьи были использованы материалы ссылка1, ссылка2

Автор: Nixi

Поделиться

* - обязательные к заполнению поля