Организация 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.
Описание — Имя подключения
Сервер — IP адрес вашего сервера
Учетная запись — это user из файла /etc/ppp/chap-secrets
Пароль — password из /etc/ppp/chap-secrets
Общий ключ — YourSharedSecret из /etc/ipsec.secrets
После этого в меню Настройки и в меню Настройки > Основные > VPN появляется возможность включить VPN. Если все пройдет успешно, то появится соответствующий значок.
VPN надо будет включать вручную, при каждом использовании.
Настройка подключения в Windows 7
В центре управления сетями и общим доступом, установка нового подключения к сети создание нового подключения:
Создаете новое VPN подключение:
В поле “интернет адрес” вводите IP вашего сервера. Не подключаетесь сразу.
После этого заходите в свойства нового подключения и в настройках указываете использование L2TP, вводите ключ YourSharedSecret из /etc/ipsec.secrets
При подключении указываете логин и пароль из /etc/ppp/chap-secrets.
При написании статьи были использованы материалы ссылка1, ссылка2