Как пустить в интернет VPN клиентов на Debian сервере
Раздел(ы): GNU Linux - CentOS / Debian
Просмотры: 3989
Комментарии: 1
Недавно я написал инструкцию как настроить самый простой VPN сервер PPTP на сервере с Debian — https://moonback.ru/page/debian-pptp-server-setup. В этой статье расскажу как пустить пользователей из VPN туннеля в интернет.
Статья справедлива для всех случаев когда у Debian сервера есть белый IP адрес смотрящий в интернет и серый IP к которому подключены другие компьютеры. Это может быть как локальная сеть, так и VPN туннель.
Данная инструкция написана для Debian 9 и была опробирована на виртуальном сервере от Adman.COM
Пересылка пакетов между сетевыми интерфейсами
Первым делом настроим систему так, чтобы она «умела» работать шлюзом. Для этого в файле /etc/sysctl.conf найдите и раскоментируйте строку (уберите знак # в начале строки):
net.ipv4.ip_forward=1
Возможно, что в вашей системе этот параметр уже присутствует, но со значением 0 (ноль). В таком случае исправьте его на 1 (единицу).
Чтобы необходимое нам значение заработало нужно применить новую конфигурацию, для этого выполните в консоли сервера следующую команду:
# sysctl -p
О параметре net.ipv4.ip_forward
Если этот параметр выключен (закоментирован или значение равно 0), то компьютер (операционная система) считает себя узлом IP сети и дропает (DROP) все пакеты, предназначенные не ему (т.е. отбрасывает пакеты адрес получателя которых отличен от IP-адресов, назначенных на интерфейс, на котором получен пакет).
Если параметр включен, то ОС считает себя маршрутизатором и действует в соответствии с RFC1812, в том числе пытается переслать адресованные не ей пакеты в соответствии с таблицей маршрутизации.
Перенаправление трафика
Теперь самое время сказать серверу куда направлять трафик, который прилетает на наш сервер, как на шлюз (вместо ens32 укажите тот интерфейс, которым ваш сервер смотрит в интернет). Для этого выполните следующую команду в консоли сервера:
# iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE
Эта команда будет работать до перезагрузки сервера.
А для того, чтобы все работало и после старта операционной системы необходимо в файл /etc/rc.local добавить следующую строку перед строкой в конце файла exit 0.
iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE
У меня на сервере файл /etc/rc.local после внесенных изменений выглядит так:
#!/bin/sh for f in /sys/block/sd?/device/timeout; do echo 86400 >"$f" done iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE exit 0
Для чего нужен файл rc.local в Debian
Файл rc.local в Debian используется для того чтобы добавлять собственные скрипты, которые будут выполняться после старта системы.
Как узнать имя сетевого интерфейса в Debian
Один из способов это посмотреть настройки в файле /etc/network/interfaces. Либо выполните следующую команду в консоли:
# ip link show
Тестирование и выводы
После того, как вы сделали все настройки и запустили VPN сервер, обязательно проверьте скорость его работы (вернее скорость вашего доступа в интернет через VPN соединение), например, с помощью Speedcheck.
В большинстве случаев скорость через VPN будет меньше чем напрямую.
Однако использование внешнего сервера позволит вам получить доступ к ресурсам, которые ранее вам были недоступны. Я писал ранее, как мне было необходимо зайти на один американский сайт — https://moonback.ru/page/squid.
Важно! Не всегда недоступный ресурс «плохой». Например официальный сайт популярного архиватора 7-zip (https://www.7-zip.org/) в России работает только при использовании VPN, PROXY и т.п. Поэтому использование VPN сервера иногда жизненно необходимо, и в этой статье я подробно рассказал как разрешить VPN клиентам вывод в интернет через такой сервер.
Благодарности
При написании статьи были использованы следующие источники:
Вопросик по теме. Все выполнил и вроде даже оно работает. А сертификаты какие-то есть для подключения? По какому принципу организуется подлкючение?