Как пустить в интернет VPN клиентов на Debian сервере

Опубликовано: 9 марта 2020   ( с изм. от 29 апреля 2020 )
Раздел(ы): GNU Linux - CentOS / Debian
Просмотры: 207
Комментарии: 0

Недавно я написал инструкцию как настроить самый простой 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 клиентов на Debian сервере

Тестирование и выводы

После того, как вы сделали все настройки и запустили VPN сервер, обязательно проверьте скорость его работы (вернее скорость вашего доступа в интернет через VPN соединение), например, с помощью Speedcheck.

В большинстве случаев скорость через VPN будет меньше чем напрямую.

Однако использование внешнего сервера позволит вам получить доступ к ресурсам, которые ранее вам были недоступны. Я писал ранее, как мне было необходимо зайти на один американский сайт — https://moonback.ru/page/squid.

Важно! Не всегда недоступный ресурс «плохой». Например официальный сайт популярного архиватора 7-zip (https://www.7-zip.org/) в России работает только при использовании VPN, PROXY и т.п. Поэтому использование VPN сервера иногда жизненно необходимо, и в этой статье я подробно рассказал как разрешить VPN клиентам вывод в интернет через такой сервер.

Благодарности

При написании статьи были использованы следующие источники:

  1. https://debian.pro/249
  2. https://www.linux.org.ru/forum/admin/6435264

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

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

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

2020 © Технический блог
uptime узнать
Домен : reg.ru
Хостинг : adman.com
SQL - 33 | 0,102 сек. | 8.21 МБ