Меню

Linux Настройка VPN-сервер PPTPD

 

Имеем сервер, выполняющий роль роутера, на базе ОС “Ubuntu Server …”. Нам нужно подключаться к сети, используя MS VPN. Для этого в Linux существует пакет pptpd.
Первое, что нам нужно, это установить пакет pptpd. Берем права рута и ставим пакет:

sudo -sapt-get install pptpd

Сервис автоматически запустился демоном. Проверим это:

netstat -anp | grep pptpdtcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN 21900/pptpd unix 2 [ ] DGRAM 6144232 21900/pptpd


Демон запущен и слушает порт tcp/1723. Теперь нам нужно его настроить.
Откроем первый его конфиг, предварительно сделав бекап файла:

cp /etc/pptpd.conf /etc/pptpd.conf_bakvim /etc/pptpd.conf


и в нем настраиваем:

# IP-адрес сервера в VPN-сети:

localip 192.168.91.1


# Диапазон адресов для выдачи VPN-клиентам:

remoteip 192.168.91.102-154,192.168.91.101


# Включим передачу VPN-клиентам широковещателных пакетов с внутреннего интерфейса роутера:

bcrelay eth0

# Смотрим, чтобы было закомментировано, иначе клиенту не будет передаваться его IP-адрес:

#noipparam


Теперь второй файл. Открываем и правим:

vim /etc/ppp/pptpd-options


# Требовать от клиента обязательное авутентификации:

auth


# Укажем файл, в который писать лог:

logfile /var/log/pptpd.log


# Адрес DNS-сервера, указываемого клиентам:

ms-dns 192.168.3.151


# Чтобы не сбивался маршрут по умолчанию:

nodefaultroute


# Опция proxyarp имеет смысл только если вы VPN-клиентам выделяете адреса
# из вашей реальной Ethernet-сети. У нас все VPN-клиенты находятся в другой VPN-подсети,
# поэтому эту опцию закомментируем:
#proxyarp

Вот так выглядят мои конфиги, до редактирования, описанного выше, являвшиеся дефолтными:

cat /etc/pptpd.conf | grep -v "^#" | grep -v "^$"option /etc/ppp/pptpd-optionslogwtmpbcrelay eth0localip 192.168.91.1remoteip 192.168.91.102-154,192.168.91.101

 

cat /etc/ppp/pptpd-options | grep -v "^#" | grep -v "^$"name pptpdrefuse-paprefuse-chaprefuse-mschaprequire-mschap-v2require-mppe-128ms-dns 192.168.3.151nodefaultroutelocknobsdcomp authlogfile /var/log/pptpd.log


Теперь нам нужно создать юзеров, которыми будут подключатся клиенты. Они прописываются в файле /etc/ppp/chap-secrets.

vim /etc/ppp/chap-secrets# client; 
server  secret 
IP addressestest * testpass *testa * testapass 192.168.91.101

Здесь создан пользователь test с паролем testpass, который может подключаться откуда угодно и выдаваться ему будет любой свободный IP. А вот пользователю testa всегда будет выдаваться IP 192.168.91.101.

Перезапускаем сервис:

service pptpd restart
Restarting PPTP: 
Stopping PPTP: pptpd.
Starting PPTP Daemon: pptpd.

 



Теперь необходимо настроить фаерфолл на роутере (VPN-сервере). Необходимо разрешить входящие соединения по 47 протоколу, а так же входящие соединения на tcp порт 1723. Вот выдержка из моего скрипта правил iptables:

# VPN - PPTPD
$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