Вы здесь

Настраиваем PPTP сервер в Ubuntu Server 16.04


PPTP сервер на Ubuntu 16.04

Привет, сегодня я покажу как можно сделать, пожалуй, самый простой вариант VPN сервера. Делать его я буду на Ubuntu 16.04, и вариант этот - PPTP. Это не самый лучший вариант, но зато самый простой и быстрый в настройке, и поддерживается очень многими устройствами и системами по умолчанию, без установки дополнительных программ. Поднять его можно, буквально за несколько минут.

Перейдем в режим суперпользователя, если вы еще не в нем:

sudo su

и установим pptpd:

apt-get update && apt-get upgrade
apt-get install pptpd

правим конфиг pptpd:

nano /etc/pptpd.conf

его содержимое должно быть таким:

option /etc/ppp/pptpd-options
logwtmp
#адрес сервера pptp (внутренний, который будет виден клиентам, он же шлюз)
localip 192.168.6.1
#пул адресов выдаваемых клиентам
remoteip 192.168.6.10-210
connections 100

Правим pptpd-options:

nano /etc/ppp/pptpd-options

Его содержимое:

name pptpd
refuse-pap
nobsdcomp
#делаем обязательным шифрование
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
novjccomp
nodefaultroute
lock
nobsdcomp
#этими сточками можно включить авторизацию по radius серверу, но это совсем другая история =)
#plugin radius.so
#plugin radattr.so
lcp-echo-failure 50
#с mtu можно поиграться, чтобы найти оптимальное значение, в моем случае, с этими значениями все нормально работает
mtu 1400
mru 1400

Далее зададим логины и пароли клиентов:

nano /etc/ppp/chap-secrets

Пример содержания:

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
test1   pptpd   testtest        192.168.6.100

Соответсвенно:
test1 - имя пользователя
pptpd - имя службы
testtest - пароль
192.168.6.100 - статический адрес для пользователя, если за место адреса указать *, то адрес пользователю будет выдаваться динамический из пула, указанного в файле /etc/ppp/pptpd-options

Дальше сделаем, что бы пользователи могли ходить в интернет через наш сервер:

nano /etc/sysctl.conf

Находим строчку:

net.ipv4.ip_forward=1

ее нужно раскомментировать, если не находим эту строчку, то добавляем.

После чего сделаем маскарадинг из нашей vpn сети в интернет, тут, в зависимости от того, какой фаерволл вы используете, можно делать по-разному, я покажу для голого iptables и для ufw.

В первом случае, для чистого iptables:

iptables -t nat -A POSTROUTING -s 192.168.6.0/24 -o eth0 -j MASQUERADE

Соответственно eth0 - ваш интерфейс, смотрящий в интернет, 192.168.6.0 - сеть vpn.

iptables-save > /etc/iptables.up.rules
nano /etc/networks/interfaces

В конец файла добавляем:

pre-up iptables-restore < /etc/iptables.up.rules

Во втором случае для ufw:

nano /etc/default/ufw

Находим там DEFAULT_FORWARD_POLICY и делаем его ACCEPT:

DEFAULT_FORWARD_POLICY="ACCEPT"

Далее:

nano /etc/ufw/before.rules

В этот файл, сразу, после первых комментариев добавляем:

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.6.0/24 -o eth0 -j MASQUERADE
COMMIT

Далее для применения нового правила можно выполнить:

ufw disable && ufw enable

Настройка PPTP сервера в Ubuntu Server 16.04 закончена, можно пробовать подключиться. В качестве протокола проверки подлинности обязательно нужно указывать mschapv2 и обязательно нужно включать шифрование, иначе сервер не разрешит подключение.

По умолчанию логи пишутся в /var/log/syslog, там вы можете увидеть что происходит при подключении клиентов.

Если по каким-то причинам вам нужно будет разорвать все ppp соединения, то сделать это можно командой:

killall ppp

Замечание: если вы планируете поднимать сервер на VPS, то есть вероятность, что он не заработает, в случае, если хостер использует openvz или ему подобные системы виртуализации. Там, как показала практика, очень часто, в ядре отключена поддержка PPP. Если это так (а если это так, то в логах, при попытке подключения будут выскакивать ошибки, типа - устройство /dev/ppp не найдено или нет доступа к /dev/ppp и т.п.), то нужно уточнить у хостера, включены ли модули ppp в ядре виртуальной машины. Если они не включены и хостер не хочет их включать, то проще сменить хостера чем воевать с этой бедой.

Быстро проверить используется openvz или нет, можно так:

cat /proc/user_beancounters

Если этот файл существует, то виртуальная машина - openvz или virtuozo, и вы попадаете в группу риска =)

0 0

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<


Комментарии

Спасибо за туториал.
Есть один недочет. Если в chap-secrets не задать IP адрес для клиента то соединение не устанавливается. Надо вместо IP ставить *.
Т.е
test pptpd testtest *

0 0

Отличный мануал! Вот только не могу подключиться к ubuntu-серверу с windows-клиента. Выдаёт ошибку. Игрался с mtu/mru - не помогло(

0 0

Странно, вообще с этим конфигом винда без проблем должна цепляться, по крайней мере у меня точно цепляется. Проверьте фаерволл/проброс портов и т.д. Еще в момент подключения посмотрите что пишется в /var/log/syslog

0 0

Добрый вечер, я сделал все до "Дальше сделаем, что бы пользователи могли ходить в интернет через наш сервер:" т.к у меня в этом нет необходимости, все подключается, работает. Но пропадает интернет, соединение при этом не рвется. как это можно исправить? P.S. и пока не добавил в антивирус разрешение на порт 1723, подключение pptp выдавало ошибку 619

0 0

Здравствуйте. Если подключаетесь из винды, то в свойствах подключения, во вкладке сеть, в свойствах сети, в дополнительных параметрах нужно убрать галку использовать основной шлюз в удаленной сети.

0 0

А почему порт проброшен? gre - это же протокол, и должен быть проброшен/разрешен именно он. Вообще ошибка говорит именно о косяке с gre (в большинстве случаев)

0 0

я только начинаю познавать дзен линукса))) у меня связка микротик-->openmediavault, в микротике не нашел как пробросить протокол gre, поэтому попробовал пробросить 47 порт.микротик-->firewall-->service ports-->pptp активна. но ошибка все равно есть, она как бы не мешает, но глаз мозолит))

0 0

А, клиентам удается подключиться, просто в логах промелькивает это сообщение? Думаю можно забить на него, если не сильно лог загаживает =)

А почему решили не на микротике поднимать vpn сервер, а внутри сети? (Просто интересно, не более =) )

0 0

Клиенты подключаются, Микротик не стал трогать дабы не прерывать работу предприятия, а то мало ли где накосячу, а комп если и поломается что либо мне не так страшно, это не критично)) Ну а в будущем мучить микротик.

0 0

Здравствуйте. Клиенты к серверу подключаются, в интернет выходят, а вот друг-друга не видят...Как это исправить?

0 0

На клиентах нужно прописывать маршрут до сети, которая клиентам назначется, либо в свойствах подключения ставить галку - что бы удаленный шлюз использовался как основной.

0 0

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