Настраиваем VPN сервер с пробросом портов.
- v.goldman · Опубликовано · Обновлено
Здравствуйте уважаемые подписчики и посетители моего канала! Опубликовать эту статью меня натолкнула идея при настройке определенного сервиса. Эта статья полезна тем, кто хочет персональный 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
Следующим шагом нужно добавить правила в 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
Вы должны увидеть примерно вот такую картину.
Как Вы видите у меня 2 соединения от разных клиентов. Первое соединение – это мой web сервер, который подключен к VPN постоянно, второе соединение – это мой рабочий ПК.
VPN клиент можно сделать и на маршрутизаторе, но мне удобнее, чтобы основная часть оборудования подключалась напрямую, через 4G модем, а часть через VPN сервер. Иногда я подключаю свой рабочий ПК через VPN для скачивания торрентов т.к. сотовый провайдер блокирует соединения торрентов.
В итоге за 99 рублей в месяц мы получили: полноценный VPN сервер со статическим ip адресом.
Спасибо за то, что дочитали!