четверг, 14 июля 2011 г.

Организация VPN сервера в Ubuntu

Устанавливаем VPN сервер:
$sudo apt-get install pptpd

Ок. Демон установился и запустился. По-умолчанию, демон слушает TCP-порт 1723 и использует протокол GRE (он же протокол 47) . Разрешаем на фаерволе входящие подключения на этот порт по этому протоколу (IPTABLES =/sbin/iptables, если кто забыл:)) ):

$IPTABLES -A INPUT -p gre -s 0/0 -j ACCEPT
$IPTABLES -A OUTPUT -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 --dport 1723 j ACCEPT
или через shorewall, /etc/shorewall/rules добавляем:
ACCEPT           net    fw    tcp 1723
GRE(ACCEPT)   net    fw



Далее ковыряем конфиг /etc/pptpd.conf, чтобы получилось вот такое:


option /etc/ppp/pptpd-options
#noipparam
logwtmp
bcrelay eth0
localip 10.177.36.3
remoteip 10.177.36.10-15
options - путь, где лежит конфиг опций; ВАЖНО!!! должно быть закаментировано! noipparam - если опция активна, то клиенту не будет передаваться его IP; logwtmp - позволяет передавать PPTP-серверу лог аутентификации пользователей через стандартную функцию logwtmp (нужна для отладки); bcrelay - разрешить передачу VPN-клиентам широковещательных пакетов с внутреннего интерфейса eth0; localip - ip нашего VPN сервера; remoteip - диапазон ip, выдаваемых клиентам.

Теперь ковырнем конфиг опций /etc/ppp/pptpd-options:

name pptpd
auth
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
logfile /var/log/pptpd.log
lock
nobsdcomp 
name - имя сервера (должно совпадать с параметром server в /etc/ppp/chap-secrets см. описание ниже); auth - требовать от клиента обязательной аутентификации; refuse-pap,refuse-chap,refuse-mschap - не принимать подключения от клиентов использующих ненадежные протоколы проверки пароля (pap, chap, ms chap v1); require-mschap-v2 - требовать от клиентов наиболее (на сегодняшний день) надежный протокол проверки пароля; require-mppe-128 - использовать механизм шифрования с 128-битным ключем; proxyarp - директива серверу работать с локальной сетью не используя маскарадинг (используется если клиентам выдаются ip-адреса из локальной подсети); nodefaultroute - не менять клиентам маршрут по-умолчанию (что б при установки соединения не отваливались интернеты) ВАЖНО!!!!! Не смотря на nodefaultroute, под Windows при установке VPN все равно маршрут по-умолчанию становиться на VPN, чтобы этого не происходило идем в свойства VPN соединения → Сеть → Протокол TCP/IP → Свойства → Дополнительно, там снимаем галку "Использовать основной шлюз в удаленной сети". logfile - куда писать логи; nobsdcomp - явное указание серверу, что компьютер работает под осью отличной от BSD (OpenBSD, FreeBSD).


Добавляем пользователей в /etc/ppp/chap-secrets:

# client        server                     secret                  IP addresses
test               pptpd                      testpass
test1             pptpd                      test1pass           10.177.36.10

Таким образом мы создали пользователя "test" с паролем "testpass" и пользователя "test1" с паролем "test1pass" c явным указанием ему получать ip-адрес "10.177.36.10".

Перезапускаем демона:

$sudo /etc/init.d/pptpd restart

Все! VPN-сервер готов к работе.

Если VPN-сервер работает за NAT-том, то еще необходимо организовать к нему проброс. На VPN-сервере разрешаем форвард пакетов:

$sudo mcedit /proc/sys/net/ipv4/ip_forward
и туда пишем:
net.ipv4.ip_forward=1

потом выполняем:
$sudo sysctl -p

Ну и, собственно проброс... На шлюзе в /etc/shorewall/rules добавляем:

DNAT   net    loc:10.177.36.3    tcp 1723
DNAT   net    loc:10.177.36.3    47

На этом настройка завершена...

А если все подключается, но ничего не работает, то вполне возможно нужно изменить размер MTU, таким образом, чтобы он был меньше MTU соединения с провайдером. Например, вы подключаетесь к провайдеру с MTU=1400 (см. в настройках роутера), тогда для своего VPN сервера нужно задать меньшее значение, например 1300. Для этого идем в /etc/ppp/pptpd-options и дописываем:

mru 1300
mtu 1300

ПОЛЕЗНЫЕ ССЫЛКИ:


Жопиздан:) (с) Job Is Done

Комментариев нет:

Отправить комментарий