VPN сервер на Ubuntu Server 18.04 и Mikrotik в виде клиента по протоколу PPTP
Идея написания данной статьи пришла в голову давно, т.к. дома у меня провайдер, который выдаёт серую динамику без постоянного внешнего IP. Хотя вроде, как и выдаётся, но не статика, а динамика. Казалось бы, 21 век, а альтернатив сменить провайдера нет. Поэтому было принято решение сделать VPN на VPS сервере с постоянным внешнем IP. Что дома что на даче стоят микротики. Дома проводной провайдер на даче стоит LTE свисток от теле2. Для примера будем пробрасывать трафик и порты на дачу под видео наблюдение до регистратора. Таким же образом можно и домой для сайтов и т.д. пробрасывать
Выбор пал на REG.RU т.к. я уже более 10 лет пользуюсь их ними сервисами. Было перепробовано много вариантов с технологиями OpenVZ и Xen, но попытки не увенчались успехом. Поэтому единственный рабочий вариант оказался на KVM (Облачные серверы)
Берем самый дешевый тариф Cloud-1 и выбираем Ubuntu Server 18.04, обзываем его как ни будь, я назвал ppptp
После создания сервера, открываем putty, вводим ip и сохраняем данные.
Авторизуемся на сервере и сразу же обновляем его введя следующую команду
apt upgrade -y
apt update
-y в конце говорит о том что мы соглашаемся со всеми запросами
Далее устанавливаем два пакета
apt install ppp pptpd –y
После установки пакетов, нам нужно отредактировать несколько файлов конфигурации.
1 - это внести свою подсеть для VPN используя серые подсети
2 – внести незначительные настройки в pptpd
3 – включить параметр ipv4.ip_forward
4 – создать пользователя и пароль для подключения в VPN
5 – самое главное, при подключении нужного нам пользователя создавались правила для маршрутизации сетей
Редактируем подсети
Открываем pptpd.conf на редактирование командой
Nano /etc/pptpd.conf
Двигаемся в самый низ документа и или изменяем строки, или сразу же добавляем эти
localip 172.16.1.1
remoteip 172.16.1.10-254
Сохраняем файл Ctrl+O и выходим Ctrl+X
Настройка pptpd
Открываем файл pptpd-options командой
Nano /etc/ppp/pptpd-options
В самый низ файла дописываем следующие параметры
mtu 1450
mru 1450
auth
require-mppe
Сохраняем файл Ctrl+O и выходим Ctrl+X
Если соединение будет не стабильным, то параметры mtu и mru можно поменять на 1400
Включение форвардинга
Теперь нам нужно раз комментировать строку для включения форвардинга для ip_v4. Для этого открываем файл
Nano /etc/sysctl.conf
Нажимаем ctrl+W для поиска и вводим строку net.ipv4.ip_forward и нажимаем enter
Поиск нашёл нужную нам строку и осталось только убрать знак # что бы получилось как на скриншоте ниже
Сохраняем файл Ctrl+O и выходим Ctrl+X
Теперь нужно установить улититу net-tools
apt install net-tools
Так же для автозапуска pptpd надо выполнить
systemctl enable pptpd
Создаём пользователя и пароль для VPN подключения
Теперь нам нужно создать пользователя, пароль и присвоить ему IP адрес
Открываем файл chap-secrets
nano /etc/ppp/chap-secrets
В файле показан пример добавления данных. В скриншоте я сделал подписи кто за что отвечает. Добавим следующую строку
dacha pptpd abrakadabra "172.16.1.10"
Сохраняем файл Ctrl+O и выходим Ctrl+X
Myuser – логин для авторизации
Pptpd- служба для которой будет работать логин
abrakadabra – пароль
172.16.0.10 – ip адрес выданный нашему клиенту (Mikrotik)
Привила для маршрутизации сетей
И так, для того что бы у нас при поднятии интерфейса ppp0 (это первый кто подключится к серверу) автоматически создавалась маршрутизация и создавались нужные нам редиректы, нужно в файле ip-up в самом конце файла добавить следующие правила. Я добавляю правила для дачи на просмотр видео наблюдения. Поэтому на даче подсеть у меня 87.0/24
nano /etc/ppp/ip-up
up ip ro add 172.16.0.0/24 via 172.16.0.10
route add -net 192.168.87.0/24 gw 172.16.0.10
# port 80
iptables -t nat -A PREROUTING --dst 178.21.8.175 -p tcp --dport 80 -j DNAT --to-destination 192.168.87.254
iptables -t nat -A POSTROUTING --dst 192.168.87.254 -p tcp --dport 80 -j SNAT --to-source 172.16.0.1
iptables -t nat -A OUTPUT --dst 178.21.8.175 -p tcp --d port 80 -j DNAT --to-destination 192.168.87.254
iptables -I FORWARD 1 -i ppp0 -o ens6 -d 192.168.87.254 -p tcp -m tcp --dport 80 -j ACCEPT
# port 5050 l
iptables -t nat -A PREROUTING --dst 178.21.8.175 -p tcp --dport 5050 -j DNAT --to-destination 192.168.87.254
iptables -t nat -A POSTROUTING --dst 192.168.87.254 -p tcp --dport 5050 -j SNAT --to-source 172.16.0.1
iptables -t nat -A OUTPUT --dst 178.21.8.175 -p tcp --d port 5050 -j DNAT --to-destination 192.168.87.254
iptables -I FORWARD 1 -i ppp0 -o ens6 -d 192.168.87.254 -p tcp -m tcp --dport 5050 -j ACCEPT
# port 6050
iptables -t nat -A PREROUTING --dst 178.21.8.175 -p tcp --dport 6050 -j DNAT --to-destination 192.168.87.254
iptables -t nat -A POSTROUTING --dst 192.168.87.254 -p tcp --dport 6050 -j SNAT --to-source 172.16.0.1
iptables -t nat -A OUTPUT --dst 178.21.8.175 -p tcp --d port 6050 -j DNAT --to-destination 192.168.87.254
iptables -I FORWARD 1 -i ppp0 -o ens6 -d 192.168.87.254 -p tcp -m tcp --dport 6050 -j ACCEPT
# port 7050
iptables -t nat -A PREROUTING --dst 178.21.8.175 -p tcp --dport 7050 -j DNAT --to-destination 192.168.87.254
iptables -t nat -A POSTROUTING --dst 192.168.87.254 -p tcp --dport 7050 -j SNAT --to-source 172.16.0.1
iptables -t nat -A OUTPUT --dst 178.21.8.175 -p tcp --d port 7050 -j DNAT --to-destination 192.168.87.254
iptables -I FORWARD 1 -i ppp0 -o ens6 -d 192.168.87.254 -p tcp -m tcp --dport 7050 -j ACCEPT
Сохраняем файл Ctrl+O и выходим Ctrl+X и перезагружаем сервер
reboot
На этом настройка VPN сервер на Ubuntu Server 18.04 закончена. Теперь перейдём к настройке клиента Mikrotik
Настройка Mikrotik в виде клиента PPTP
Открываем winbox. он выглядит вот так
Переходим в раздел PPP с левой стороны. Во вкладке Interface нажимаем на плюс "+" и выбираем PPTP Client
В окне New Interface на вкладке General в поле Name - вписываем название нашего соединения что бы не путаться если их будет много
Переходим на вкладку Dial Out в поля:
Connect To, User, Password - вводим наши данные которые вводили на сервере
Теперь нам нужно настроить маршрутизацию между сетями. Что бы микротик понимал куда посылать трафик. Для этого переходим в меню IP -> Routes
Во вкладке Routes нажимаем на знак плюс "+" и во вкладке General добавляем данные в поля
Dst. Address = 172.16.1.0/24 - Говорим что адреса доставки у нас 24 подсеть в сети 172.16.1.0 (кол-во хостов 1-255 маска 255.255.255.0 если кому так более понятно)
Gateway = 172.16.1.1 - Шлюз это наш сервер на ubuntu
Pref. Source = 172.16.1.10 - Источник предпочтений, указываем свой IP в этой сети.
Жмакаем Ок и проверяем.
Заходим на видео регистратор или по http порту как в видео или можно настроить приложение как на компьютере или на телефоне. И всё работает