Привет, сегодня я покажу как можно сделать, пожалуй, самый простой вариант 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/network/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, и вы попадаете в группу риска =)
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Если вам помогла статья, вы можете >>отблагодарить автора<<
Комментарии
Спасибо за туториал.
Есть один недочет. Если в chap-secrets не задать IP адрес для клиента то соединение не устанавливается. Надо вместо IP ставить *.
Т.е
test pptpd testtest *
Точно, спасибо что написали об ошибке =) попроавил
Отличный мануал! Вот только не могу подключиться к ubuntu-серверу с windows-клиента. Выдаёт ошибку. Игрался с mtu/mru - не помогло(
Странно, вообще с этим конфигом винда без проблем должна цепляться, по крайней мере у меня точно цепляется. Проверьте фаерволл/проброс портов и т.д. Еще в момент подключения посмотрите что пишется в /var/log/syslog
Здравствуйте. Клиенты к серверу подключаются, в интернет выходят, а вот друг-друга не видят...Как это исправить?
На клиентах нужно прописывать маршрут до сети, которая клиентам назначется, либо в свойствах подключения ставить галку - что бы удаленный шлюз использовался как основной.
12
iptables-save >
/etc/iptables
.up.rules
nano
/etc/networks/interfaces
Опечатка /etc/network/interfacesСпасибо, поправил
Спасибо за видео со статьёй, очень помогло!Вот только есть проблемка, очень низкая скорость междц домом и офисом, ну или мобильной связью, без разницы. На обоих концах точек имеется скоростной интернет под сотку, а вот по VPN скорость около 8Мбит/с. Что можно сделать, что бы поднять скорость ?
P.S. Находятся компы в одном городе.
Кстати, нашёл ошибку орфографическую. Вместо "mtu" написано "mru".
Это не ошибка.По поводу скорости - возможно, как раз помогут игры с mtu/mru