Настраиваем VPN сервер с пробросом портов.

Здравствуйте уважаемые подписчики и посетители моего канала! Опубликовать эту статью меня натолкнула идея при настройке определенного сервиса. Эта статья полезна тем, кто хочет персональный VPN сервер за символическую плату! Но мне этот сервис потребовался немного по другим причинам! Для одного из моих заказчиков потребовалось “поднять” тестировочный web сервер с сайтом! Т.к. это хороший знакомый, то нужно было минимизировать затраты! Машинных ресурсов (т.е. физических серверов) у меня с избытком, но в связи с переездом, оптический канал связи я себе еще не провел, поэтому использую интернет от сотового провайдера. В принципе скорость не плохая и для моих нужд хватает! Но к сожалению, чтобы скачать что-то с торрентов требуется “танец с бубном”! Единственный плюс – трафик не ограничен!

За 20 лет работы я пользовался услугами многих хостинг-провайдеров: Российских и зарубежных, топовых и начинающих. В итоге я остановился на одном, который меня устраивает на 110%! Это хостинг-провайдер FirstByte (нет – это не реклама! Это совет для тех, кто хочет получить качественные услуги хостинг-провайдера за разумные деньги!).

Немного отвлекусь от основной темы и расскажу, почему я выбрал именно этого хостинг-провайдера! Раньше я пользовался услугами многих сервисов: reg.ru, jino.ru, sweb.ru, 2domains.ru и т.д. Перечислять этот список можно долго! Почему я отказался от всех и сделал выбор в пользу этого хостинг-провайдера! Все очень просто: у кого-то регистрация домена копеечная, но продление “космическое”, у кого-то управление зонами платное, у кого-то служба поддержки отвечает в течении пары дней, кто-то идет на хитрости и включает автоматически (без уведомления клиента) какие-то доп. услуги которые списывают со счета денежные средства и т.д.! В общем претензий по качеству работы много! Пока Вы сами не поработаете пару лет с хостинг-провайдером, Вы не узнаете нюансов. Теперь о сервисе с которым работаю я, а точнее на который стараюсь завязать все свои домены!

С этим хостинг-провайдером я работаю примерно 5-7 лет! В основном пользовался услугами VPS серверов, которые мне нужны были для тестирования! За это время у меня не возникло вопросов или претензий к этой компании!

Начну с минусов! Их не так много! Точнее для меня их НЕТ! Единственное, что меня немного напрягало – это панель управления в личном кабинете! Но это дело привычки! Но новая панель – мне совсем не понравилась: слишком много нужно кликать! В старой панели все на виду!

Теперь про плюсы! Их довольно много!

  • Т.к. я в основном пользуюсь VPS серверами меня очень порадовал большой выбор конфигураций и тарифов! Как говориться для любого запроса! Вы можете “собрать” собственную конфигурацию для Ваших задач! Цены тоже радуют! Дешевле не найдете – это проверено!
  • Следующий ПЛЮС – это оперативный ответ службы поддержки! В поддержке сидят грамотные товарищи которые не просто отпишутся, а постараются реально Вам помочь с возникшей проблемой! Кстати отвечает служба поддержки в течении пары минут! Я считаю это ОГРОМНЫМ плюсом!
  • Прикольная “плюшка” от этой компании: Вы БЕСПЛАТНО получаете DNS-хостинг на 100 доменов при заказе любой из услуг! Раньше я не пользовался этой услугой, но когда подключил понял, что это очень удобно! Кстати, такой услуги нет у других хостинг-провайдеров! Кстати, при добавлении и изменении записей в DNS, обновление этих записей проходит довольно быстро: не нужно ждать 2-3 часа на обновление записей! У другого хостинг-провайдера при добавлении домена 3-го уровня и прописывании А-записи приходилось ждать несколько часов, прежде чем А-запись будет активна!
  • Еще один “бонус” который я получил – это FTP хранилище на 25Gb за 1 рубль в месяц! Только вдумайтесь: Вы можете получить 25Gb места за 12 рублей в год!!! Хоть я и не пользуюсь FTP, но это классное предложение! Думаю, что в ближайшее время воспользуюсь!

Я рассказал про сервисы которыми пользуюсь сам, но у этой компании есть еще и другие услуги: web-хостинг, резервное хранилище, аренда выделенного сервера и много чего еще! Думаю, что и в остальных сервисах компания FirstByte не подведет! Это одно из лучших предложений на рынке!

Если Вам интересно: https://firstbyte.ru

Итак, возвращаемся к нашим “баранам”, а точнее к теме статьи!

Имеем:

– web сервер с сайтом (как поднять web-сервер расскажу в следующих статьях)

Нужно:

– статический ip адрес, а точнее VPN сервер со статическим ip адресом и “пробросом” портов в сеть с web-сервером!

Финансы:

– почти НОЛЬ!

Заказываем у хостинг-провайдера VPS-сервер. Самое главное, чтобы тариф поддерживал соединения TUN/TAP. Для перестраховки проконсультировался с технической поддержкой! Я заказал не дорогой сервер. Тариф MSK-KVM-SSD-1. Стоимость 99 рублей/месяц! Для моего VPN вполне хватит!

Переходим к настройкам.

Нам нужно настроить не только удаленный сервер, но и подключение нашего web сервера с сайтом в качестве клиента. Я не стал заморачиваться и настроил подключение по pptp протоколу. Многие скажут, что не самый защищенный протокол и т.д. Но повторюсь: мне нужно быстро запустить тестовый сервер с доступом из вне!

Начнем с VPS сервера, т.е. сервера, который арендовали у хостинг-провайдера!

В интернете довольно много статей про настройку VPN серверов по протоколу pptp, но большинство из них это скопированные из альтернативных источников! К сожалению, многие из них не работают или при подключении выдают ошибки. Я приведу примеры рабочих конфигураций серверов с пошаговой настройкой!

На сервере VDS, который будет использоваться, как VPN сервер установлена ОС Debian 10 x64. Для удобства можно установить программу MC!

apt install mc -y

Следующим шагом установим службу PPTPD

apt install pptpd -y

Для настройки полноценной работы сервера нам нужно отредактировать несколько файлов:

/etc/pptpd.conf

/etc/ppp/chap-secrets

/etc/ppp/pptpd-options

Начнем с файла pptpd-options

Мы не будем править оригинальный файл. Для начала сделаем его копию командой

cp /etc/ppp/pptpd-options /etc/ppp/pptpd-options-original

Теперь можно открыть файл

nano /etc/ppp/pptpd-options

и привести его вот к такому виду:

name pptpd

refuse-pap

refuse-chap

refuse-mschap

require-mschap-v2

require-mppe-128

proxyarp

nodefaultroute

lock

nobsdcomp

novj

novjccomp

nologfd

Не буду описывать что значит каждая из настроек. Этой информации хватает в интернете!

Следующий для редактирования файл pptpd.conf

Аналогично сделаем копию оригинала

cp /etc/pptpd.conf /etc/pptpd_original.conf

приводим файл к следующему виду:

option /etc/ppp/pptpd-options

logwtmp

bcrelay eth1:1

localip 192.168.11.1

remoteip 192.168.11.30-50

Здесь я сделаю некоторые пояснения!

Для того, чтобы клиенты подключались к нашему VPN серверу, нужны сетевые адреса отличающиеся от локальной сети клиентов. В моем случае, локальная сеть web сервера 192.168.77.XXX. Соответственно локальная сеть VPN сервера должна отличаться. Я сделал ее подсетью 11. Второй важный момент: нам нужен виртуальный сетевой интерфейс. Физический сетевой интерфейс на моем VPN сервере называется eth0. Значит наш виртуальный сетевой интерфейс будет называться eth1:1.

Для этого правим файл сетевых настроек:

nano /etc/network/interfaces

В самом низу добавляем строчки:

auto eth1:1

iface eth1:1 inet static

address 192.168.11.1

netmask 255.255.255.0

Далее редактируем файл chap-secrets

nano /etc/ppp/chap-secrets

Добавляем в него наших пользователей. Ниже пишем строчки

user-01 pptpd passw 192.168.11.41

user-02 pptpd passw 192.168.11.42

user-03 pptpd passw 192.168.11.43

user-04 pptpd passw 192.168.11.44

Естественно вместо user-01, 02,03,04 и passw вписываем свои данные пользователя и пароли!

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

Добавляем автозапуск сервиса

systemctl enable pptpd

Разрешаем пересылку пакетов между сетевыми интерфейсами. Для этого редактируем файл sysctl.conf

nano /etc/sysctl.conf

В файле раскомментируйте строчку:

net.ipv4.ip_forward=1

Сохраняем файл и перезагружаем сервер.

После перезагрузки проверяем работу службы командой:

service pptpd status

Сервис pptp успешно запущен.

Следующим шагом нужно добавить правила в iptables.

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

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Обратите внимание, что eth0 – это физический интерфейс VPN сервера.

Следующим шагом добавляем правила для проброса портов из внешней сети на наш web сервер. Мне требовалось два порта: 80 и 443

Для проброса 80 порта

iptables -t nat -A PREROUTING –dst XXX.XXX.XXX.XXX -p tcp –dport 80 -j DNAT –to-destination 192.168.11.44

iptables -t nat -A POSTROUTING –dst 192.168.11.44 -p tcp –dport 80 -j SNAT –to-source 192.168.11.1

iptables -t nat -A OUTPUT –dst XXX.XXX.XXX.XXX -p tcp –dport 80 -j DNAT –to-destination 192.168.11.44

iptables -I FORWARD 1 -i eth0 -o ppp0 -d 192.168.11.44 -p tcp -m tcp –dport 80 -j ACCEPT

Для проброса 443 порта

iptables -t nat -A PREROUTING –dst XXX.XXX.XXX.XXX -p tcp –dport 443 -j DNAT –to-destination 192.168.11.44

iptables -t nat -A POSTROUTING –dst 192.168.11.44 -p tcp –dport 443 -j SNAT –to-source 192.168.11.1

iptables -t nat -A OUTPUT –dst XXX.XXX.XXX.XXX -p tcp –dport 443 -j DNAT –to-destination 192.168.11.44

iptables -I FORWARD 1 -i eth0 -o ppp0 -d 192.168.11.444 -p tcp -m tcp –dport 443 -j ACCEPT

XXX.XXX.XXX.XXX – это внешний ip адрес VPN сервера

192.168.11.44 – это адрес, который присваивает VPN сервер подключенному web серверу (клиент)

192.168.11.1 – это адрес виртуального сетевого интерфейса VPN сервера.

Подробнее про настройку iptables Вы можете почитать в интернете! Наша задача быстро запустить нужную нам службу.

С настройкой VPN сервера мы закончили. Переходим к настройке VPN клиента т.е. моего web сервера.

Первым делом устанавливаем PPTP-клиента командой

apt install pptp-linux ppp -y

Создаем файл /etc/ppp/peers/vpn0

nano /etc/ppp/peers/vpn0

Приводим файл к следующему содержанию:

pty “pptp XXX.XXX.XXX.XXX –nolaunchpppd”

name YYY

file /etc/ppp/options.pptp

remotename PPTP

require-mppe-128

defaultroute

replacedefaultroute

persist

unit 11

maxfail 0

holdoff 15

ipparam vpn0

где

XXX.XXX.XXX.XXX – это внешний адрес Вашего VPN сервера

YYY – это Ваш логин на VPN сервере

Далее редактируем файл /etc/ppp/chap-secrets

nano /etc/ppp/chap-secrets

и добавляем строку:

ваш_логин PPTP ваш_пароль

Запускаем соединение командой:

pon vpn0

Если же соединения не происходит, то можно попытаться выполнить команду:

pon vpn0 debug dump logfd 2 nodetach

В терминале Вы увидите почему соединение не подключается.

Чтобы автоматически поднимать соединение при запуске системы отредактируем файл /etc/network/interfaces

nano /etc/network/interfaces

добавим в конец строки:

auto tunnel

iface tunnel inet ppp

provider vpn0

Если Вы все сделали правильно у Вас должно все заработать!

Вы можете проверить соединение на VPN сервере введя в терминале команду

ip addr

Вы должны увидеть примерно вот такую картину.

Успешное подключение клиентов к VPN серверу

Как Вы видите у меня 2 соединения от разных клиентов. Первое соединение – это мой web сервер, который подключен к VPN постоянно, второе соединение – это мой рабочий ПК.

VPN клиент можно сделать и на маршрутизаторе, но мне удобнее, чтобы основная часть оборудования подключалась напрямую, через 4G модем, а часть через VPN сервер. Иногда я подключаю свой рабочий ПК через VPN для скачивания торрентов т.к. сотовый провайдер блокирует соединения торрентов.

В итоге за 99 рублей в месяц мы получили: полноценный VPN сервер со статическим ip адресом.

Спасибо за то, что дочитали!

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *