Vpn из linux к windows

Установка и настройка L2TP VPN-сервера на Ubuntu Server

Обновлено Обновлено:
Опубликовано Опубликовано:

L2TP сервер удобен тем, что позволяет использовать встроенные средства Windows для подключения. В данной инструкции рассмотрим процесс его установки и настройки на Ubuntu 16.04 и 18.04. В итоге мы получим:

  • VPN-сервер, использующий туннельный протокол L2TP.
  • Защита соединения посредством общего ключа + аутентификация пользователя.
  • Доступ к локальной сети.

Мы выполним следующие настройки:

IPSEC
L2TP
PPP
Клиента
Доступ в Интернет и локальную сеть
Диагностика неисправности

Настройка IPSEC

Для управления IPSec используется пакет strongswan — установим его командой:

apt-get install strongswan

Открываем конфигурационный файл для настройки ipsec:

vi /etc/ipsec.conf

Для config setup добавим:

config setup
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
        protostack=netkey

* где virtual_private для нас является наиболее важным параметром и определяет приватные сети. В данном примере просто перечислены сети, зарезервированные под локальные — мы можем указать и другие.

… а также вставляем ниже:

conn l2tpvpn
        type=transport
        authby=secret
        pfs=no
        rekey=no
        keyingtries=2
        left=%any
        leftprotoport=udp/l2tp
        leftid=@l2tpvpnserver
        right=%any
        rightprotoport=udp/%any
        auto=add

* где:

  • type — тип соединения. Возможны варианты tunnel (хост-хост, хост-подсеть или подсеть-подсеть); transport (хост-хост); passthrough (без обработки IPsec).
  • authby — способы аутентификации двух узлов. Возможны варианты secret (по паролю) или rsasig (цифровые подписи RSA).
  • pfs — расшифровывается как Perfect Forward Secrecy. Позволяет активировать совершенную секретность в канале ключей соединения.
  • rekey — перепроверить соединение, когда оно истекает.
  • keyingtries — число попыток, чтобы «договориться» о соединении или его замене.
  • left — IP-адрес левого участника (сервера). %any означает, что адрес может быть любой.
  • leftprotoport — определяет протокол и порт, на котором будет работать левая сторона (сервер). В данном примере указан UDP и порт 1701.
  • leftid — идентификация левого участника соединения.
  • right — IP-адрес правого участника (клиента). %any означает, что адрес может быть любой.
  • rightprotoport — определяет протокол и порт, на котором будет работать правая сторона (клиент). В данном примере указан UDP и любой порт.
  • auto — операция, которая должна запуститься автоматически при старте IPsec.

Создаем секретный ключ — для этого открываем на редактирование файл:

vi /etc/ipsec.secrets

… и добавляем:

%any %any : PSK «my_key_password»

* в данном примере мы устанавливаем общий пароль my_key_password для соединений с любого IP.

Разрешаем автозапуск strongswan и перезапускаем службу:

systemctl enable strongswan

systemctl restart strongswan

Устанавливаем сервер L2TP:

apt-get install xl2tpd

Открываем файл настройки сервера:

vi /etc/xl2tpd/xl2tpd.conf

Добавляем:

[global]
port = 1701
access control = no
ipsec saref = yes
force userspace = yes
auth file = /etc/ppp/chap-secrets

[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1
name = l2tpserver
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
exclusive = no
hidden bit = no
length bit = yes
require authentication = yes
require chap = yes
refuse pap = yes

где:

  • port — порт UDP, на котором работает VPN. По умолчанию, 1701.
  • access control — принимать или нет запросы только от клиентов с определенными IP, перечисленными в настройках клиентов.
  • ipsec saref — указывает использовать или нет ipsec Security Association, позволяющий отслеживать несколько клиентов с одинаковыми IP-адресами.
  • force userspace — повышает производительность за счет декапсуляции пакетов L2TP.
  • auth file — путь к файлу аутентификации.
  • ip range — диапазон адресов, которые назначаются подключенным клиентам.
  • local ip — IP-адрес сервера в сети VPN.
  • name — имя сервера для процесса согласования.
  • pppoptfile — путь к файлу с настройкой pppd.
  • flow bit — позволяет добавлять в пакеты порядковые номера.
  • exclusive — если поставить в yes, сервер разрешит только одно соединение с клиентом.
  • hidden bit — скрывать или нет AVP.
  • length bit — использовать ли бит длины, указывающий полезную нагрузку.
  • require authentication — требовать ли аутентификацию.
  • require chap — требовать ли аутентификацию PPP по протоколу CHAP.
  • refuse pap — требовать ли аутентификацию PPP по протоколу PAP.

Разрешаем автозапуск vpn-сервера и перезапускаем его:

systemctl enable xl2tpd

systemctl restart xl2tpd

PPP

Открываем на редактирование конфигурационный файл:

vi /etc/ppp/options.xl2tpd

Добавляем:

noccp
auth
crtscts
mtu 1410
mru 1410
nodefaultroute
lock
noproxyarp
silent
modem
asyncmap 0
hide-password
require-mschap-v2
ms-dns 77.88.8.8
ms-dns 8.8.8.8

Создаем пользователя. Для этого открываем файл:

vi /etc/ppp/chap-secrets

И добавляем:

«user1» l2tpserver «password1» «172.16.10.10»
«user2» l2tpserver «password2» *

* формат записи — <логин> <имя сервиса> <пароль> <IP клиента (не обязательно)>

Перезапускаем xl2tpd:

systemctl restart xl2tpd

Настройка клиента

В параметрах сети и Интернет в разделе VPN создаем новое соединение: 

Создание нового VPN соединения

Задаем настройки:

Настройка нового VPN соединения

* где:

  • Имя подключения — произвольное имя.
  • Имя или адрес сервера — адрес сервера VPN, к которому мы будем подключаться.
  • Тип VPN — для нашего случая, выбираем L2TP/IPsec с предварительным ключом.
  • Общий ключ — ключ, который мы задали в файле /etc/ipsec.secrets.
  • Тип данных для входа — выбираем пользователь и пароль.
  • Имя пользователя и пароль — логин и пароль, которые мы задали в файле /etc/ppp/chap-secrets.

Доступ в Интернет и локальную сеть

После подключения к сети VPN мы не сможем ни выйти в Интернет, ни подключиться к узлам локальной сети. Чтобы это исправить, открываем на редактирование файл:

vi /etc/sysctl.d/99-sysctl.conf

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

net.ipv4.ip_forward=1

* мы разрешили форвард сетевых запросов и настроили сервер в качестве шлюза.

После применяем настройку:

sysctl -p /etc/sysctl.d/99-sysctl.conf

Добавляем правило в iptables:

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

* данное правило включает маскарадинг на интерфейсе eth0. Вам необходимо подставить в команду значение своего сетевого адаптера.

В случае с единым сетевым интерфейсом больше ничего делать не потребуется — Ubuntu начнет работать как Интернет-шлюз.

В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран:

iptables -A FORWARD -i eth1 -o eth0 -m state —state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

* предполагается, что eth1 используется для внутренней сети, а eth0 — внешней.

Диагностика проблем

Описанная выше настройка не предполагает наличие лога. Для этого открываем конфигурационный файл для ppp:

vi /etc/ppp/options.xl2tpd

Добавим:


logfile /var/log/xl2tpd/xl2tpd.log
debug

Создадим каталог для лога:

mkdir /var/log/xl2tpd

Перезапускаем сервис xl2tpd:

systemctl restart xl2tpd

Пробуем подключиться к серверу — в случае наличия проблем, наблюдаем за логом:

tail -f /var/log/xl2tpd/xl2tpd.log

Время на прочтение
10 мин

Количество просмотров 219K

Прочитал топик habrahabr.ru/blogs/linux/67209 и решил выложить сюда свою статью, которая была до этого видна только в закрытой корпоративной Wiki.

Обычно, при создании VPN, используется подключение типа точка-точка к некоторому серверу, либо установка ethernet-туннеля с некоторым сервером, при котором туннелю назначается определённая подсеть. Сервер VPN при этом выполняет функции маршрутизации и фильтрования трафика для доступа к локальной сети через VPN.

Данная статья рассматривает другой подход к созданию виртуальной сети, при котором удалённые системы включаются в уже существующую локальную подсеть, а сервер VPN выполняет роль Ethernet-шлюза. При использовании такого подхода мы всё ещё имеем возможность фильтровать трафик на основании способа подключения (например, использовать для локальной сети и для удалённых пользователей разные фильтры), но исключается необходимость настройки маршрутизации, а удалённые машины включаются прямо в локальную сеть, видят ресурсы, даже способны использовать широковещательные посылки вообще без дополнительной настройки. Через такой VPN у них отображаются все компьютеры локальной сети Windows, все доступные XDMCP-серверы при XDMCP broadcast и т. д.

Структура сети и настройка сервера

Предположим, что имеется офис с локальной сетью, используется IP-подсеть 192.168.168.0/24. В эту локальную сеть мы включим домашних пользователей, то есть они будут иметь адрес из этой же самой подсети. Необходимо убедиться, что у них «дома» не встречается данная подсеть, и что никакие системы в локальной сети не имеют адресов из диапазона, который мы выделим для удалённых пользователей.

Поддержка моста в ядре

Для работы такой техники нам нужны некоторые ядерные драйвера. Это универсальный драйвер виртуальных сетевых интерфейсов tun, и драйвер ethernet-моста bridge. Можно включить их в ядро, или собрать модулями:

    -> Networking
      -> Networking support (NET [=y])
        -> Networking options
          <*> 802.1d Ethenet Bridging (BRIDGE [=y])
    -> Device Drivers
      -> Network device support (NETDEVICES [=y])
        <*> Universal TUN/TAP device driver support (TUN [=y])

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

Программное обеспечение

Для сервера потребуется OpenVPN и утилиты для обслуживания моста. В Gentoo они собираются следующим образом:

  emerge net-misc/bridge-utils net-misc/openvpn

При использовании >=sys-apps/baselayout-1.12.6 этого достаточно, для более старых версий потребуются специальные утилиты для обслуживания tun/tap-устройств:

  emerge sys-apps/usermode-utilities

Настройка сети

Положим, eth2 — интерфейс, к которому подключена локальная сеть, с назначенным адресом 192.168.168.254. Его настройка выглядела примерно так:

  config_eth2=( "192.168.168.254/24" )

Поскольку он будет участвовать в мосте, ему не нужно назначать адреса. Также, в мосте участвует вновь создаваемый виртуальный интерфейс tap0, которому тоже не назначается никакого адреса. Адрес, который использовался eth2, назначается теперь мосту br0:

  config_eth2=( "null" )
  
  tuntap_tap0="tap"
  config_tap0=( "null" )
  
  depend_br0() {
    need net.tap0 net.eth2
  }
  
  # указываем существующие интерфейсы, объединяя их в мост
  bridge_br0="eth2 tap0"
  # либо, можно динамически подключать туда вновь появляющиеся интерфейсы
  #bridge_add_eth2="br0"
  
  config_br0=( "192.168.168.254/24" )

Также нужно создать настроечные скрипты для указанных интерфейсов:

  cd /etc/init.d
  ln -s net.lo net.eth2
  ln -s net.lo net.tap0
  ln -s net.lo net.br0

Достаточно автоматически загружать только интерфейс br0. depend_br0() автоматически поднимет все остальные необходимые ему для работы:

  rc-update add net.br0 default
  /etc/init.d/net.eth2 stop
  /etc/init.d/net.br0 start

Создание ключей OpenVPN

Мы будем авторизовывать клиентов посредством RSA-ключей OpenSSL. Для упрощения процесса, для нас приготовили несколько init-скриптов:

  cd /usr/share/openvpn/easy-rsa/

Там есть файл vars, в который мы занесём общие значения:

  nano vars

Внизу этого файла мы заполняем наши переменные:

  export KEY_COUNTRY="RU"
  export KEY_PROVINCE="Voronezh oblast"
  export KEY_CITY="Boguchar"
  export KEY_ORG="OrganiZationnAme"
  export KEY_EMAIL="root@oza.ru"

Загружаем переменные из этого файла и строим CA (Certificate Authority):

  source ./vars
  ./clean-all
  ./build-ca
Ключ сервера

Для генерации ключа сервера с именем office, используем следующую команду:

  ./build-key-server office

На вопрос «Common Name» нужно ответить именем сервера (в нашем случае, office). На два вопроса в конце «Sign the certificate? [y/n]» и «1 out of 1 certificate requests certified, commit? [y/n]» отвечаем «y».

При необходимости, можно будет создать дополнительные ключи серверов. Например, это могут быть резервные серверы доступа для повышения надёжности системы. Они создаются той же командой, перед ней нужно выполнить source ./vars.

Параметры Диффи-Хеллмана

Здесь ничего дополнительно делать не придётся, но придётся подождать.

  ./build-dh

Этот файл нужен только на сервере.

Ключи клиентов

Каждому клиенту необходимо выдать свой ключ. Для клиента с именем client ключ создаётся командой

  ./build-key client

На вопрос о «Common Name» отвечаем именем клиента (в данном случае, client). На два вопроса в конце отвечаем согласием.

Сгенерированные ключи и сертификаты передаём клиентам через защищённый канал. При необходимости, можно создавать ещё ключи той же командой. Перед её запуском, необходимо загрузить окружение — выполнить source ./vars.

Настройка и запуск сервиса OpenVPN

Для запуска следует использовать следующую конфигурацию сервера (файл /etc/openvpn/openvpn.conf):

  # Этот порт рекомендован IANA для OpenVPN. Можно перевесить на другой порт, но секретность не повысится - он всё равно первым делом признаётся, что он - OpenPVN.
  port 1194
  
  # OpenVPN может использовать tcp и udp в качестве транспортного протокола, udp - предпочтительнее
  proto udp
  
  # Виртуальный интерфейс, который мы включили в мост, непременно типа tap (через tun нельзя эмулировать Ethernet)
  dev tap0
  
  # Корневой самоподписанный сертификат CA
  ca /etc/openvpn/keys/ca.crt
  
  # Сертификат и секретный ключ сервера. crt должен иметь режимы 644, key - 600
  cert /etc/openvpn/keys/office.crt
  key /etc/openvpn/keys/office.key
  
  # Файл с параметрами Диффи-Хеллмана. Если у вас другая длина ключей, исправьте имя :)
  dh /etc/openvpn/keys/dh1024.pem
  
  # Раздавать удалённым клиентам адреса в этой подсети, из этого диапазона (обратите внимание - подсеть задаётся ВСЯ, как в конфиге сетевухи, а диапазон - часть подсети)
  server-bridge 192.168.168.254 255.255.255.0 192.168.168.128 192.168.168.159
  
  # Разрешить взаимодействие клиентов друг с другом (иначе только с сервером и сегментом сети "за мостом")
  client-to-client
  
  # Это позволит выдать клиенту тот же самый адрес, какой выдавали раньше, если не занят
  ifconfig-pool-persist /etc/openvpn/ipp.txt
  
  # Если вы не хотите через DHCP передавать также и адрес DNS-сервера, можно убрать следующую строку
  push "dhcp-option DNS 192.168.168.254"
  
  # Компрессия
  comp-lzo
  # Максимальное число клиентов - имеет смысл сделать меньше или равно числу адресов в диапазоне server-bridge
  max-clients 32

  # Подробности относительно этих ключей - в документации OpenVPN
  keepalive 10 120

  # Не переинициализировать tun и не перечитывать ключ при переподключениях; если работаем не как root, а как nobody, то нам это и не позволят, поэтому либо все эти опции, либо ни одну из них
  user nobody
  group nobody
  persist-key
  persist-tun

  # Каждую минуту OpenVPN сбрасывает сюда текущее состояние (список клиентов, маршруты и т. д.)
  status /tmp/openvpn-status.log
  
  # Очень шумный лог, нормальная работа - verb 2
  verb 6
  log-append  /var/log/openvpn.log

Ключ office.key должен иметь режим 600 (доступ только владельцу). Файлы office.crt и dh1024.pem имеют режим 644.

Настройка фильтрования

Поскольку мы используем мост, есть несколько особенностей организации фильтрования пакетов. Например, не все проходящие пакеты могут вообще оказаться IPv4. Для настройки работы моста в ядре существует несколько параметров:

Переменные этой группы сохраняются в файлах директории /proc/sys/net/bridge/. Их можно также настраивать в /etc/sysctl.conf, тогда они все получат префикс «net.brigde.»

  • bridge-nf-call-arptables
    Логическая переменная bridge-nf-call-arptables управляет передачей трафика ARP в цепочку FORWARD пакетного фильтра arptables. Установленное по умолчанию значение 1 разрешает передачу пакетов фильтрам, 0 – запрещает.
  • bridge-nf-call-iptables
    Логическая переменная bridge-nf-call-iptables управляет передачей проходящего через мост трафика IPv4 в цепочки iptables. Используемое по умолчанию значение 1 разрешает передачу пакетов для фильтрации, 0 – запрещает.
  • bridge-nf-call-ip6tables
    Действие аналогично предыдущему, только оно настраивает передачу трафика IPv6 для фильтрования в цепочки ip6tables.
  • bridge-nf-filter-vlan-tagged
    Логическая переменная bridge-nf-filter-vlan-tagged определяет возможность передачи трафика IP/ARP с тегами VLAN программам фильтрации пакетов (arptables/iptables). Значение 1 (установлено по умолчанию) разрешает передачу пакетов с тегами VLAN программам фильтрации, 0 – запрещает.

Для фильтрования пакетов, проходящих через мост, используется соответствие physdev, которое различает, с какого и на какой порт моста следует пакет. Включаем его в ядре:

-> Networking
  -> Networking support (NET [=y])
    -> Networking options
      -> Network packet filtering framework (Netfilter) (NETFILTER [=y])
        -> Core Netfilter Configuration
          -> Netfilter Xtables support (required for ip_tables) (NETFILTER_XTABLES [=y])
            -> "physdev" match support (NETFILTER_XT_MATCH_PHYSDEV [=y])

Кроме этого, конфигурация ядра должна разрешать передачу пакетов на фильтрацию iptables, т.е. bridge-nf-call-iptables=1 и bridge-nf-call-ip6tables=1 (если вы используете IPv6).
После можете использовать, например, такие правила для фильтрования:

  iptables -A FORWARD -p tcp --dport 22 -m physdev --physdev-in eth1 --physdev-out eth0 -j ACCEPT

Поподробнее про настройку фильтрации между портами поста можно почитать в статье Building bridges with Linux

Если вы не хотите делать никаких различий между пользователями LAN и пользователями bridged VPN, вы можете просто выключить эти параметры в ядре (они включены по умолчанию):

  echo "net.bridge.bridge-nf-call-iptables = 0" >> /etc/sysctl.conf
  echo "net.bridge.bridge-nf-call-ip6tables = 0" >> /etc/sysctl.conf

Клиенты

На клиенте необходимо создать конфигурационный файл OpenVPN следующего содержания:

  client
  nobind
  dev tap
  proto udp
  # Куда подключаться. Можно указать несколько опций remote - будет использоваться первый доступный сервер. Если для server.example.net имеется несколько A-записей, между ними выбор производится случайно.
  remote server.example.net 1194
  # Никогда не сдаваться, пытаться подключаться бесконечно.
  resolv-retry infinite
  # Либо все опции вместе, либо ни одна из них
  persist-key
  persist-tun
  user nobody
  group nogroup
  comp-lzo
  ns-cert-type server
  ca ca.crt
  cert client.crt
  key client.key

Если сервер подключен через несколько провайдеров, можно повысить устойчивость сети к отказам. Для этого клиенту нужно прописать несколько опций remote, по одной на сервер, в порядке «сначала предпочтительные».

Имена файлов, указанные в параметрах ca, cert и key — это файлы, переданные через защищённый канал. Права доступа к файлу key должны быть установлены в 600.

Linux

Необходим universal tun/tap driver в ядре, либо модулем, но загруженный.

Gentoo

При установке net-misc/openvpn создаётся скрипт /etc/init.d/openvpn. Этот скрипт запускает openvpn с конфигурационным файлом /etc/openvpn/openvpn.conf. Мы, однако, можем поддерживать несколько конфигураций OpenVPN одновременно, если сделаем симлинки вида /etc/init.d/openvpn.network-name -> /etc/init.d/openvpn — каждый такой скрипт запускает OpenVPN с конфигурационным файлом /etc/openvpn/network-name.conf.

Соответственно, помещаем туда вышеприведённый конфиг, создаём симлинк и кладём скрипты в поддиректорию в /etc/openvpn/. В конфиге прописываем полный путь к ключу и сертификатам. Следите, чтобы имена файлов в конфиге не пересекались, во избежание неприятных эффектов!

Запуск и останов сети производятся через управление сервисом /etc/openvpn.network-name.

Windows

Конфигурационный файл помещается в директорию «C:\Program Files\OpenVPN\config\» с именем вроде «office.ovpn», туда же помещаются остальные файлы — ключи и сертификаты. Если мы их помещаем в поддиректорию (например, хотим использовать несколько виртуальных сетей и все они предоставили файлы с одинаковым именем ca.crt), указываем полные пути к файлам.

Для запуска сетей можно либо запустить сервис OpenVPN (тогда будут запущены все конфигурации *.ovpn, найденные в config\), либо по отдельности — щёлкаем по файлу .ovpn правой кнопкой и выбираем «Запустить OpenVPN с этой конфигурацией».

Возможные проблемы

Проверить доступность сервера, если он запущен на TCP, можно обычным telnetом.

Windows

Нет свободного виртуального адаптера TAP

Wed Dec 31 10:43:51 2008 TCP connection established with 88.83.201.253:1194 
Wed Dec 31 10:43:51 2008 TCPv4_CLIENT link local: [undef] 
Wed Dec 31 10:43:51 2008 TCPv4_CLIENT link remote: 88.83.201.253:1194 
Wed Dec 31 10:44:51 2008 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) 
Wed Dec 31 10:44:51 2008 TLS Error: TLS handshake failed 
Wed Dec 31 10:44:51 2008 Fatal TLS error (check_tls_errors_co), restarting 
Wed Dec 31 10:44:51 2008 SIGUSR1[soft,tls-error] received, process restarting 
Wed Dec 31 10:44:56 2008 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port. 
Wed Dec 31 10:44:56 2008 Re-using SSL/TLS context 
Wed Dec 31 10:44:56 2008 LZO compression initialized 
Wed Dec 31 10:44:56 2008 Attempting to establish TCP connection with 88.83.201.253:1194 
Wed Dec 31 10:44:56 2008 TCP connection established with 88.83.201.253:1194 
Wed Dec 31 10:44:56 2008 TCPv4_CLIENT link local: [undef] 
Wed Dec 31 10:44:56 2008 TCPv4_CLIENT link remote: 88.83.201.253:1194 
Wed Dec 31 10:45:11 2008 [office] Peer Connection Initiated with 88.83.201.253:1194 
Wed Dec 31 10:45:13 2008 All TAP-Win32 adapters on this system are currently in use. 
Wed Dec 31 10:45:13 2008 Exiting 
Press any key to continue...

По логу OpenVPN видно, что клиент успешно присоединился к серверу, авторизовался, но не смог привязать виртуальную сеть к виртуальному адаптеру. Скорее всего, какие-то другие процессы уже задествовали все имеющиеся в системе адаптеры TAP-Win32. Это мог быть и сам OpenVPN, повисший и не отдавший адаптер.

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

Ссылки

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

  1. Gentoo Linux Wiki — HOWTO OpenVPN Server for Ethenet Bridging with Server Certificates (Есть копия этой страницы, по адресу: http://www.gentoo-wiki.info/HOWTO_OpenVPN_Server_for_Ethernet_Bridging_with_Server_Certificates. Спасибо hexes за ссылку!)
  2. Gentoo Linux Wiki — HOWTO OpenVPN Linux Server Windows Client
  3. OpenVPN Documentation — HOWTO
  4. Энциклопедия сетевых протоколов — параметры sysctl для стека IP
  5. Building bridges with Linux

P.S. Некоторые источники почили. Ссылки я убирать не буду, но стоит иметь ввиду.

Безопасный удаленный доступ к сервисам в локальной сети.

VPN (англ. Virtual Private Network, «виртуальная частная сеть») — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например Интернет).

Википедия

Наиболее популярные решения с открытым исходным кодом для построения виртуальных частных сетей — «OpenVPN» и «IPSec». В релиз ядра Linux 5.6, который состоялся 30 марта 2020 года, вошла еще одна реализация технологии VPN — «WireGuard». Это молодой набирающий популярность проект.

Основные преимущества «WireGuard»:

  • Высокая производительность (бенчмарки можно посмотреть тут)
  • Простая настройка
  • Современная криптография
  • Качественный код

В этой инструкции мы настроим VPN-туннель в локальную сеть с помощью «WireGuard» и обеспечим доступ из интернета к узлам LAN с различных устройств.

Адресация в LAN — 192.168.100.0/24, VPN-сети назначим диапазон 10.0.0.0/24.

Схема сети

Настройка сервера

Для размещения сервера потребуется VPS. При выборе необходимо обратить внимание на технологию виртуализации: предпочтительно KVM, можно XEN, а вот OpenVZ следует избегать. Дело в том, что в WireGuard реализован как модуль ядра, а в OpenVZ ядро очень старое. Я буду использовать самый дешевый виртуальный сервер c операционной системой Ubuntu 20.04 (KVM 512 МБ RAM 20 ГБ SSD 1 CPU — такая конфигурация вполне подойдет).

Залогинимся на сервер с правами пользователя root и выполним следующие команды:

# устанавливаем Wireguard
apt update && apt upgrade
apt install wireguard
# разрешаем проброс пакетов
echo «net.ipv4.ip_forward=1» >> /etc/sysctl.conf
sysctl -p
# генерируем ключи для сервера:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Создадим конфигурационный файл /etc/wireguard/wg0.conf со следующим содержимым:

[Interface]
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

Параметры PostUp/PostDown содержат правила iptables, которые будут применены при запуске/остановке сервиса. Обратите внимание на название сетевого интерфейса — оно должно соответствовать общедоступному сетевому адаптеру, в моем случае это eth0. Вывести список адаптеров можно командой:

ip a

Выберите из списка тот, которому соответствует внешний IP-адрес. <SERVER_PRIVATE_KEY> — заменяем содержимым файла /etc/wireguard/privatekey.

Запустим VPN-сервис и добавим его в автозагрузку:

wg-quick up wg0
systemctl enable wg-quick@wg0

Убедимся, что служба запустилась корректно:

root@wg-server:/etc/wireguard# wg show wg0
interface: wg0
public key: <SERVER_PUBLIC_KEY>
private key: (hidden)
listening port: 51820

Настройка клиента в LAN

Если ваш роутер поддерживает WireGuard (Zyxel KeeneticOS >=3.3, Mikrotik RouterOS >=7.1beta2, OpenWRT) — можно настроить VPN-клиент прямо на нем. Я буду использовать для этой цели сервер Ubuntu 20.04 (локальный адрес 192.168.100.7).

Первый этап настройки аналогичен конфигурации серверной части. Выполняем с правами root-пользователя:

# устанавливаем WireGuard
apt update && apt upgrade
apt install wireguard
# разрешаем проброс пакетов
echo «net.ipv4.ip_forward=1» >> /etc/sysctl.conf
sysctl -p
# генерируем ключи для клиента
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Редактируем /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <PEER_LAN_PRIVATE_KEY>
Address = 10.0.0.2/32
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wlp2s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wlp2s0 -j MASQUERADE

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 20

<PEER_LAN_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера, <SERVER_IP> — внешний IP-адрес сервера. Правила iptables в PostUp/PostDown необходимы для того, чтобы наш клиент выступал в роли шлюза в LAN. Указываем в правилах тот сетевой интерфейс, на который назначен локальный адрес (192.168.100.7, в моем случае это wlp2s0). Уточните его путем исполнения команды:

ip a

В параметре AllowedIPs задаются адреса, маршрутизация к которым будет осуществляться через VPN-интерфейс. В поле PersistentKeepalive — периодичность проверки доступности соединения в секундах. Запускаем службу и добавляем в автозагрузку:

wg-quick up wg0
systemctl enable wg-quick@wg0

На сервере добавляем в файл /etc/wireguard/wg0.conf блок:


[Peer]
# PEER_LAN
PublicKey = <PEER_LAN_PUBLIC_KEY>
AllowedIPs = 10.0.0.2/32, 192.168.100.0/24

Где <PEER_LAN_PUBLIC_KEY> — /etc/wireguard/publickey клиента. Перезапустим службу и убедимся, что все настроено корректно:

systemctl restart wg-quick@wg0
root@wg-server:/etc/wireguard# wg show wg0
interface: wg0
public key: <SERVER_PUBLIC_KEY>
private key: (hidden)
listening port: 51820

peer: <CLIENT_PUBLIC_KEY>
endpoint: <CLIENT_IP>:42946
allowed ips: 10.0.0.2/32, 192.168.100.0/24
latest handshake: 2 minutes, 8 seconds ago
transfer: 3.24 KiB received, 828 B sent
root@wg-server:/etc/wireguard# ping -c 3 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=31.1 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=120 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=40.9 ms

— 10.0.0.2 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 31.093/63.987/119.950/39.774 ms
root@wg-server:/etc/wireguard# ping -c 3 192.168.100.5
PING 192.168.100.5 (192.168.100.5) 56(84) bytes of data.
64 bytes from 192.168.100.5: icmp_seq=1 ttl=63 time=31.8 ms
64 bytes from 192.168.100.5: icmp_seq=2 ttl=63 time=119 ms
64 bytes from 192.168.100.5: icmp_seq=3 ttl=63 time=40.0 ms

— 192.168.100.5 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 31.834/63.573/118.915/39.273 ms

Проверим теперь с клиента:

root@wg-lan-client:/etc/wireguard# wg show wg0
interface: wg0
public key: <CLIENT_PUBLIC_KEY>
private key: (hidden)
listening port: 42946

peer: <SERVER_PUBLIC_KEY>
endpoint: <SERVER_IP>:51820
allowed ips: 10.0.0.0/24
latest handshake: 8 seconds ago
transfer: 21.34 KiB received, 83.03 KiB sent
persistent keepalive: every 21 seconds
root@wg-lan-client:/etc/wireguard# ping -c 3 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=32.0 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=32.6 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=32.2 ms

— 10.0.0.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 32.013/32.265/32.586/0.316 ms

Настройка удаленных клиентов

Сборки WireGuard доступны для основных платформ: Linux, Windows, Mac, Android, FreeBSD, OpenWRT и др. Рассмотрим настройку VPN-клиента на десктопах под управлением Linux и Windows, а так же на Android-смартфоне.

Удаленный Linux клиент

На клиенте выполняем с правами root:

# устанавливаем Wireguard
apt update && apt upgrade
apt install wireguard

# генерируем ключи
wg genkey | tee /etc/wireguard/peer_1_privatekey | wg pubkey | tee /etc/wireguard/peer_1_publickey

Конфигурационный файл /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <PEER_1_PRIVATE_KEY>
Address = 10.0.0.3/32
DNS = 8.8.8.8

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 0.0.0.0/0
# AllowedIPs = 10.0.0.0/24, 192.168.100.0/24
PersistentKeepalive = 20

<PEER_1_PRIVATE_KEY> — заменяем содержимым /etc/wireguard/peer_1_privatekey, <SERVER_PUBLIC_KEY> — /etc/wireguard/publickey с сервера.

Обратите внимание на строку «AllowedIPs = 0.0.0.0/0» — в данной конфигурации весь трафик будет маршрутизироваться через VPN-адаптер. Это может понадобиться для сокрытия реального IP при работе в интернет или для защиты трафика при подключении к недоверенным сетям (например публичные Wi-Fi точки доступа). В этом случае указываем «DNS = 8.8.8.8» (8.8.8.8 — DNS-сервер Google), чтобы DNS-запросы выполнялись через защищенное VPN-соединение.

Если VPN-туннель необходим только для доступа к LAN 192.168.100.0/24 — убираем строчку «DNS = 8.8.8.8» и в параметре AllowedIPs меняем «0.0.0.0/0» на «10.0.0.0/24, 192.168.100.0/24».

# запускаем службу
wg-quick up wg0
# добавляем в автозапуск
systemctl enable wg-quick@wg0

На сервере в конфигурационный файл /etc/wireguard/wg0.conf добавляем блок:


[Peer]
PublicKey = <PEER_1_PUBLIC_KEY>
AllowedIPs = 10.0.0.3/32

Где <PEER_1_PUBLIC_KEY> — содержимое файла /etc/wireguard/peer_1_publickey клиента и перезапускаем службу:

systemctl restart wg-quick@wg0

Возвращаемся на клиент и проверяем доступность узлов в LAN через VPN-туннель:

root@wg-peer1:/etc/wireguard# wg show wg0
interface: wg0
public key: <PEER_1_PUBLIC_KEY>
private key: (hidden)
listening port: 34022

peer: <SERVER_PUBLIC_KEY>
endpoint: <SERVER_IP>:51820
allowed ips: 10.0.0.0/24, 192.168.100.0/24
latest handshake: 44 seconds ago
transfer: 6.91 KiB received, 8.96 KiB sent
persistent keepalive: every 20 seconds

root@wg-peer1:/etc/wireguard# ping -c 3 192.168.100.5
PING 192.168.100.5 (192.168.100.5) 56(84) bytes of data.
64 bytes from 192.168.100.5: icmp_seq=1 ttl=62 time=66.3 ms
64 bytes from 192.168.100.5: icmp_seq=2 ttl=62 time=65.7 ms
64 bytes from 192.168.100.5: icmp_seq=3 ttl=62 time=67.2 ms

— 192.168.100.5 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 65.748/66.387/67.157/0.582 ms

Удаленный Windows клиент

На сервере сгенерируем ключи для Windows-клиента:

wg genkey | tee /etc/wireguard/peer_2_windows_privatekey | wg pubkey | tee /etc/wireguard/peer_2_windows_publickey

Добавим блок Peer в файл /etc/wireguard/wg0.conf:

…​
[Peer]
PublicKey = <PEER_2_PUBLIC_KEY>
AllowedIPs = 10.0.0.4/32

Перезапустим сервер:

systemctl restart wg-quick@wg0

Конфигурационный файл windows.conf:

[Interface]
PrivateKey = <PEER_2_PRIVATE_KEY>
Address = 10.0.0.4/32

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 10.0.0.0/24, 192.168.100.0/24
PersistentKeepalive = 20

В приложении WireGuard открываем конфигурационный файл и нажимаем кнопку «подключение».

Конфигурационные файлы можно генерировать и на клиентах, а после отправлять открытые части ключей на сервер.

Удаленный Android клиент

Приложение для Android доступно в Google Play.

Генерируем ключи для клиента и добавляем Peer в конфигурационный файл сервера.

wg genkey | tee /etc/wireguard/peer_3_android_privatekey | wg pubkey | tee /etc/wireguard/peer_3_android_publickey

/etc/wireguard/wg0.conf:


[Peer]
PublicKey = <PEER_3_PUBLIC_KEY>
AllowedIPs = 10.0.0.5/32

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

systemctl restart wg-quick@wg0

Создадим конфигурационный файл для Android клиента mobile.conf:

[Interface]
PrivateKey = <PEER_3_PRIVATE_KEY>
Address = 10.0.0.5/32

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 10.0.0.0/24, 192.168.100.0/24
PersistentKeepalive = 20

Устанавливаем пакет qrencode:

sudo apt install qrencode

И генерируем QR-код с конфигурацией для PEER_3:

В Android-приложении выбираем пункт меню «сканировать QR-код»:

И подключаемся к VPN-туннелю:

Распространенные проблемы

1. Соединение не устанавливается, «0 B received»

wg show wg0
interface: wg0
public key: <CLIENT_PRIVATE_KEY>
private key: (hidden)
listening port: 42658

peer: <SERVER_PUBLIC_KEY>
endpoint: 80.249.145.4:51821
allowed ips: 10.0.0.0/24
transfer: 0 B received, 1.16 KiB sent
persistent keepalive: every 20 second

Возможные причины и решения:

  • Сетевое соединение блокируется межсетевым экраном — проверьте настройки iptables на сервере и Linux клиентах, брандмауэра Windows, межсетевого экрана маршрутизатора;
  • UDP трафик блокируется интернет провайдером — WireGuard не поддерживает TCP, в этом случае стоит рассмотреть альтернативные решения, например openVPN в режиме TCP (либо туннелировать UDP, что не всегда целесообразно);
  • Ошибка в IP-адресе или PORT сервера — проверьте значение параметра «Endpoint» в конфигурационном файле;
  • Ошибка в ключах — проверьте ключи, в конфигурации сервера — открытые части ключей клиентов и приватная часть ключа сервера, в конфигурации клиентов — открытая часть ключа сервера, приватная часть ключа клиента.

2. При указании параметра DNS возникает ошибка «resolvconf: command not found»

root@wg-peer1:/etc/wireguard# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
/usr/bin/wg-quick: line 32: resolvconf: command not found
[#] ip link delete dev wg0

Установите пакет openresolv:

apt install openresolv

WireGuard — оптимальное решение для организации удаленного доступа к сетям малых офисов и домашним сетям. Он прост в настройке, работает на всех распространенных платформах и обладает хорошей производительностью.

PPTP (Point-to-Point Tunneling Protocol) – это протокол, который позволяет устанавливать защищенное соединение между клиентом и сервером через общедоступную сеть, такую как Интернет. В данной статье мы рассмотрим настройку PPTP VPN между Linux-клиентом и Windows-сервером.

Шаг 1: Установка и настройка PPTP сервера на Windows

Первым шагом необходимо установить и настроить PPTP сервер на Windows. Для этого следуйте данным инструкциям:

1. Откройте «Панель управления» и выберите «Программы и компоненты».
2. Нажмите «Включение и отключение компонентов Windows».
3. Найдите «Службы маршрутизации и удаленного доступа» и отметьте его для установки.
4. Нажмите «OK» и дождитесь завершения установки.
5. После установки откройте «Панель управления» и выберите «Администрирование».
6. Дважды щелкните на «Маршрутизация и удаленный доступ» и выберите «Новая настройка сервера».
7. Выберите «Тип настройки сервера» как «Оператор точки доступа VPN».
8. Укажите пул IP-адресов, который будет использоваться для назначения клиентским подключениям.
9. Настройте аутентификацию, выбрав «Только аутентификация с помощью пароля».
10. Нажмите «OK» и дождитесь завершения настройки сервера.

После завершения этих шагов Windows сервер будет готов к установке и настройке PPTP VPN.

Шаг 2: Установка и настройка PPTP клиента на Linux

Теперь перейдем к настройке PPTP клиента на Linux машине. Для этого нужно выполнить следующие действия:

1. Установите необходимые пакеты, выполнив команду:

sudo apt-get install pptp-linux

2. Создайте файл с данными для подключения, выполнив команду:

sudo vi /etc/ppp/peers/myvpn

Внутри файла введите следующие данные:

pty "pptp SERVER_IP --nolaunchpppd"
name USERNAME
password PASSWORD
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam myvpn

3. Сохраните и закройте файл.

Шаг 3: Подключение к PPTP серверу

Теперь, когда PPTP сервер настроен на Windows и PPTP клиент настроен на Linux, мы готовы к подключению.

1. Выполните команду ниже для запуска PPTP VPN:

sudo pon myvpn

2. Подождите пару секунд, и вы увидите вывод о успешном подключении.

3. Для проверки выполните команду ниже:

ifconfig

Вы увидите новый сетевой интерфейс ppp0, который указывает на успешное подключение к PPTP VPN серверу.

Теперь вы можете использовать PPTP VPN для безопасного пользования интернетом.

В заключение, мы рассмотрели процесс установки и настройки PPTP VPN между Linux-клиентом и Windows-сервером. Это довольно простой способ настроить защищенное соединение для доступа к общедоступной сети. Мы рекомендуем проверить безопасность вашего соединения и настройки сервера перед использованием его в продакшен-среде.

Виртуальные сети (VPN) обеспечивают не только построение корпоративных связей или защиту при пользовании общедоступными подключениями,но и выход в интернет. Разберемся, как осуществляется настройка VPN Linux.

Благодаря VPN доступно посещение веб-ресурсов в обход блокировкам с сохранением приватности, что в последнее время тревожит пользователей больше всего. Процесс настройки VPN для каждой системы имеет свои особенности и может выполняться в различных вариациях. В зависимости от многих факторов, в том числе целевого назначения и типа построения сети существует несколько способов реализации технологии.

Как настроить VPN подключение в Linux

Что такое VPN и зачем это нужно?

Для начала разберём, что представляет собой Virtual Private Network (виртуальная частная сеть) и как применим данный вид технологий. Благодаря VPN можно объединить любое число устройств в частную сеть, и обеспечить защищённый канал для передачи данных. Так, применяя подключение такого типа, пользователи могут сохранить приватность в интернете и не переживать о сохранности данных, в том числе при работе в сетях с общим доступом. Подсоединение к VPN позволяет избежать перехвата информации со стороны злоумышленников, поскольку маршрут обмена пакетами надёжно защищён шифрованием и аутентификацией пользователя.

Данные шифруются на стороне отправителя и следуют по каналу связи в зашифрованном виде, а расшифровываются уже на устройстве получателя, при этом у обоих подразумевается общий ключ доступа. С применением VPN возможно создание надёжной сети поверх ненадёжной (как правило, интернета). Подключение пользователя выполняется не напрямую, а посредством сервера, соединённого с внутренней или внешней сетью. Это и обеспечивает приватность в интернете, поскольку в таком случае веб-ресурсам будет виден IP сервера, к которому подсоединён клиент. Сервер потребует прохождения процедуры идентификации, а также аутентификации и после того, как пользователь авторизован, возможна работа с сетью.

Наиболее часто VPN используют в следующих случаях:

  1. Подключение к интернету посредством VPN нередко применимо провайдерами городских сетей, а также на предприятиях. Плюсом такого метода реализации является защищённость канала связи, поскольку возможна настройка разных ступеней безопасности. Это обеспечивается настройкой одной сети поверх другой и доступом в интернет посредством двух разных сетей.
  2. Внутри корпоративной сети. Объединение в одну сеть позволяет получить безопасным доступ к сети скольким угодно компьютерам сотрудников вне зависимости от их местонахождения и удаления от сервера.
  3. Объединение компонентов корпоративной сети. Применяя VPN для обеспечения взаимодействия различных частей предприятия, возможна организация доступа для них к отдельным ресурсам общей сети.

Реализация технологии доступна для различных устройств, операционкой которых поддерживается опция или имеется VPN-клиент, способный осуществлять проброс портов с применением TCP/IP в виртуальную сеть.

Пользователь может самостоятельно выполнить все действия по настройке. Необходимость в этом возникает даже не ради цели обхода региональных блокировок, ведь для этого можно и не настраивать VPN в компьютере (для посещения заблокированных ресурсов достаточно инсталляции стороннего приложения, установки специального расширения для браузеров или использования встроенного функционала обозревателя). Настроить VPN на ПК или ноутбуке часто требуется в случае смены провайдера для настройки доступа в интернет. Настройка VPN под Linux имеет свои специфические особенности, учитывая многогранность ОС, но принцип остаётся тот же.

Чем VPN отличается от прокси?

Наверняка многие не раз использовали прокси, например, чтобы посидеть в Telegram. В чем отличие прокси от VPN-сервера?

Когда вы подключаетесь к прокси-серверу, тот становится своего рода посредником между вашим устройством и Интернетом. Весь ваш интернет-трафик проходит через прокси-сервер и, как следствие, получает его IP-адрес.

Подключение к прокси-серверу скрывает ваш исходный IP-адрес и позволяет получить доступ к заблокированному контенту. Тем не менее, прокси-серверы не шифруют трафик, поэтому все данные, которыми вы обмениваетесь через установленное подключение, могут быть перехвачены подключенными к тому же серверу злоумышленниками.

VPN-сервис обеспечит вам все преимущества прокси-сервера, а также защитит и зашифрует трафик, которым ваше устройство обменивается с интернет-серверами. Это позволит вам работать в Интернете, не опасаясь кражи или перехвата ваших данных.

Настройка серверной части на Linux

Рассмотрим создание VPN сервера PPTP на платформе Ubuntu Server. С Linux достаточно легко развернуть сервер и сделать это можно даже на слабом устройстве. Наиболее просто реализовать VPN с PPTP, поскольку для воплощения не потребуется устанавливать сертификаты на устройства клиентов, а аутентификация выполняется благодаря вводу имени и пароля. Для начала потребуется инсталлировать пакеты: sudo apt-get install pptpd.

Когда пакеты для функционирования PPTP VPN установлены, следует настроить сервер. Чтобы задать диапазон адресов и выполнить прочие главные настройки, откроем файл /etc/pptpd.conf (редактируется с правами администратора): nano /etc/pptpd.conf.

Connections

Для раздачи более сотни подключений разом, находим Connections. Данный параметр должен быть раскомментирован, после чего указываем в этой строке необходимое значение количества подключений. Для отправки по VPN широковещательных пакетов раскомментировать придётся и параметр bcrelay. Далее идём в конец файла, где настроим адреса. Добавляем адрес сервера в VPN сети: localip 10.0.0.1.Диапазон адресов для раздачи клиентам (выделяем сразу с некоторым запасом, поскольку увеличить количество, не перезапуская pptpd не получится): remoteip 10.0.0.20-200.Если у вас имеется несколько внешних IP, можно конкретизировать, по какому из них прослушивать интерфейсы входящих PPTP: listen внешний ip.Параметр speed позволяет задать скорость подключений (бит/с). Сохраняем и закрываем файл.

Encryption

В секторе Encryption, отвечающем за шифрование, строки, которые запрещают применение устаревших и небезопасных способов аутентификации, должны быть раскомментированы:

refuse-pap, refuse-chap, refuse-mschap

Опция proxyarp должна быть включена, она отвечает за включение поддержки сервером Proxy ARP. Опция lock позволяет разрешить (для этого комментируем) или запретить (для этого раскомментируем) пользователю множественные подключения. Сохраняемся и закрываем файл. Настройка сервера завершена, но для создания клиентов вносим соответствующие записи в /etc/ppp/chap-secrets:

sudo nano /etc/ppp/chap-secrets.

Они выглядят примерно таким образом:

username1 *password12345*, username2 10.10.12.11 password345*, username3 * password787 10.10.11.21.

Для каждого пользователя прописываем его имя, пароль, удалённый и локальный IP, разделяя сведения клавишей пробел. Удалённый адрес прописываем при наличии у клиента статического IP и при условии применения исключительно такового, в ином случае предпочтительно ставить звёздочку, чтобы соединение однозначно было выполнено. Локальный адрес же указываем при выделении пользователю одного и того же IP в VPN-сети. В примере выше для клиента в первом варианте соединения осуществляются с любого внешнего IP, локальный выделится первый доступный. Во втором случае – локальный будет выделен первый доступный, но подключения выполняются только с указанного адреса. В третьем – соединиться с сетью можно с любого адреса, локальный же выделится тот, который был нами прописан. Настройка серверной части VPN PPTP завершена, перезапускаем его.

Само устройство в перезагрузке не нуждается.

Настройка VPN клиентов

Выполнить наладку клиентской части VPN сервера можно в любой ОС, мы же будем настраивать на Убунте. По большому счёту соединение будет работать и с параметрами, выставленными по умолчанию, но лучше указать тип подключения и выполнить некоторые другие настройки. Установка VPN на Ubuntu предполагает следующие действия:

  1. В меню «Система» переходим в «Параметры» и выбираем «Сетевые соединения».
  2. Выбираем тип соединения «Туннельный протокол точка-точка PPTP».
    Туннельный протокол точка-точка PPTP
  3. Присваиваем подключению наименование или оставляем, как было предоставлено.
  4. В поле «Шлюз» вбиваем внешний IP сервера, прописываем имя и пароль (в правой части поля для пароля присутствует опция его сохранения для этого юзера).
    Ввод данных шлюза
  5. Жмём «Дополнительно» и в новом окне ставим флажок напротив пункта «Использовать шифрование MPPE» (это обязательное условие для связи с сервером).
    Использовать шифрование MPPE
  6. Теперь позакрываем окна и подключимся к нашему серверу.

Настройка сети VPN для Linux завершена, и устройства могут быть соединены локально, но для входа в интернет через VPN потребуется выполнить ещё некоторые настройки.

Настройка доступа в интернет через VPN

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

  • iptables -A FORWARD -s 10.0.0.1/24 -j ACCEPT;
  • iptables -A FORWARD -d 10.0.0.1/24 -j ACCEPT.

Под 10.0.0.1/24 подразумевается локальный IP сервера и маска сети. Сохраняемся: iptables-save и подтверждаем новые параметры.

Теперь на Linux есть возможность соединения с сетью интернет посредством VPN, а также доступны и остальные преимущества работы с виртуальной сетью. Посещаемые ресурсы увидят внешний адрес сервера, что обусловит приватность, а соединение будет надёжно защищено от хакерских атак и обеспечит безопасность передачи данных.

Настраиваем L2TP VPN-сервер на платформе Linux (Debian / Ubuntu)

L2TP — один из наиболее популярных VPN-протоколов, обладающий, благодаря IPsec, отличной безопасностью, достаточной простотой и широкой поддержкой со стороны всех современных ОС. Для работы с ним не требуется установка дополнительного ПО и какие-либо сложные настройки. Мы уже рассматривали настройку L2TP VPN-сервера на платформах Windows и Mikrotik, а теперь расскажем, как настроить аналогичный сервер в Linux, дистрибутивах основанных на Debian или Ubuntu. В качестве систем на тестовом стенде мы использовали Debian 10 и Ubuntu 20.04, но с некоторыми изменениями данная инструкция применима к любым версиям Linux со strongSwan версии 5.0 и выше.

Настраиваем IPsec

Именно с устаревшими настройками IPsec вам придется столкнуться в большинстве опубликованных инструкций. Нет, все даже будет работать, но вот безопасность такого решения окажется довольно низкой, не соответствующей современным требованиям. Поэтому, если у вас уже имеется настроенный экземпляр L2TP-сервера мы настоятельно советуем обновить его настройки.

Для работы с IPsec мы будем использовать пакет strongSwan, установим его:

apt install strongswan

Затем откроем файл настроек /etc/ipsec.conf и добавим в его конец следующие секции:

conn rw-base
fragmentation=yes
dpdaction=clear
dpdtimeout=90s
dpddelay=30s
conn l2tp-vpn
also=rw-base
ike=aes128-sha256-modp3072
esp=aes128-sha256-modp3072
leftsubnet=%dynamic[/1701]
rightsubnet=%dynamic
mark=%unique
leftauth=psk
rightauth=psk
type=transport
auto=add

Первая секция задает общие параметры: включает фрагментацию IKE и настраивает протокол обнаружения мертвых узлов (Dead Peer Detection, DPD), отвечающий за обнаружение неактивных клиентов. Вторая относится уже к L2TP-соединениям, указывая использовать транспортный режим IPsec, аутентификацию по общему ключу и задает используемые шифры. Приведенные значения являются рекомендуемыми и взяты из официальной документации strongSwan.

Общий ключ следует указать в файле /etc/ipsec.secrets, добавив в него следующую строку:

%any %any : PSK «mySharedKey»

Где mySharedKey — общий ключ, так как от него зависит безопасность вашей VPN-сети мы рекомендуем использовать в качестве ключа случайно сгенерированную строку из букв, цифр и спецсимволов. Для этого можно воспользоваться командой:

openssl rand -base64 18

Результатом ее выполнения станет случайная строка длинной в 18 символов.

l2tp-vpn-server-debian-ubuntu-001.png
После внесения указанных настроек перезапустим службу:

systemctl restart strongswan

В Ubuntu имя службы несколько иное — strongswan-starter, поэтому команда будет иметь вид:

systemctl restart strongswan-starter

Настраиваем L2TP

Для реализации функций L2TP-сервера предназначен пакет xl2tpd, для его установки выполните:

apt install xl2tpd

Затем откройте файл настроек /etc/xl2tpd/xl2tpd.conf, раскомментируйте и приведите к следующему виду опции:

[global]
port = 1701
auth file = /etc/ppp/chap-secrets
access control = no
ipsec saref = yes
force userspace = yes
[lns default]
exclusive = no
ip range = 10.2.2.100-10.2.2.199
hidden bit = no
local ip = 10.2.2.1
length bit = yes
require authentication = yes
name = l2tp-vpn
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes

Большая часть опций относится к настройке протокола L2TP и требует понимания его работы, поэтому мы на них останавливаться не будем. Разберем те опции, которые имеют существенное значение. Параметр auth file указывает на файл с данными для аутентификации, а pppoptfile — набор опций для PPP-соединения, которое используется внутри L2TP-туннеля, name — имя сервера, которое будет использоваться для поиска аутентификационных данных в файле chap-secrets.

Опции local ip и ip range

Опции local ip и ip range отвечают за локальный адрес сервера в VPN-сети и диапазон адресов для выдачи удаленным клиентам. Здесь можно использовать два подхода: выдавать клиентам адреса из диапазона локальной сети офиса и включить ProxyARP, в этом случае настраивать маршрутизацию на клиентах не требуется, они будут как-бы включены в общую сеть офиса на канальном уровне (L2), либо выдавать адреса из непересекающегося диапазона и использовать маршрутизацию. Автоматизировать создание маршрутов для Windows-клиентов можно с использованием PowerShell.

Для настройки PPP перейдем в /etc/ppp и скопируем стандартный файл настроек:

cd /etc/ppp
cp options options.xl2tpd

Затем открываем файл /etc/ppp/options.xl2tpd на редактирование и приводим к следующему виду. Опции перечислены в порядке их следования, нужно раскомментировать их и указать нужное значение, если опция отсутствует, то ее следует добавить в конце файла.

asyncmap 0
auth
crtscts
lock
hide-password
modem
mtu 1460
lcp-echo-interval 30
lcp-echo-failure 4
noipx
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
multilink
mppe-stateful

Если вы будете использовать ProxyARP то дополнительно раскомментируйте опцию:

proxyarp

Также для Windows-клиентов можно передать настройку DNS-серверов, для этого добавьте опции:

ms-dns 192.168.1.1
ms-dns 192.168.1.2

Это позволит настроить первичный и альтернативный DNS-сервера в системе.

Сохраним все внесенные изменения и перезапустим службу L2TP-сервера:

systemctl restart xl2tpd

Строку со следующим сообщением можно проигнорировать, на работу VPN-сервера она не влияет:

xl2tpd[843]: setsockopt recvref[30]: Protocol not available

l2tp-vpn-server-debian-ubuntu-002.png
Заключительным этапом настройки будет создание учетных записей для удаленных клиентов, для этого откроем файл /etc/ppp/chap-secrets и внесем следующую строку:

ivanov l2tp-vpn Pa$$word_1 *

Первым указываем логин, затем имя службы, оно должно совпадать с тем, которое мы указали в опции name в xl2tpd.conf, после него идет пароль и IP-адрес клиента, символ * обозначает что можно присвоить любой адрес из выбранного диапазона. Если же требуется выдать клиенту постоянный адрес, то его следует указать явно, и он не должен входить в динамический диапазон указанный в ip range, например:

petrov l2tp-vpn Pa$$word_1 10.2.2.99

Для доступа к L2TP-серверу следует разрешить в брандмауэре входящие подключения к портам 500 UDP,1701 UDP и 4500 UDP.

PPP

Открываем на редактирование конфигурационный файл:

vi /etc/ppp/options.xl2tpd

Добавляем:

noccp
auth
crtscts
mtu 1410
mru 1410
nodefaultroute
lock
noproxyarp
silent
modem
asyncmap 0
hide-password
require-mschap-v2
ms-dns 77.88.8.8
ms-dns 8.8.8.8

Создаем пользователя. Для этого открываем файл:

vi /etc/ppp/chap-secrets

И добавляем:

«user1» l2tpserver «password1» «172.16.10.10»
«user2» l2tpserver «password2″ *

* формат записи — <логин> <имя сервиса=»»> <пароль>

Перезапускаем xl2tpd:

systemctl restart xl2tpd

Настройка клиента

В параметрах сети и Интернет в разделе VPN создаем новое соединение:

Создание нового VPN соединения

Задаем настройки:

Настройка нового VPN соединения

* где:

  1. Имя подключения — произвольное имя.
  2. Имя или адрес сервера — адрес сервера VPN, к которому мы будем подключаться.
  3. Тип VPN — для нашего случая, выбираем L2TP/IPsec с предварительным ключом.
  4. Общий ключ — ключ, который мы задали в файле /etc/ipsec.secrets.
  5. Тип данных для входа — выбираем пользователь и пароль.
  6. Имя пользователя и пароль — логин и пароль, которые мы задали в файле /etc/ppp/chap-secrets.

Доступ в Интернет и локальную сеть

После подключения к сети VPN мы не сможем ни выйти в Интернет, ни подключиться к узлам локальной сети. Чтобы это исправить, открываем на редактирование файл:

vi /etc/sysctl.d/99-sysctl.conf

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

net.ipv4.ip_forward=1

* мы разрешили форвард сетевых запросов и настроили сервер в качестве шлюза.

После применяем настройку:

sysctl -p /etc/sysctl.d/99-sysctl.conf

Добавляем правило в iptables:

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

* данное правило включает маскарадинг на интерфейсе eth0. Вам необходимо подставить в команду значение своего сетевого адаптера.

В случае с единым сетевым интерфейсом больше ничего делать не потребуется — Ubuntu начнет работать как Интернет-шлюз.

В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран:

iptables -A FORWARD -i eth1 -o eth0 -m state —state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

* предполагается, что eth1 используется для внутренней сети, а eth0 — внешней.

Создаём свой VPN-сервер IPsec / L2TP

Сегодня создадим свой VPN-сервер.

Создаём свой VPN-сервер IPsec / L2TP за пару минут на бесплатном VPS сервере от Oracle с ОС Ubuntu 20.04 (автоматизированная настройка) Умный дом, Ubuntu, Linux, VPS, Oracle, Виртуальная машина, VPN, Home Assistant, Длиннопост
Выберем протокол для VPN.

OpenVPN

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

L2TP/IPSec

Собственно, именно этот протокол мы будем использовать в этой статье, т.к. найденный на github сценарий автоматической установки и настройки мне показался самым простым для новичков и «чайников» + подойдёт для установки не только на Ubuntu но и на Debian и CentOS. Недостаток этого протокола, пожалуй в том, что  он считается медленным и стандартные порты может закрыть ваш интернет-провайдер или сетевой администратор.

С VPN L2TP/IPSec, который мы установим, на устройстве нам нужно будет только ввести:

  • IP адрес своего VPS сервера Oracle;
  • 20-и значный ключ IPSec;
  • Логин (имя пользователя) и пароль.

PPTP

Устаревший протокол, у которого конечно же достойная скорость подключения, но в плане защиты и конфиденциальности он на самом низком уровне и использовать его в проектах «Умного дома», я точно не рекомендую!

IKEv2

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

Ну и наконец переходим к самому главному — установим VPN — сервер. Особенности сервера, который мы будем устанавливать:

  1. Быстрее IPsec/XAuth («Cisco IPsec») и поддерживается режим IKEv2.
  2. Доступен предварительно созданный Docker-образ VPN-сервера.
  3. Полностью автоматизированная настройка IPsec VPN-сервера.
  4. Инкапсулирует весь трафик VPN в UDP — протокол ESP не нужен.
  5. Протестировано с Ubuntu, Debian, CentOS / RHEL и Amazon Linux 2.

Вся наша установка сводится  к запуску сценария автоматической настройки с githab , мы лишь подготовим систему, пропишем 20-и значный ключ IPSec, логин и пароль для VPN + откроем порты для VPN в VPS от Oracle.

Другие варианты установки + дополнительная настройка IKEv2 (рекомендуется) смотрите в документации автора скрипта . Для параноиков — это «open source», исходный код скрипта смотрим там же.

Подключаемся через PuTTy по SSH к своему серверу:

  1. Для получения списка новых пактов, выполните: sudo apt-get update.
  2. Для выполнения обновления пакетов, выполните: sudo apt-get upgrade
  3. Не забываем нажать «»Y» — «Enter». Скачиваем скрипт командой: wget -O.
  4. После завершения, открываем для редактирования: sudo nano -w.
  5. Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
  6. Запускаем скрипт и ждем на пару минут.

 В одинарных кавычках указываем свои значения:

YOUR_IPSEC_PSK=’ Защищенный PSK IPsec должен состоять мин из 20 случайных символов.’
YOUR_USERNAME=’ Ваш логин для VPN’
YOUR_PASSWORD=’ Ваш пароль для VPN’

Нужно ещё открыть порты UDP 500 и 4500 для VPN на VPS от Oracle.

Для этого открываем ссылку в письме, которая пришла после регистрации в Oracle, вводим логин и пароль и попадаем в свою учетку, где следуем по пути: Сети — Виртуальные облачные сети — vcn- (ВАШ) — Сведения о списках безопасности.

Альтернативный способ попасть туда из главного окна: «Настроить сеть с помощью мастера», «Запуск мастера VNC»  нужно нажать «отмена», кликаем на свой «VNC-номер», далее в «ресурсах» нажимаем на «Списки безопасности» и кликаем на «Default Security List for vcn-номер».

Создание VPN соединения из консоли Linux

Опишу как создать соединение через NetworkManager. Настраивать буду на примере соединения L2TP. Итак давайте посмотрим как происходит создание VPN соединения из консоли Linux.

Создание соединения L2TP через NetworkManager

Запускайте команду от имени root либо с повышенными правами sudo

nmcli connection add connection.id [Name] con-name [Name] type VPN vpn-type l2tp ifname — connection.autoconnect no ipv4.method auto vpn.data «gateway = [ipv4], ipsec-enabled = yes, ipsec-psk = 0s»$(base64 <<<‘[PSK]’ | rev | cut -c2- | rev)»=, mru = 1400, mtu = 1400, password-flags = 0, refuse-chap = yes, refuse-mschap = yes, refuse-pap = yes, require-mppe = yes, user = [user]» vpn.secrets password=[user-password]

Описание настроек:

  • [Name] — название VPN соединения;
  • [ipv4] — ip адрес VPN сервера l2tp/ipsec;
  • [PSK] — ключ PSK (pre shared key);
  • [user] — имя пользователя;
  • [user-password] — пароль пользователя.

Настройки вновь созданного соединения VPN сохраняются по адресу /etc/NetworkManager/system-connections/{vpn_name}. Где vpn_name — имя вашего VPN соединения.

Команды для работы с VPN соединением

  1. Вывести информацию о созданном соединении nmcli c show id [vpnName].
  2. Подключение к VPN из командной строки nmcli c up [vpnName].
  3. Отключение от VPN из командной строки nmcli c down [vpnName].

Создание подключения в Astra Linux

Перед настройкой VPN-подключения, в дереве пользователей откройте карточку нужного пользователя и установите флаг Разрешить удаленный доступ через VPN.Не рекомендуем использовать для VPN-подключений кириллические логины. Перед созданием подключения в Astra Linux, настройте Ideco UTM:

  1. Перейдите в раздел Пользователи -> VPN-подключение -> Основное.
  2. Установите флаг в строке нужным подключением и, если требуется, заполните дополнительные поля или скопируйте PSK-ключ.
  3. Протокол L2TP/IPSecПротокол IKEv2/IPSec.
  4. Перепроверить способы шифрования можно в конфигурации UTM: откройте терминал UTM и проверьте командой: cat /etc/strongswan/swanctl/conf.d/road_warriors.conf.

Для Phase1 Algorithm ищите значения “proposals=”. Для Phase2 Algorithms ищите значения “esp_proposals=”.

Что для этого нужно?

Следует отметить, что центр сертификации (ЦС) рекомендуется использовать на отдельной машине. ЦС служит для обслуживания запросов на сертификаты.

Установка ПО

Это, пожалуй самый простой этап. Здесь достаточно воспользоваться менеджером пакетов или системой управления пакетами (СУП) для установки требуемых пакетов ПО. Для любого из популярных дистрибутивов Linux они доступны из стандартный репозиториев.

В зависимости от используемого дистрибутива наименования пакетов могут различаться. Оба пакета нужно устанавливать и на сервере, и у клиентов.

Организация центра сертификации

Это очень важный этап, поскольку от наличия собственного ЦС зависит безопасность организуемой сети VPN. Также это удобно, поскольку собственный ЦС позволяет легко управлять ключами и сертификатами, а также распространять их для клиентов. Также отпадает необходимость хранения всех сертификатов клиентов, поскольку их подписи находятся у ЦС.

Генерация и настройка ключей клиентов

На данном этапе нужно произвести похожие настройки для Easy-RSA на клиентских машинах, с той лишь разницей, что генерировать ключи нужно на основе главного сертификата серверной машины, на которой работает OpenVPN-сервер. Главный сертификат нужно скопировать на клиентские машины. Но для начала следует создать инфраструктуру клиентского окружения для работы с ключами:

Далее, нужно скопировать главный сертификат сервера (файл *.crt) на все клиентские компьютеры. Для этого удобно использовать утилиту scp:

Далее можно создавать (генерировать) клиентские ключи, используя скопированный с сервера сертификат. Для этого на клиентском компьютере в каталоге /etc/openvpn/easy-rsa нужно выполнить следующие команды:

Важно понимать, что для того, чтобы генерация клиентских ключей была возможной, необходимо, чтобы серверный сертификат находился в каталоге keys/ у клиентов. Сгенерированные в результате клиентские ключи позволяют подключаться к серверу OpenVPN. Однако, для того, чтобы сервер их принимал и предоставлял доступ к VPN-сети, необходимо, чтобы эти ключи (файлы *.csr) были подписаны на самом сервере. Можно также, используя SCP, отправить их на сервер:

$ scp /etc/openvpn/easy-rsa/keys/John.csr username@host

В результате будет создан уже подписанный сервером сертификат, который необходимо отдать клиенту. На этом организация инфраструктуры для работы с ключами (и сертификатами) завершена. Теперь этого достаточно, чтобы сервер OpenVPN и клиенты установили защищённую связь. Однако необходимо ещё произвести некоторые настройки самой системы OpenVPN.
Также, если планируется для более надёжной защиты использовать TLS-шифрование, то на стороне сервера всё в том же в каталоге /etc/openvpn/easy-rsa выполнить команду.

Настройка сервера OpenVPN

После установки OpenVPN обычно по-умолчанию никаких конфигурационных файлов для работы не предоставляется. Это сделано потому, что для начала нужно определить, как использовать OpenVPN на конкретной машине: в качестве сервера или клиента. Только после этого должна определяться конфигурация, которая, как можно понимать, будет различаться для сервера и для клиента.

Эта команда (точнее конвейер команд) извлечёт и архива server.conf.gz текстовые данные и создаст из них конфигурационный файл server.conf с базовыми настройками работы OpenVPN-сервера. Теперь нужно задать, собственно, актуальные опции: протокол и номер порта.

Серверные ключи и сертификаты из каталога /etc/openvpn/easy-rsa/keys также необходимо определить в конфигурации. Также нужно указать диапазон VPN-сети. Эта запись определяет адрес самого OpenVPN-сервера (10.8.0.0), а также маску его сети. В итоге рабочая конфигурация должна выглядеть следующим образом. Теперь можно сохранить файл server.conf. Настройка сервера OpenVPN завершена. Далее нужно выполнить его запуск с помощью команды openvpn, указав соответствующий конфигурационный файл.

Настройка клиентов OpenVPN

Теперь необходимо настроить клиентские машины. Также нужно воспользоваться файлами шаблонами, но они доступны без распаковки. Для клиента может быть задано несколько конфигурационных файлов для подключения к разным серверам OpenVPN. Ключевыми параметрами для клиентской конфигурации являются remote, ca, cert, а также key.

Здесь remote задаёт IP-адрес сервера OpenVPN в Интернет, а также порт подключения, который должен совпадать с тем, что указан в серверной конфигурации. Параметр ca – это серверный сертификат, а cert – созданный на его основе ключ John.csr, а теперь подписанный сертификат John.crt. Параметр key – это закрытый ключ клиента. Следует отметить, что именно при помощи параметров cert и key обеспечивается подключение клиентов к сети VPN.

Теперь можно запускать OpenVPN на клиентском компьютере. После этого, если всё настроено правильно, клиенты подключатся к VPN. Но на этом ещё не всё. Необходимо настроить перенаправление для туннеля VPN, чтобы пользователи могли направлять и получать через него трафик. Для начала необходимо разрешить серверу пропускать пакеты.

Затем разрешить всем подключаться к серверу OpenVPN. Ну а также разрешить клиентам доступ в интернет через туннель. Предыдущие три правила iptables стоит применять, когда в сети действует запрещающая политика. Также нужно следить за тем, чтобы брандмауэр не блокировал подключения по протоколу UDP к OpenVPN-серверу.

Настройка OpenVPN сервера в Linux

В этой статье, в качестве системы для примера мы будем использовать операционную систему CentOS, но операции не будут отличаться в других дистрибутивах. Сначала скачайте сам скрипт:

Snimok ekrana ot 2017 07 31 18 17 35

Затем запустите скрипт от имени суперпользователя с помощью такой команды:

Snimok ekrana ot 2017 07 31 18 18 33

Дальше скрипт задаст несколько вопросов по настройкам OpenVPN. Сначала нужно указать точный ip адрес VPS, на котором будет запущен OpenVPN, именно на этом адресе программа будет слушать соединения:

Snimok ekrana ot 2017 07 31 18 22 16

Затем выберите протокол, который вы хотите использовать. Например, если я хочу использовать TCP то нужно выбрать 2:

Snimok ekrana ot 2017 07 31 18 22 21
Затем введите номер порта, на котором будет слушать программа, можно оставить значение по умолчанию:

Snimok ekrana ot 2017 07 31 18 22 24
Выберите сервера DNS, которые нужно использовать, мне, например, нравятся сервера от Google:

Snimok ekrana ot 2017 07 31 18 22 29

Введите имя клиента, для которого будут подписаны сертификаты на доступ:

Snimok ekrana ot 2017 07 31 18 38 38

Дальше нажмите Enter, и подтвердите установку OpenVPN. Программа сама установит нужные пакеты в вашем дистрибутиве, а затем подпишет все необходимые сертификаты, запустит сервер openvpn и даже добавит его в автозагрузку systemd:

Snimok ekrana ot 2017 07 31 18 47 16

Последний шаг, это утилита спросит есть ли у вашего сервера дополнительный внешний ip адрес. Это может быть полезно, если вы используете NAT, и для доступа к серверу применяете какой-либо туннель. В других случаях этот пункт можно пропустить, для VPS точно пропускаем.

Теперь установка и настройка OpenVPN сервера Linux завершена. Конфигурационный файл для клиента сохранен по адресу /root/sergiy-pc.ovpn, может иметь и другое имя, в зависимости от того, какое имя вы дали клиенту. Самое интересное, что для того чтобы добавить новых клиентов, вам просто достаточно запустить скрипт еще раз. Осталось только скопировать полученный файл клиенту, для этого можно на клиентском компьютере выполнить scp: scp root@адрес_сервера:/root/sergiy-pc.ovpn /etc/openvpn/.

Snimok ekrana ot 2017 07 31 18 54 34

Настройка клиента OpenVPN

Вы можете настроить OpenVPN на клиентской машине как захотите, например, с помощью NetworkManager. Но мы рассмотрим ручной вариант. Сначала установите саму программу. Установка OpenVPN Linux Ubuntu выполняется командой:

sudo apt install openvpn

sudo yum install openvpn

Теперь для подключения к нашему серверу используем полученный файл:

Snimok ekrana ot 2017 07 31 18 55 02
Snimok ekrana ot 2017 07 31 18 55 22

Как видите, OpenVPN автоматически выдал IP вашему компьютеру, теперь можете проверить подключение к этому серверу с помощью ping:

Snimok ekrana ot 2017 07 31 18 56 04

Установка и настройка SoftEther VPN на Linux

Установка SoftEther VPN на Linux выполняется из исходников. Мы рассмотрим процесс компиляции и установки программного продукта в командной строке Linux. Инструкция протестирована на Ubuntu и Rocky Linux (CentOS). Настройку сервера мы выполним в графическом интерфейсе Server Manager. В качестве решения VPN будет использоваться OpenVPN.

Предварительная настройка

Перед установкой сервера VPN выполним предварительные настройки.

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

Для загрузки, сборки и установки SoftEther нам нужны дополнительные компоненты:

  • wget — для загрузки исходников;
  • tar — для распаковки архивов;
  • make — компиляция приложения из исходников;
  • gcc — набор компиляторов для разных языков программирования.

Их может не быть в системе и требуется установка. В зависимости от типа дистрибутива, наши действия будут немного отличаться.

  • Deb (Debian, Ubuntu, Astra Linux): apt update apt install wget tar make gcc.
  • RPM (Rocky Linux, CentOS, Oracle Linux): um install wget tar make gcc.

Настройка брандмауэра

В нашем примере мы хотим использовать OpenVPN, поэтому нам нужен порт 1194 (если мы захотим его поменять, то подставляем свое значение). Также нам нужно открыть порт 5555 — по нему мы будем подключаться к системе для управления настройками из графического интерфейса.

В зависимости от утилиты управления брандмауэром, наши действия будут отличаться.

Iptables (как правило, для Debian/Ubuntu)

  • iptables -I INPUT -p tcp —dport 1194 -j ACCEPT;
  • iptables -I INPUT -p udp —dport 1194 -j ACCEPT;
  • iptables -I INPUT -p tcp —dport 5555 -j ACCEPT.

Для сохранения правил вводим:

  • apt install iptables-persistent;
  • netfilter-persistent save.

Firewalld (как правило, для Rocky Linux/CentOS)

  • firewall-cmd —permanent —add-port=1194/{tcp,udp};
  • firewall-cmd —permanent —add-port=5555/tcp.

Для сохранения правил вводим:

  • firewall-cmd —reload

Загрузка и установка SoftEther VPN

Переходим на страницу загрузки программного обеспечения, выбираем серверный компонент и платформу для установки:

Выбираем SoftEther и платформу для установки

Ниже появятся ссылки для загрузки SoftEther VPN — копируем последнюю RTM:

Копируем ссылку для загрузки SoftEther VPN

На сервере с помощью скопированной ссылки загрузим архив с исходниками:

wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz

Создадим каталог, где будут находиться файлы сервера:

mkdir /opt/vpnserver

Распакуем скачанный архив в созданную папку:

tar zxvf softether-vpnserver-v*.tar.gz -C /opt/vpnserver —strip-components 1

Переходим в распакованную директорию:

cd /opt/vpnserver/

Выполняем компиляцию:

make

Мы должны увидеть что-то на подобие:

After you start the server daemon, you can open the HTML5 Web Administration Console is available at
https://127.0.0.1:5555/
or
https://ip_address_of_the_vpn_server:5555/
This HTML5 page is obviously under construction, and your HTML5 development contribution is very appreciated.

Серверная часть установлена.

Запуск сервера

Для запуска сервера используется команда /opt/vpnserver/vpnserver start. Но нам нужно настроить непрерывную работу системы, поэтому мы будем использовать systemd.

Создаем файл:

vi /etc/systemd/system/vpnserver.service

[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target

Перечитываем конфигурацию systemd:

systemctl daemon-reload

Разрешаем автозапуск и стартуем vpnserver:

systemctl enable vpnserver —now

Проверяем состояние:

systemctl status vpnserver

Смотрим, на каких портал слушает сервис:

ss -tunlp | grep vpnserver

Мы должны увидеть что-то на подобие:

udp   UNCONN 0      0                                0.0.0.0:49032      0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=5),(«vpnserver»,pid=15458,fd=5))
udp   UNCONN 0      0                                0.0.0.0:58441      0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=11))
udp   UNCONN 0      0                              127.0.0.1:1194       0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=47))
udp   UNCONN 0      0                              10.0.2.18:1194       0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=46))
udp   UNCONN 0      0                                0.0.0.0:36046      0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=16))
udp   UNCONN 0      0                                0.0.0.0:23986      0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=43))
udp   UNCONN 0      0                                  [::1]:1194          [::]:*    users:((«vpnserver»,pid=15459,fd=49))
udp   UNCONN 0      0      [fe80::a00:27ff:fedc:7a3d]%enp0s3:1194          [::]:*    users:((«vpnserver»,pid=15459,fd=48))
tcp   LISTEN 0      128                              0.0.0.0:1194       0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=35))
tcp   LISTEN 0      128                              0.0.0.0:5555       0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=39))
tcp   LISTEN 0      128                              0.0.0.0:443        0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=26))
tcp   LISTEN 0      128                              0.0.0.0:992        0.0.0.0:*    users:((«vpnserver»,pid=15459,fd=31))
tcp   LISTEN 0      128                                 [::]:1194          [::]:*    users:((«vpnserver»,pid=15459,fd=37))
tcp   LISTEN 0      128                                 [::]:5555          [::]:*    users:((«vpnserver»,pid=15459,fd=41))
tcp   LISTEN 0      128                                 [::]:443           [::]:*    users:((«vpnserver»,pid=15459,fd=28))
tcp   LISTEN 0      128                                 [::]:992           [::]:*    users:((«vpnserver»,pid=15459,fd=33))

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

Создаем пароль администратора

Для администрирования SoftEther, создаем пароль администратора. Вводим:

/opt/vpnserver/vpncmd

Система задаст вопрос, какой сервис нам нужен — выбираем Management of VPN Server or VPN Bridge (номер 1):

  1. Management of VPN Server or VPN Bridge.
  2. Management of VPN Client.

Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)
Select 1, 2 or 3: 1

На следующие два вопроса просто нажимаем Enter.

Мы окажемся в командной оболочке SoftEther. Вводим:

> ServerPasswordSet

И дважды задаем пароль, который планируем использовать:

Password: ***********
Confirm input: ***********
The command completed successfully.

Готово — выходим в Linux shell:

> quit

Настройка сервера SoftEther

В нашем примере мы будем выполнять настройку сервера с помощью графической консоли, установленной на Windows. Рассмотрим подробнее:

  1. Установку утилиты для управления SoftEther.
  2. Базовую настройку сервера с помощью мастера настройки.
  3. Создание пользователя для подключения к VPN.
  4. Включение NAT.

Установка утилиты управления сервером VPN

Снова переходим на страницу загрузки SoftEther, выбираем VPN Server Manager и платформу для установки:

Выбираем для загрузки VPN Server Manager

Скачиваем последнюю версию приложения:

Среди списка версий для загрузки, выбираем нужную нам

После загрузки файла, запускаем его — откроется мастер установки. Выбираем установку утилиты для администрирования:

В мастере установки выбираем утилиту для управления softether

На остальные вопросы просто отвечаем Далее. Установка завершена.

Подключение к серверу и начальная настройка

Запускаем установленную утилиту SE-VPN Server Manager (Tools). Переходим к созданию нового подключения, кликнув по New Settings:

Кликаем по кнопке New Settings для создания подключения к серверу

В открывшемся окне заполняем данные по нашему серверу — указываем произвольное имя для подключения, вводим имя сервера или его IP-адрес, выбираем порт для подключения 5555, вводим пароль администратора (который мы создали на шаге выше):

Настраиваем подключение к серверу VPN

Нажимаем ОК.

В следующем окне ставим галочку Remote Access VPN Server (это наиболее встречаемый сценарий работы VPN — клиенты получают доступ к внутренней сети через сервер VPN):

Ставим галочку Remote Access VPN Server

Нажимаем Next.

Подтверждаем наши действия по инициализации настройки:

Подтверждаем применение настроек

Даем произвольное название для Virtual Hub Name:

Задаем название для Virtual Hub Name

Приложение позволяет зарегистрировать DNS имя для нашего сервера в домене softether.net — оставляем предложенное имя или задаем свое:

Указываем имя для нашего VPN сервера

Остальные шаги мастера настройки можно пропустить. Начальная настройка завершена.

Создание пользователя

Для аутентификации на сервере VPN при подключении к нему клиентом, создадим пользователя. Для этого нажимаем по Manage Virtual Hub:

Переходим к настройкам виртуального хаба

Далее кликаем по Manage Users:

Переходим к управлению пользователями

Переходим к созданию нового пользователя, нажав New:

Открываем окно создания нового VPN-пользователя

Заполняем форму создания новой учетной записи — достаточно ввести имя пользователя и пароль:

Вводим данные для создания нового пользователя

* нам доступно несколько способов аутентификации, но в данной инструкции ограничимся входом по паролю.

Нажимаем по OK для создания пользователя и закрываем окно со списком пользователей (Exit).

Включение SecureNAT

В окне настройки виртуального хаба, кликаем по Virtual NAT and Virtual DHCP Server (SecureNAT):

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

Кликаем по Enable SecureNAT:

Разрешаем SecureNAT

Нажимаем OK:

Кликаем по OK

Закрываем окно настройки виртуального хаба.

Наш сервер подготовлен для настройки VPN.

Конфигурирование OpenVPN

SoftEther поддерживаем возможность настройки VPN на базе различных протоколов и технологий. В нашем примере мы сконфигурируем OpenVPN.

Нашу настройку необходимо выполнить на сервере и клиенте. Рассмотрим процесс пошагово.

Настройка сервера

В окне настройки сервера кликаем по OpenVPN / MS-SSTP Setting:

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

Проверяем, чтобы стояла галочка Enable OpenVPN Clone Server Function, а также задаем порт, на котором будет слушать наш сервер OpenVPN:

Включаем OpenVPN, а также задаем порт, на котором он должен работать

* порт 1194 является портом по умолчанию для OpenVPN.

Также кликаем по Generate a Simple Configuration File for OpenVPN Clients — появится окно выбора каталога, в котором нужно сохранить конфигурационные файлы. Переносим на компьютер, с которого нужно подключиться к серверу файл server_openvpn_remote_access_l3.ovpn.

Закрываем окно, кликнув OK.

Настройка клиента

Подробнее работа с клиентом OpenVPN рассмотрена в инструкции Настройка OpenVPN клиента. Мы для примера кратко рассмотрим подключение из под компьютера с Windows.

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

Загружаем клиента OpenVPN для Windows

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:\Users\\OpenVPN\config (предполагается, что системный диск — диск С; — имя учетной записи, под которой мы зашли в систему). И копируем в нее файл server_openvpn_remote_access_l3.ovpn, который мы ранее сгенерировали на сервере.Запускаем с рабочего стола программу «OpenVPN GUI».

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Запуск подключения openvpn-клиента к серверу

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Некоторые полезные команды

Мы уже немного пользовались утилитой командной строки для управления VPN. Это vpncmd. В данном разделе приведем несколько примеров ее использования.

Подключение

Для начала, заходим в консоль управления SoftEther с помощью vpncmd:

/opt/vpnserver/vpncmd

На первый вопрос отвечаем 1 — управление сервером:

By using vpncmd program, the following can be achieved.
Management of VPN Server or VPN Bridge
Management of VPN Client
Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)
Select 1, 2 or 3: 1

На второй вопрос можно не отвечать, нажав Enter:

Hostname of IP Address of Destination:

На третий вопрос вводим имя нашего хаба (его мы задали при настройке сервера через графическую утилиту):

Specify Virtual Hub Name: VPN_Server

Мы должны увидеть:

VPN Server/VPN_Server>

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

Управление пользователями

Для создания пользователя вводим:

> UserCreate

Для удаления пользователя:

> UserDelete

Чтобы сменить пароль пользователю вводим:

> UserPasswordSet

Управление сервером

Для смены пароля администратора сервера вводим:

> ServerPasswordSet

Настройка анонимности

Для обеспечения полной анонимности при использовании VPN-сервера, делаем дополнительные настройки.

Время

Необходимо, чтобы время на сервере совпадало с временем на компьютере/телефоне, откуда мы подключаемся к данному серверу.

На стороне сервера необходимо задать часовой пояс, например, если наш прокси находится в Германии, вводим: timedatectl set-timezone Europe/Berlin

На стороне клиента либо меняем часовой пояс в системе, либо устанавливаем плагин для браузера, например, для Mozilla Firefox и меняем часовой пояс уже в нем.

Отключение icmp

По времени ответа на ping можно определить отдаленноесть клиента от прокси. Чтобы проверку нельзя было выполнить, отключаем на сервере icmp. Для этого создаем файл:

vi /etc/sysctl.d/icmp.conf

net.ipv4.icmp_echo_ignore_all=1

И применяем настройки:

sysctl -p /etc/sysctl.d/icmp.conf

Однако, данный метод сработал не для всех операционных систем на базе DEB. В этом случае есть альтернативный способ — задать блокировку с помощью брандмауэра:

iptables -I INPUT -p icmp —icmp-type echo-request -j DROP

И сохраним настройки:

netfilter-persistent save

Проверяем анонимность

Открываем браузер, который работает через прокси и переходим на страницу 2ip.ru/privacy — кликаем по Проверить:

Переходим к проверке анонимности прокси

Будет выполнена проверка анонимности нашего сервера.

Как создать свой собственный VPN сервер IPsec на Linux?

Использование VPN (виртуальной частной сети) имеет множество преимуществ, некоторые из которых включают обеспечение безопасности в Интернете за счет шифрования трафика и доступа к заблокированному контенту/сайтам/веб-приложениям из любого места.

Не говоря уже о том, что VPN также помогает вам просматривать Интернет анонимно.

Преимущества своего личного VPN

  1. На сторонних сервисах личная анонимность низкая: владельцы VPN-сервера могут собирать о вас совершенно любую информацию – от паролей к учеткам в соцсетях до любимых роликов в pornhub.
  2. На своем сервере все будет намного лучше, деанонимизировать вас могут только спецслужбы тех стран, от которых зависит хостинг вашего сервера (ну и вы сами, по глупости).
  3. Скорость.
  4. На сторонних платных сервисах скорость, как правило, высокая, ведь вам предоставляют приватные серверы, слабо нагруженные.
  5. На своем сервере скорость не хуже, ведь сервер ваш, и канал занимаете только вы.
  6. Анонимность для сайтов и рекламодателей.
  7. На сторонних сервисах анонимность высокая, так как сервер настроен профессионалами.
  8. На своем сервере при правильной настройке тоже все будет хорошо.
  9. Личная анонимность.

Но, как я уже говорил, не стоит воспринимать VPN как панацею от всего и вся. Не стоит также думать, что с использованием VPN вы сможете начать заниматься хакерской деятельностью, ломать сети и воровать кредитные карточки.

Во-первых, такая деятельность в принципе незаконна и неоднозначна с моральной точки зрения. Во-вторых, вас очень быстро обнаружат, обратившись к хостеру, у которого размещен VPN-сервер, и последний быстро сольет все ваши реальные данные правоохранительным органам. В-третьих, для таких вещей используются совсем другие инструменты и подходы.

VPN – это не для хакерства, это для защиты от злоумышленников и тоталитаризма государства, которое посягает на ваши конфиденциальные данные, ваши мысли, ценности и свободы.

Недостатки своего VPN

Конечно, даже у своего VPN есть недостатки:

  1. Некоторые сайты начнут загружаться на языке страны, в которой располагается ваш VPN-сервер. Однако это легко исправить. Поскольку чаще всего мы приходим на какие-либо сайты через поиск в Google, достаточно один раз настроить его выдачу, и с этого момента вы будете направляться на сайты с нужной вам локализацией. Всегда можно выбрать локализацию на самом сайте.
  2. То же самое касается и рекламы. Ее существенная часть начнет отображаться для страны, в которой находится ваш VPN-сервер.
  3. Некоторые российские сервисы блокируют доступ с нероссийских IP-адресов, поэтому VPN при их использовании придется на время отключать.
  4. Снизится скорость загрузки сайтов. По замерам это действительно так, но на практике падение скорости для обычного пользования Интернетом настолько незначительно и неощутимо, что данным недостатком можно пренебречь.

Выбираем страну для своего VPN-сервера

Выбирать страну для своего VPN-сервера стоит по следующим критериям:

  • кратчайшее расстояние до вас – это обеспечит меньший пинг и потери в скорости соединения;
  • минимальное количество запретов на свободу Интернета, доступность любых популярных сервисов;
  • наименьшая политическая напряженность между вашей страной и страной, где будет находиться VPN-сервер. В этом случае ваш трафик теперь уже с VPN-сервера, скорее всего, не будут читать спецслужбы другого государства. Но здесь палка о двух концах. Например, многие российские пользователи предпочитают располагать VPN-сервер в Великобритании именно из-за высокой напряженности между странами, ведь в случае чего, последняя ни за что не сдаст трафик российским спецслужбам. Поэтому данный подход также может быть оправданным.

Для российских пользователей в целом подойдет любая страна Евросоюза, однако практика показывает, что лучшим решением является Германия: отличные пинг и стабильность канала, незначительные потери в скорости и хорошая доступность любых мировых ресурсов.

Если исходить из принципа максимальной защищенности трафика именно от российских спецслужб, то все же лучшим решением будет сервер в Великобритании. На практике же лондонские серверы не всегда хорошо показывают себя с точки зрения стабильности: случаются отвалы, так себе пинг и меньшая, по сравнению с Германией, скорость.

Безусловно, вы можете поднять VPN-сервер и в своей стране, но в этом случае утрачиваются многие (почти все) преимущества. Создавая VPN-сервер в своей стране, вы на блюдечке предоставляете весь свой трафик спецслужбам вашей страны, поскольку сервер, расположенный в вашей стране, подчиняется юрисдикции именно вашей страны. И, установив контроль за вашим трафиком, пусть не у провайдера, а у самого хостера, где работает ваш VPN-сервер, спецслужбы при желании легко достанут вас там. И, конечно, по-прежнему не будут доступны заблокированные ресурсы. Поэтому смысла в таком решении практически нет.

Выбираем хостинг для своего VPN-сервера

Чтобы развернуть свой VPN, нам нужно иметь сервер. Поэтому для начала нам требуется выбрать хороший виртуальный сервер (VPS).

VPS (Virtual Private Server) или VDS (Virtual Dedicated Server) – это хостинг-услуга, где пользователю предоставляется виртуальный выделенный сервер с максимальными привилегиями. VDS или VPS эмулирует работу реального физического сервера: на одном физическом сервере может быть запущено множество виртуальных серверов, каждый из которых имеет определенный процессор, объем памяти, некоторый объем жесткого диска, root-доступ, собственные IP-адреса, порты, а также на нем возможна установка своих операционных систем и программного обеспечения. Обычно в качестве виртуального сервера используются операционные системы Linux.

Вам нужно знать, что VPS-серверы бывают нескольких видов: OpenVZ, Xen и KVM. Для работы VPN-сервера нужен KVM. Тип сервера обычно указан в тарифах хостинга. OpenVZ и Xen тоже иногда подходят, но нужно писать в техподдержку хостинга и спрашивать, подключён ли модуль TUN, и если нет, то могут ли они включить его. Не помешает также спросить, будет ли работать VPN как таковой (даже на KVM) – некоторые компании прикрывают эту возможность.

Критерии выбора

Чтобы выбрать именно то, что нам нужно, давайте определим требования:

  1. Поддержка TUN/TAP. Некоторые хостеры эту технологию не предоставляют вообще, некоторые включают по запросу, некоторые сразу.
  2. Цена. Слишком дорогой брать не стоит, но это на ваше усмотрение.
  3. Страна. Чем ближе к вам дата-центр хостера, тем меньше будет пинг. Но смотрите, чтобы он не попадал под юрисдикцию российских спецслужб и никак от них не зависел. В идеале, как я уже писал выше – Великобритания или Германия.
  4. Размер жесткого диска и скорость его работы не столь важны. Для VPN места потребуется настолько мало, что этим параметром можно пренебречь.
  5. Оперативной памяти не меньше 512 МБ.
  6. Сетевой трафик должен быть либо не ограничен, либо иметь такое ограничение, в которое мы не упремся. Скорость должна быть не менее 100 Мб/сек.

Поднимать свой VPN-сервер мы будем на основе операционной системы Linux Debian, а не Linux Ubuntu, которая считается более популярной.

Не стоит выбирать Ubuntu из-за нестабильности и требовательности к ресурсам, если не хотите получить проблемы с работой сервера. К тому же Ubuntu изначально создавалась именно как пользовательская система, а не серверная. Debian же надежен и стабилен как топор.

Особенности установки

При настройке услуги хостер может просить указать доменное имя и DNS. Нам это в данном случае не важно, поэтому можете писать все, что угодно.

При регистрации и оплате хостер может запросить некоторые ваши данные: ФИО, е-mail, телефон, адрес, Zip code и т. п. Все это можете придумать сами, но смотрите по своему IP. Также могут запросить фото паспорта, банковской карты, с которой проводится оплата (естественно, с закрашенными начальными цифрами номера и закрашенным CVC-кодом), и прочее. Это нормальная ситуация – они хотят убедиться, что вы не мошенник и не пользуетесь чужой картой. Могут и не запросить. Тут как повезёт.

После оплаты и верификации вы получите на свою электронную почту письмо с IP-адресом вашего VPS (Main IP), логином (Username), паролем (Root Password) для входа по SSH. Также должна быть ссылка на панель управления сервером и логин-пароль для входа в панель. Из панели можно включить/выключить/перезагрузить сервер, сбросить пароль root, посмотреть статистику сервера и прочие базовые вещи.

Из наиболее популярных на сегодняшний день глобальных хостинговых компаний можно выделить следующие:

  1. Amazon Web Services.
  2. DigitalOcean.
  3. Hetzner.
  4. Vultr.
  5. Bluehost.
  6. Arubacloud.

Мы сегодня будем настраивать Amazon Web Services (AWS) из-за известности бренда, большого количества доступных географических зон для размещения сервера и высокой стабильности. Многие популярные интернет-сервисы работают на базе AWS, арендуя там серверы для своих нужд, например, Facebook.

На мой взгляд, вряд ли сегодня кто-то может глобально конкурировать с Amazon. Компания была пионером в облачных технологиях и, по сути, открыла эту отрасль. Сегодня AWS предоставляет множество решений для облачных вычислений на любой вкус и цвет, но нам с вами нужна обычная виртуальная машина. Ее мы возьмем в одной из разработок AWS – Lightsail.

Lightsail

Lightsail – это упрощенное решение для создания виртуальных серверов, в отличие от своего старшего собрата EC2. Всё завернуто в очень простой интерфейс, в котором разберется даже новичок, поэтому для нашей цели AWS Lightsail подходит лучше всего.

Вообще же, вы можете арендовать сервер у любой компании. Данная инструкция не сильно зависит от площадки и сработает практически у любого хостера.

Использование VPN-сервера на базе AWS Lightsail будет обходиться вам в 3.5 доллара в месяц. За эти деньги вы получаете машину с 512 Мб оперативной памяти. Подобная конфигурация легко справляется с обработкой VPN-трафика 3-4 устройств. Первый месяц у AWS будет и вовсе бесплатным.

Что касается протоколов VPN-соединения, сегодня их существует несколько: PPTP, L2TP, IPSec, OpenVPN, IKEv2. Не думаю, что вам будет интересно про них читать, поэтому опустим эту информацию. Наиболее популярны на сегодняшний день IPsec, IKEv2 и OpenVPN.

Сегодня существуют готовые решения для развертывания своего VPN-сервера на платформе Linux, например, скрипт Algo (для IKEv2) или Streisand (для OpenVPN), которые нужно просто скачать, распаковать и запустить на сервере. Данные скрипты сами установят, настроят все необходимые пакеты и на выходе предоставят работающий VPN-сервер.

Требования

Свежий CentOS / RHEL или Ubuntu / Debian VPS (виртуальный частный сервер) от любого поставщика VPS.

Настройка IPsec / L2TP VPN-сервера в Linux

Чтобы настроить VPN-сервер, мы будем использовать замечательную коллекцию скриптов оболочки, созданную Lin Song, которая устанавливает Libreswan в качестве сервера IPsec и xl2tpd в качестве поставщика L2TP.

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

Сначала войдите в свой VPS через SSH, затем выполните соответствующие команды для вашего дистрибутива, чтобы настроить VPN-сервер.

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

Однако, если вы хотите использовать свои собственные учетные данные, сначала вам нужно сгенерировать надежный пароль и PSK, как показано далее
# openssl rand -base64 10 # openssl rand -base64 16Затем установите эти сгенерированные значения, как описано в следующей команде, все значения ДОЛЖНЫ быть помещены в «одинарные кавычки», как показано далее:

  1. VPN_IPSEC_PSK – ваш предварительный общий ключ IPsec.
  2. VPN_USER – Ваше имя пользователя VPN.
  3. VPN_PASSWORD – Ваш пароль VPN.

# wget https://git.io/vpnsetup-centos -O vpnsetup.sh && VPN_IPSEC_PSK=’KvLjedUkNzo5gBH72SqkOA==’ VPN_USER=’tecmint’ VPN_PASSWORD=’8DbDiPpGbcr4wQ==’ sh vpnsetup.sh # wget https://git.io/vpnsetup -O vpnsetup.sh && VPN_IPSEC_PSK=’KvLjedUkNzo5gBH72SqkOA==’ VPN_USER=’tecmint’ VPN_PASSWORD=’8DbDiPpGbcr4wQ==’ sudo sh vpnsetup.sh

Основные пакеты, которые будут установлены:

bind-utils, net-tools, bison, flex, gcc, libcap-ng-devel, libcurl-devel, libselinux-devel, nspr-devel, nss-devel, pam-devel, xl2tpd,iptables-services, systemd-devel, fipscheck-devel, libevent-devel и fail2ban (для защиты SSH) и их соответствующие зависимости.

Затем скрипт загружает, компилирует и устанавливает Libreswan из исходного кода, включает и запускает необходимые службы.

После завершения установки будут отображены детали VPN.

Чтобы добавить VPN-подключение на мобильном устройстве, например телефоне Android, выберите «Настройки» -> «Сеть и Интернет» (или «Беспроводная связь и сети» -> «Дополнительно») -> «Дополнительно» -> VPN.

Выберите опцию, чтобы добавить новый VPN. Тип VPN должен бытьIPSec Xauth PSK, затем используйте шлюз VPN и учетные данные, указанные выше.

Как добавить или удалить пользователя VPN на Linux?

Чтобы создать нового пользователя VPN или обновить существующего пользователя VPN новым паролем, загрузите и используйте сценарий add_vpn_user.sh, используя следующую команду wget.

$ wget -O add_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/add_vpn_user.sh $ sudo sh add_vpn_user.sh ‘username_to_add’ ‘user_password’

Чтобы удалить пользователя VPN, скачайте и используйте скрипт del_vpn_user.sh.

$ wget -O del_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/del_vpn_user.sh $ sudo sh del_vpn_user.sh ‘username_to_delete’

Как обновить Libreswan на Linux?

Вы можете обновить установку Libreswan с помощью скрипта vpnupgrade.sh или vpnupgrade_centos.sh.

Обязательно отредактируйте переменную SWAN_VER на версиию которую вы хотите установить в скрипте.

# wget https://git.io/vpnupgrade-centos -O vpnupgrade.sh && sh vpnupgrade.sh # wget https://git.io/vpnupgrade -O vpnupgrade.sh && sudo sh vpnupgrade.sh

Как удалить VPN-сервер на Linux?

Чтобы удалить установку VPN, выполните следующие действия.

На RHEL / CentOS

# yum remove xl2tpd

Затем откройте файл конфигурации /etc/sysconfig/iptables, удалите ненужные правила, отредактируйте файлы /etc/sysctl.conf и/etc/rc.local и удалите строки после комментария #Added by hwdsl2 VPN script в обоих файлах.

На Debian / Ubuntu

$ sudo apt-get purge xl2tpd

Затем отредактируйте файл конфигурации /etc/iptables.rules и удалите все ненужные правила.

Кроме того, отредактируйте /etc/iptables/rules.v4, если он существует.

Затем отредактируйте файлы /etc/sysctl.conf и /etc/rc.local, удалите строки после комментария #Added by hwdsl2 VPN script в обоих файлах.

Не удаляйте exit 0, если запись существует.

При желании вы можете удалить определенные файлы и каталоги, которые были созданы во время настройки VPN.

# rm -f /etc/ipsec.conf* /etc/ipsec.secrets* /etc/ppp/chap-secrets* /etc/ppp/options.xl2tpd* /etc/pam.d/pluto /etc/sysconfig/pluto /etc/default/pluto # rm -rf /etc/ipsec.d /etc/xl2tpd.

На этом этапе ваш собственный VPN-сервер запущен и работает.

Как настроить клиент WireGuard VPN с графическим интерфейсом NetworkManager?


WireGuard — это реализация протокола VPN с открытым исходным кодом, которая быстро набирает популярность среди пользователей VPN благодаря своей скорости, простоте использования и хорошо продуманной кодовой базе. Модуль ядра WireGuard поставляется с основным ядром Linux 5.6 или более поздней версии, а его пользовательские инструменты уже включены в базовые репозитории всех современных дистрибутивов Linux. Если вы хотите настроить DIY VPN-маршрутизатор на общедоступном VPS под вашим контролем, на самом деле нет причин не попробовать WireGuard.

Настройка маршрутизатора WireGuard VPN не требует каких-либо специальных знаний о базовом протоколе VPN, а также не требует изучения загадочного языка конфигурации или исследования огромного пространства конфигурации. Также в разработке находятся различные удобные интерфейсы, которые упрощают настройку VPN на стороне клиента.

Предположения

В этом руководстве я предполагаю, что вы уже где-то настроили маршрутизатор WireGuard VPN (например, общедоступный VPS ), а также следующие настройки:

  1. WAN-адрес VPN-сервера WireGuard: 192.168.122.104.
  2. UDP-порт прослушивания VPN-сервера WireGuard: 51820.
  3. VPN-адрес сервера WireGuard VPN: 10.0.0.1/24.
  4. VPN-адрес клиента WireGuard VPN: 10.0.0.2/24.

Проверьте требования

Чтобы иметь возможность настраивать клиент WireGuard VPN с графическим интерфейсом NetworkManager, вам потребуется NetworkManager версии 1.26.2 или выше . Поэтому, прежде чем продолжить, сначала проверьте версию своего NetworkManager. Этому требованию соответствуют Ubuntu 20.10, Fedora 33 и Arch Linux 2020.09.01 или новее.

Установите WireGuard

Установите WireGuard с менеджером пакетов по умолчанию.

Для Ubuntu:

$ sudo apt install wireguardДля Fedora:

$ sudo dnf install wireguard-tools

Для Arch Linux:

sudo pacman -S wireguard-tools

Создайте пару криптографических ключей

Затем создайте пару открытого/закрытого ключей для клиента WireGuard VPN. Для этого сначала переключимся в корень. Остальные шаги в руководстве будут выполняться от имени пользователя root.

$ sudo -iИспользуйте команду wg, чтобы создать пару ключей и сохранить их в /etc/wireguard.

cd /etc/wireguard umask 077 wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Добавьте открытый ключ клиента на сервер WireGuard VPN

Чтобы клиент WireGuard мог взаимодействовать с сервером WireGuard VPN, вам необходимо явно добавить открытый ключ клиента на сервер VPN. В конце концов, WireGuard — это одноранговая VPN. Итак, войдите на хост-сервер WireGuard VPN и выполните следующую команду.

wg set wg0 peer allowed-ips

Создание сетевого подключения

Затем запустите nm-connection-editor из командной строки и добавьте новое сетевое соединение для WireGuard VPN. Обязательно запускайте nm-connection-editorкак root, так как он должен создать файл конфигурации в /etc/NetworkManager/system-connections, nm-connection-editor. В графическом интерфейсе сетевых подключений нажмите кнопку +.

NetworkManager версии 1.26.2 и выше позволяет создавать соединение типа WireGuard. Таким образом, выберите WireGuard в качестве типа подключения.

Откроется окно редактора соединений, как показано ниже. На вкладке WireGuard установите Interface name для wg0 и заполните Private key. Закрытый ключ должен быть получен из содержимого /etc/wireguard/privatekey, которое вы только что создали на шаге 3. Затем нажмите кнопку Add внизу, которая позволяет вам указать сервер WireGuard VPN в качестве однорангового узла.

На WireGuard GUI редактора пиров, заполнить поля Public key, Allowed IPs и Endpoint. Открытый ключ должен поступать с сервера WireGuard. Конечная точка состоит из WAN IP-адреса VPN-сервера и UDP-порта, который сервер прослушивает. Заполнив их, нажмите кнопку Apply.

На этом этапе вы увидите, что VPN-сервер добавлен в качестве однорангового узла:

Затем перейдите на IPv4 вкладку Settings и настройте частный IP-адрес VPN, который будет назначен клиенту WireGuard VPN, то есть 10.0.0.2/24. В качестве шлюза, указать VPN IP — адрес сервера VPN WireGuard, который 10.0.0.1/24. В качестве DNS-серверов вы можете выбрать любой общедоступный DNS-сервер (например, 8.8.8.8). Щелкните по кнопке Save.

Теперь перейдите на вкладку General и установите флажок рядом с Connect automatically with priority. Это автоматически активирует это соединение WireGuard и установит соединение VPN с сервером WireGuard VPN. Нажмите кнопку Save, чтобы завершить.

Проверьте подключение WireGuard VPN

На этом этапе соединение WireGuard VPN должно быть установлено, а весь исходящий трафик от клиента должен маршрутизироваться через сервер WireGuard VPN.

Чтобы проверить подключение WireGuard VPN на стороне клиента, вы можете попробовать выполнить эхо-запрос внешнего хоста (например, 8.8.8.8) с хоста клиента. Чтобы убедиться, что трафик ping маршрутизируется через сервер WireGuard VPN, используйте команду ip.

Команда ip route get показывает маршрут, используемый для достижения указанного пункта назначения. Вывод команды выше подтверждает, что трафик, предназначенный для 8.8.8.8 маршрутизатора, маршрутизируется через интерфейс wg0, а не через WAN-интерфейс хоста.Другой способ проверить подключение к VPN — запустить tcpdump на виртуальном интерфейсе WireGuard wg0 и проверить, видит ли интерфейс ICMP-запрос и ответный трафик, сгенерированный командой ping.

После успешного создания подключения WireGuard с помощью графического интерфейса Network Manager вы можете управлять подключением из командной строки nmcli следующим образом. Просто запустите, nmcli чтобы увидеть статус VPN-соединения.

Чтобы просмотреть подробные свойства подключения WireGuard VPN:

Чтобы запустить или остановить WireGuard VPN:

nmcli connection up ‘WireGuard connection 1’ nmcli connection down ‘WireGuard connection 1’

Чтобы проверить статус автозапуска WireGuard VPN:

nmcli connection show ‘WireGuard connection 1’ | grep autoconnect

Чтобы включить / выключить автоматический запуск WireGuard VPN:

nmcli connection modify ‘WireGuard connection 1’ connection.autoconnect yes nmcli connection modify ‘WireGuard connection 1’ connection.autoconnect no

Чтобы удалить соединение WireGuard VPN:

nmcli connection delete ‘WireGuard connection 1’

Устранение неполадок WireGuard VPN

Вы не можете проверить связь с частным IP-адресом VPN-сервера WireGuard ( 10.0.0.1).

Решение №1

Проверьте доступность порта UDP

Убедитесь, что порт прослушивания UDP сервера VPN доступен для клиента. Чтобы проверить, так ли это, используйте  команду nc -zvu<wan-адрес vpn-сервера=»»><udp-порт>.

Если вы не можете связаться с портом UDP, вероятно, это брандмауэр на стороне сервера, блокирующий входящий трафик на порт UDP. Обязательно откройте порт в брандмауэре на стороне сервера.

Решение №2

Проверьте, добавлен ли открытый ключ клиента к VPN-серверу.Другая возможность заключается в том, что вы забыли добавить открытый ключ клиента к серверу WireGuard VPN. Как описано в шаге 4 этого руководства, используйте wgдля этого команду: wg set wg0 peer allowed-ips</udp-порт></wan-адрес>.

Лучшие бесплатные VPN для Linux

Мы протестировали более 60 бесплатных VPN на основе скорости, безопасности, совместимости и многого другого, чтобы составить список наиболее удовлетворительных бесплатных VPN-сервисов для Linux. Используя любую из этих VPN, вы можете получить надежную защиту и разумную скорость в любом дистрибутиве Linux, который вы используете:

Windscribe

  1. Надежные протоколы шифрования.
  2. Предлагается бесплатная версия.
  3. 3-дневная гарантия возврата денег.
  4. 50 серверных локаций (11 в бесплатной версии).
  5. Принимает биткойн-платежи.
  6. Предлагает шифрование OpenVPN.

Windscribe — мощный бесплатный VPN для Kali Linux и других дистрибутивов. Он предлагает совместимые версии для различных популярных дистрибутивов Linux, включая Debian,Fedora,CentOS 6+ и Ubuntu.

Кроме того, на официальном веб-сайте Ubuntu доступны специальные руководства по установке, и он также поддерживает как OpenVPN, так и IKEv2.

Пользователи могут получить доступ к 10 серверам в бесплатной версии, используя 256-битное шифрование для защиты пользовательских данных. Он предлагает 10 ГБ данных в месяц, что очень много, учитывая, что большинство бесплатных VPN предлагают ограниченный объем данных.

Его бесплатные серверы доступны в США, Канаде, Франции, Германии, Нидерландах, Норвегии, Румынии, Швейцарии, Великобритании и Гонконге.

Вы можете использовать Windscribe для доступа к стриминговым сервисам с географическим ограничением.

Windscribe также имеет довольно сильную политику конфиденциальности с точки зрения пользователя. Хотя он хранит журналы некоторой информации, связанной с учетной записью пользователя, ни одна из них не может быть связана с каким-либо конкретным пользователем, поэтому ваша конфиденциальность защищена.

Windscribe вполне удовлетворительна для бесплатного сервиса в плане скорости и совместима с торрентами. Недостатком является то, что он имеет ограничение данных 10 ГБ в месяц. Таким образом, хотя он работает с US Netflix, вы не сможете транслировать в лучшем случае более 5 часов без исчерпания данных.

Плюсы

  1. Неограниченное количество подключений устройств одновременно.
  2. Нет штампов IP.
  3. 10 серверных локаций.
  4. Отличные скорости.
  5. Поддерживает P2P.

Минусы

  1. Только 10 ГБ данных в месяц.
  2. Несовместим с разблокировкой потоковых сервисов.

ProtonVPN

  1. Бесплатная версия для пользователей.
  2. Пользователи могут отменить в любое время.
  3. Встроенный переключатель уничтожения.
  4. Возможность множественного ожидания.
  5. OpenVPN и IKEv2 (для Mac).
  6. Tor-серверы.

ProtonVPN — лучший бесплатный VPN для Linux (Ubuntu), предлагающий неограниченный объем данных. Сервис известен своей отличной безопасностью и быстрой работой.

Он предлагает инструмент командной строки для Linux, который работает с широким спектром дистрибутивов, включая SUSE, Fedora, CentOS, Debian, Ubuntu и LinuxMint.

У провайдера есть 3 сервера в бесплатной версии, включая США, Японию и Нидерланды. Это один из немногих бесплатных провайдеров, предлагающих голландские серверы, что делает его одним из лучших VPN для Нидерландов и Великобритании.

ProtonVPN работает с US Netflix, поэтому вы можете разблокировать его из любого места.

Вы можете использовать его пакет OpenVPN для настройки ваших дистрибутивов Linux. Однако не удивляйтесь его скорости, так как бесплатный план ограничивает скорость соединения.

Политика конфиденциальности ProtonVPN не совсем гарантирует нулевое ведение журнала, поскольку компания сохраняет определенную информацию, такую ​​как IP-адрес клиентов. Несмотря на это, страница политики конфиденциальности написана очень четко, и это свидетельствует о надежности VPN.

Одним из лучших аспектов VPN является шифрование AES-256, а также достаточно высокая скорость для компьютеров на базе Linux. Кроме того, это одна из немногих CLI VPN для Linux со встроенным аварийным выключателем.

К сожалению, его бесплатная версия не поддерживает торренты. Однако вы можете подписаться на его платную версию, которая также предлагает уникальную защиту Secure Core Protection, а также расширенные функции.

Плюсы

  1. Отличные функции безопасности.
  2. Работает с Нетфликс.
  3. Неограниченные данные.
  4. Разрешает P2P.
  5. Политика отсутствия регистрации.

Минусы

  1. Очень маленький доступ к серверу для бесплатных пользователей.
  2. Поддержка в чате недоступна.

Получить ProtonVPN для Linux

TunnelBear

  1. Функции мультилогина.
  2. Защищает от проблем утечки DNS.
  3. Предлагает небольшой бесплатный план.
  4. Блокировщик для Google Chrome.
  5. Совместимость с ведущими платформами.

TunnelBear — это бесплатный VPN, который поддерживает только дистрибутивы Ubuntu и Fedora. Пользователи Linux не являются приоритетом для TunneBear, поскольку пользователи других дистрибутивов, таких как Mint, Slackware и Gentoo, не могут использовать этот бесплатный VPN. Если вы используете один из поддерживаемых дистрибутивов, вы можете скачать бесплатную VPN для Linux и использовать ее уже сегодня.

Провайдер устанавливает ограничение в 500 МБ в месяц, что намного меньше. Однако этот лимит можно увеличить до 1,5 ГБ, если вы напишете об этом в рекламных целях.

Он предлагает серверы в 49 странах, таких как США, Великобритания, Канада, Австралия, Новая Зеландия, Германия и другие.

У TunnelBear есть специальные приложения для Windows, macOS, Android и iOS, но не для Linux. Однако он предлагает ограниченную поддержку посредством ручной настройки в Ubuntu.

TunnelBear предлагает одинаковое количество серверов как для бесплатных, так и для платных пользователей.

Политика ведения журналов ориентирована на конфиденциальность, и провайдер больше не требует от пользователей указывать свои полные имена при регистрации. Провайдер перестал требовать полное имя при регистрации после того, как пользователи выразили недовольство этим странным требованием защиты конфиденциальности.

В целом, TunnelBear — достойный сервис, если вы хотите повысить конфиденциальность в Интернете при просмотре веб-страниц в Linux. Тем не менее, его небольшая пропускная способность и ограниченные функции в бесплатной версии делают его непригодным для чего-то большего.

Кроме того, этот VPN предлагает лучшие функции безопасности, такие как шифрование AES 256, Vigilant Bear (функция блокировки вредоносных программ) и политика отсутствия журналов.

Плюсы

  1. Отличные скорости.
  2. Пошаговая установка для дистрибутивов Linux.
  3. 256-битное шифрование AES.
  4. Политика отсутствия журналов.
  5. Не работает с Netflix США.

Минусы

  1. Максимальный объем данных 500 МБ/месяц.
  2. Работает только с Ubuntu и Fedora..

Hide.Me

  1. Надежное шифрование.
  2. P2P-совместимость.
  3. Бесплатный пакет.
  4. Безопасные способы оплаты.
  5. 14-дневная гарантия возврата денег.
  6. Легко использовать.

Hide.Me — это Linux VPN без малайзийского доступа. Он предлагает лимит 10 ГБ в месяц и 5 серверов в бесплатной версии: Канада, Сингапур, Нидерланды, Запад США и Восток США. Тем не менее, его сила заключается в том, что он предлагает протоколы OpenVPN и IKEv2 для Linux Ubuntu.

Этот VPN стоит иметь, если вы можете игнорировать ограничение пропускной способности в 10 ГБ из-за его надежности и безопасности.

Для пользователей Linux доступны удобные руководства по установке. Однако клиент Ubuntu поддерживает только PPTP (протокол двухточечного туннелирования), который устарел и имеет проблемы с безопасностью.

Hide.Me работает с самыми популярными стриминговыми сервисами.

С Hide.Me нет никаких компромиссов в отношении вашей безопасности, поскольку он предлагает такие функции безопасности, как аварийный выключатель, 256-битное шифрование AES, защита от утечек DNS и политика отсутствия журналов.

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

Плюсы

  • 10 ГБ в месяц бесплатно.
  • Защита от утечки IP.
  • Предлагает как IKEv2, так и OpenVPN для Linux.
  • Без рекламы.

Минусы

  • Сервера только в 5 локациях.
  • Разрешает подключение только 1 устройства.

5 VPNBook — бесплатный VPN для Linux, предлагающий OpenVPN для потоковой передачи

  1. Бесплатный VPN-сервис.
  2. 16 серверов присутствуют в 6 странах.
  3. Предлагает неограниченную пропускную способность.
  4. AES-256-битное шифрование военного уровня.
  5. Отсутствие утечек DNS и IP.
  6. 5 мультилогинов.

VPNBook — это бесплатный VPN-сервис для Linux, включая Ubuntu, Debian и Linux Mint. Linux — отличный выбор, потому что он имеет специальную настройку, которая предоставляет пользователям пошаговое руководство по установке профиля OpenVPN в Ubuntu. Это отличный выбор для пользователей, которые ищут бесплатную VPN для Linux Mint.

Поскольку это совершенно бесплатно, а у каждой бесплатной VPN есть определенные недостатки, вам придется мириться с обычной рекламой и всплывающими окнами. VPNBook поставляется со встроенными утечками IP и DNS.

VPNBook защищает вас от утечек IP-адресов во время сеансов.

VPNBook имеет около 11 серверов в 6 странах, включая США, Германию, Францию, Канаду, Великобританию и т. д. Используя эти серверы, вы можете легко получить доступ к ограниченным потоковым сайтам, таким как US Netflix, Hulu, BBC iPlayer и Amazon Prime Video.

Ему не хватает безопасности, потому что он поставляется с 128-битным шифрованием AES, а не с самым безопасным 256-битным. И он также хранит некоторые пользовательские журналы, включая IP-адреса и временные метки.

Плюсы

  • Неограниченные данные.
  • Работает с Netflix, Hulu и т. д.
  • Разблокирует Netflix США.

Минусы

  • Всего 11 серверов в 6 странах.
  • Обычные объявления.
  • использует 128-битное шифрование.

Как выбрать лучший бесплатный VPN для Linux?

Бесплатные VPN для Linux, попавшие в этот список, были выбраны по нескольким критериям:

Политика ведения журнала

Конфиденциальность — это не то, что пользователи Linux могут поставить под угрозу. Вот почему мы  придаем наивысший приоритет всем политикам ведения журналов VPN, которые мы рекомендуем для пользователей Linux.

Не все VPN имеют идеальную политику ведения журналов, но все сервисы, упомянутые в этом списке, в худшем случае хранят только минимальную информацию о вас.

Совместимость с Linux

Ни один VPN не будет полезен для пользователей Linux, если он не поддерживает дистрибутивы Linux. Однако VPN совместимы с некоторыми из самых популярных дистрибутивов Linux, включая Debian, Mint, Ubuntu, Fedora, CentOS и т. д.

Скорость

Важно иметь Linux VPN, который обеспечивает высокую скорость. Вот почему мы тестируем все VPN на скорость, прежде чем включать их в какой-либо список. Все эти VPN для Linux были приняты во внимание после того, как они прошли эталонные тесты скорости.

Безопасность

Шифрование важно для защиты от взлома и перехвата со стороны мошеннических онлайн-объектов. Как минимум, длина шифрования 128 бит необходима для современного стандарта, такого как AES-128. Большинство VPN в этом списке обеспечивают еще более высокий уровень шифрования, чем этот, то есть AES-256.

Имеет ли значение дистрибутив ОС Linux при выборе VPN?

Различные дистрибутивы Linux, такие как Mint, Kali и Ubuntu, основаны на Debian. По сути, все эти дистрибутивы работают одинаково. Это означает, что между ними нет большой разницы, и они используют одни и те же пакеты.

Однако, если вы используете дистрибутив на основе Red Hat, вы будете использовать пакет RPM. Она немного отличается от версии Debian. Но дистрибутив с поддержкой Debian также поддерживает Red Hat.

Какой дистрибутив Linux лучше всего подходит для обеспечения конфиденциальности и безопасности?

Если вы беспокоитесь о своей безопасности и конфиденциальности, переход с Windows или Mac на Linux (дистрибутив с открытым исходным кодом) — отличное решение. Microsoft и Apple сотрудничают с правоохранительными органами и собирают личные данные своих пользователей. Например, Microsoft использует данные для рекламы.

Кроме того, и macOS, и Windows имеют закрытый исходный код, поэтому пользователи не могут взглянуть на источник и выявить бэкдоры и уязвимости. Linux, с другой стороны, является системой с открытым исходным кодом, поэтому зрители могут взглянуть на ее исходный код.

Однако не все дистрибутивы Linux одинаковы, и некоторые из них более безопасны, чем другие. Если вы ищете дистрибутив для повседневного использования с высокой степенью конфиденциальности, мы рекомендуем использовать Ubuntu Privacy Remix. Это дистрибутив на основе Ubuntu, в котором все данные хранятся на зашифрованных внешних носителях, таких как съемные жесткие диски. Предполагается, что UBR невосприимчив к вирусам и заражению вредоносным ПО.

Вам все равно нужно будет использовать VPN для шифрования интернет-трафика. Большинство упомянутых выше VPN отлично работают с UBR.

Если вы хотите попробовать что-то другое и хотите полной анонимности, вы можете использовать TAILS. Это сокращение от Amnesiac Incognito Live System и дистрибутив Linux от создателей сети Tor. ОС устанавливается на USB-накопитель, который можно подключить к устройству. Это обеспечивает большую анонимность, поскольку весь ваш трафик перенаправляется через сеть Tor. Таким образом, он не оставляет следов даже после извлечения USB из устройства.

TAILS использует различные инструменты и протоколы шифрования, включая хэширование и криптографическую подпись. Он также «амнезиачен», поэтому он работает в оперативной памяти компьютера, а не записывает на жесткий диск.

  • Vpn для ноутбука бесплатно для windows 10 скачать бесплатно
  • Vpn с пробным периодом для windows
  • Vpn для скачивания windows 11
  • Vpn для приложений windows бесплатно
  • Vpn россия бесплатно скачать для windows