Debian настройка vpn клиента

Обновлено: 01.07.2024

В данной статье подробно описывается, как получить подключение на OpenVPN с использованием Debian Linux. Эти команды запускаются от рута.

Что такое OpenVPN?

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

Почему использовать OpenVPN?

Говоря «безопасные подключения» - подразумеваем OpenVPN. Если вы не хотите, чтобы кто-либо шпионил (занимался снупингом) за вашим интернет трафиком, используйте OpenVPN для маршрутизации всего вашего трафика через сильно зашифрованный, безопасный туннель.

Системные требования

Для работы OpenVPN нужны минимальные требования. Система с 64 MB оперативной памяти и 1 GB места на жёстком диске достаточно для OpenVPN. OpenVPN работает почти на всех основных системах.

Установка и настройка OpenVPN на Debian

Установка OpenVPN on Мастер-сервер

Запустите следующую команду для установки OpenVPN.

По умолчанию скрипты easy-rsa scripts устанавливаются в директорию ‘/usr/share/easy-rsa/‘. Поэтому нам нужно скопировать эти скрипты в нужное расположение, например /root/easy-rsa.

Генерируем CA сертификат и CA ключ

Откройте файл ‘vars‘ и сделайте следующие изменения, но перед внесением изменений я предлагаю сделать резервную копию.

Используя ваш текстовый редактор измените значения по умолчанию для easy-rsa.

Например, добавьте в самый низ:

Здесь я использую 4096 битный ключ. Вы можете по своему использовать 1024, 2048, 4096 или 8192 битный ключ.

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

Очистим все сертификаты, которые были сгенерированы ранее.

Далее запустите следующую команду для генерации сертификата CA и ключа CA.

Сгенерируйте сертификат сервера следующей командой. Вместо «server» можно подставить любое имя сервера.

Сгенерируйте PEM сертификат Diffie Hellman PEM.

Сгенерируйте клиентский сертификат. Вместо «client» можно подставить ваше имя клиента.

Сгенерируйте код HMAC.

Скопируйте сертификаты на машины клиента и сервера следующим образом.

  • Убедитесь, что ca.crt присутствует и на клиентской и на серверной машинах.
  • Ключ ca.key должен быть на машине, сгенерировавшей ключ.
  • Сервер требует server.crt, dh4096.pem, server.key и ta.key.
  • client.crt, client.key и ta.key должны быть на клиенте.

Для установки сертификатов на сервере запустите команды.

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

Теперь вам нужно настроить OpenVPN. Откройте фйл ‘/etc/openvpn/server.conf‘. Пожалуйста, сделайте изменения, как написано ниже.

Запустите следующую команду для настройки OpenVPN запускаться при загрузке.

Запустите службу OpenVPN.

Включение перенаправления и IPTABLES

Создайте файл vpn_firewall.sh

B этот файл скопируйте следующее содержимое, отредактировав его под свои нужды. Обратите внимание на:

  • PRIVATE=10.8.0.0/24 – измените подсеть в соответствии с вашими настройками. Если делали по этой инструкции, то менять ничего не нужно.
  • имя интерфейса - eth0, у вас может быть другое значение, измените его на своё везде, где оно встречается
  • в строке iptables -A INPUT -p tcp --dport 22 -j ACCEPT мы открываем доступ к порту 22, чтобы могли подключиться по SSH, если у вас нестандартный порт, то обязательно отредактируйте его, поскольку может получиться так, что после применения этого файла вы не сможете подключиться к вашему серверу по сети, добавьте нужно количество строк с необходимыми вам портами

Проверить работу файла:

ОБЯЗАТЕЛЬНО проверьте работу файла ДО добавления его в автозагрузку. Отключитесь и подключитесь по SSH чтобы убедиться, что всё действительно работает.

Установка OpenVPN на клиенте

Запустите следующую команду для установки OpenVPN на клиентской машине.

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

  • /etc/openvpn/certs/ca.crt
  • /etc/openvpn/certs/client.crt
  • /etc/openvpn/certs/client.key
  • /etc/openvpn/certs/ta.key

Используя текстовый редактор, настройте конфигурацию OpenVPN клиента в ‘/etc/openvpn/client.conf‘ на клиенте. Пример конфигурации ниже:

Обратите внимание на строку remote 185.117.153.79 – вам обязательно нужно заменить это значение на IP вашего собственного VPN сервера!

Запустите следующую команду для настройки OpenVPN запускаться при загрузке.

Запустите службу OpenVPN на клиенте.

Как просматривать логи OpenVPN

Для наших настроек это делается так:

Ещё это можно делать, например, командой:

Настройка входа в OpenVPN по логину и паролю

Принцип работы с подключением по логину и паролю следующий:

  • OpenVPN не может проверять действительность логина и пароля;
  • вместо проверки OpenVPN сохраняет присланные ей логин и пароль в файл со случайным именем в директорию, которую мы указали в tmp-dir (в нашем случае это /tmp).
  • после этого OpenVPN запускает скрипт, который мы указали в auth-user-pass-verify (в нашем случае это /etc/openvpn/verify.sh), в качестве аргумента этому скрипту передаётся имя только что сохранённого файла с логином и паролем.
  • если от скрипта получен код выхода 0, то OpenVPN авторизует клиента, если 1, то считает, что логин или пароль неверны.
  • после этого OpenVPN удаляет временный файл.

Схема работы, мягко говоря, так себе. Поскольку предусматривает хранение паролей в открытом виде и на сервере и на клиенте…

Внесём изменения в конфигурационный файл сервера:

Добавим туда следующие строки:

копируем туда следующий код (можете придумать свой механизм аутентификации):

Делаем файл исполнимым:

Файл с паролями /etc/openvpn/user.pass выглядит так:

то есть идёт через пробел пара логин:пароль. Пароль находится в открытом виде!

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

и создаём соответственно файл pass.txt, где будет находится логин и пароль в таком виде:

Примечание: Если в параметре auth-user-pass убрать путь к файлу, будет запрашиваться логин/пароль.



Ничего не предвещало беды, как вдруг в 2 часа ночи раздался телефонный звонок.

— Алло, милый! У меня youtube не работает!
— Прекрасно, иди спать!
— Нууу! Там новая серия вышла!
— Завтра всё сделаю!
— Ну Заяя, нуууу!
— Ладно! Ладно! Сейчас.

Начало

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

Прокси, тем более публичные, это не серьезно, проблемно и очень не безопасно, нам нужен VPN подумал я, и поэтому решил — пока меня не отвлекают надо приступить к реализации. Для начала выберем сервер.

vServer VQ 7 — от Hetzner подойдет, цена вопроса всего 7.90 Евро/мес, а т.к. ничего кроме VPN мы запускать пока не планируем, этой простейшей конфигурации вполне хватит.
Как зарегистрироваться и купить сервер, объяснять не буду, скажу только что у меня попросили любой документ удостоверяющий личность, на котором видна дата рождения. Платил картой VISA.

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


И так, мы зарегистрировались и купили vServer VQ 7, заходим в админку и видим наш сервер


Теперь установим на него debian (кстати это можно сделать прямо во время оформления заказа). Переходим на вкладку Linux, выбираем конфигурацию Debian 6.0 minimal, 32bit, жмем Activate.

Установка начнется при следующем запуске сервера, т.е. нам надо его перезагрузить, сделать это можно на вкладке vServer, или по SSH.
Через некоторое время на почту придет письмо что все готово. Там же будет и пароль root пользователя, подключаемся по SSH к серверу и приступаем к настройке.

Всё, серверная часть готова. Можно подключаться. Для перехода к следующим этапам, надо выгрузить с нашего сервера сертификаты из папки: Это можно сделать при помощи SSH, либо mc если у вас есть ftp сервер. Нам нужны только некоторые файлы, какие именно читаем ниже.

Настройка android клиента (root не требуется)

  • Basic > Server Address: IP адрес вашего VPN сервера, либо имя домена если вы его привязали
  • Type: PKCS12 File
  • Select: Выбираем наш файл *.p12
  • PKCS12 Password: вводим пароль импорта сертификата, заданный при его генерации.
  • upd: используйте последнюю версию приложения, в ней проверка remote-cert-tls server включена по-умолчанию. либо включите вручную в настройках авторизации, проверку сертификата сервера
  • Если вы включили tls-auth на сервере, включите в настройках профиля tls-auth и выберите ta.key

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

1. Скачиваем и устанавливаем клиент: 32bit | 64bit
2. Создаем файл конфигурации myvpnconfig.ovpn (обычный текстовый файл):


3. Создаем batch скрипт (start_my_vpn.cmd) для запуска VPN сессии:

4. Скрипт и конфиг ложим в одну папку, в эту же папку кидаем vpn.windows.p12 сертификат, брать его тут
5. Готово, ярлык на скрипт кидаем на рабочий стол, запускаем от имени администратора или от пользователя с его правами, при запуске он попросит ввести пароль для «импорта» сертификата.

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

Для не параноиков или автостарта туннеля без ввода пароля, можно вместо p12 использовать связку сертификатов ca.crt, vpn.windows.key и vpn.windows.crt, выглядит это так,
вместо пишем:

Файлы брать все там же и положить в папку с myvpnconfig.ovpn и start_my_vpn.cmd.

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

Настройка на примере debian 6.0

Готово. Не забудьте положить vpn.debian.p12 или ca.crt, vpn.debian.key и vpn.debian.crt в папку со скриптом и файлом конфигурации.
Для подключения к VPN, просто выполните с повышенными привилегиями:

Настройка роутера на dd-wrt (Big или Mega)

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

1. Перейдите на страницу router_ip/Diagnostics.asp (тех.обслуживание->команды)
2. Если у вас уже есть «Параметры запуска», то нажмите Редактировать и добавьте ниже приведенный код, после, либо до вашего. Если нет то просто вставьте его в «Командный процессор» и нажмите «Сохранить параметры запуска»
3. Собственно сам код запуска:

4. Переменные CA_CRT, CLIENT_CRT и CLIENT_KEY, это содержимое файлов ca.crt, vpn.ddwrt.crt и vpn.ddwrt.key соответственно, просто открывайте их текстовым редактором и копируйте содержимое, в vpn.ddwrt.crt блок будет в самом конце, в двух других копируем содержимое полностью. Брать файлы известно где
5. Не забудьте заменить IP_ВАШЕГО_СЕРВЕРА и нажать «Сохранить параметры запуска».
6. Перезагружаем роутер, пробуем подключиться к нему с другого устройства в вашем VPN. Посмотреть VPN IP адрес роутера можно например через ifconfig.

Настоятельно рекомендую запускать VPN туннель сразу после того как вы подключаетесь к открытым точкам доступа Wi-Fi.
Как показала моя последняя командировка, ловить в wi-fi сетях гостиниц и прочих учреждений не заботящихся о безопасности своих клиентов можно очень долго и невозбранно (особенно удивляет обилие сканов паспортов, в почтовых ящиках тур. агентов).

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

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

Поддержки VPN соединения с протоколом L2TP/IPSec в системе Linux по умолчанию нет. Я использую в качестве основной системы Debian 10 и у меня его нет.

список возможных соединений debian 10

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

Посмотрев дистрибутив Linux mint и Ubuntu оказалось, что и там нет необходимых протоколов.

Так как все эти системы основаны на Debian, решение данного вопроса будет одинаковым на всех системах.

Далее я опишу процесс настройки VPN протоколу L2TP в системе Debina 10.

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

Необходимые пакеты L2TP для VPN соединения есть в репозиториях Debian 10, поэтому просто ставим их при помощи менеджера пакетов Synaptic.

Открываем менеджер и в поиске пишем L2TP.

после поиска отмечаем для установки два пакета

vpn network-manager-l2tp выбор пакетов

Отмечаем нужные пакеты для установки

vpn network-manager-l2tp установка пакетов

В результате выделится зеленым три пакета, для установки.

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

Устанавливаем пакеты для L2tp в терминале

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

Обновляем список пакетов

Устанавливаем пакет network-manager-l2tp

Устанавливаем пакет network-manager-l2tp-gnome

vpn l2tp установка пакетов из терминала
vpn l2tp установка пакетов из терминала

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

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

vpn l2tp настраиваем соединение

Далее все заполняем согласно вашим данным, все данные по подключению вам должен предоставить администратор.

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

настраиваем соединение

Не забудьте указать PSK ключ для подключения, ниже показано где его ввести

настраиваем соединение

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

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

Итак для настройки VPN клиента в Debian, да и в Ubuntu в принципе тоже, нужно пройти следующий шаги:

  1. Первым делом нужно установить сам пакет отвечающий за соединение:
  2. На втором шаге нужно установить глобальные настройки PPP, делается это все в файле options.pptp

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

и запишем в него следующие строки

Содержимое файла будет следующим

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

4 ответа к «Настройка PPTP клиента в Debian 8.»

Вы бездарность, ваш конфиг не работает!

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

У меня был Orange Pi zeroс установленным на нем ОС Rasbian (Debian 8 Stretch). Провайдер для доступа в сеть Интернет предоставил pptp-протокол. Мне удалось настроить соединения не без этой статьи. Спасибо автору статьи.
Ниже я опишу все что мне помогло настроить VPN-соединение для выхода в сеть Интернет через провайдера:
В первую очередь установил пакеты ppp и pptp-linux:
>>> apt install pptp-linux ppp
Для настройки VPN-соединения, провайдер должен выдать параметры этого соединения. Предположим они такие:
Логин: user22323
Пароль: 1378
Адрес VPN -сервера : 10.10.0.24
В моем случае провайдер выдал мне статический IP адрес и DNS-сервера
IP адрес: 10.10.***.***
Шлюз: 10.10.***.***
У вас возможно другие данные, которые вам должен предоставить ваш провайдер.
Если провайдер предоставляет вам настройки сети через DHCP
Делается это элементарно. В файл /etc/network/interfaces
>>> nano /etc/network/interfaces
Добавляете следующие строки:
auto eth0
iface eth0 inet dhcp
В моем случае, если в локальной сети не используется сервер DHCP,вводим параметры соединения вручную:

auto eth0
iface eth0 inet static
address 10.x.x.x
netmask 255.255.255.
gateway 10.x.x.1
Настройка соединения по VPN заключается в редактировании следующих файлов:
/etc/ppp/chap-secrets
/etc/ppp/options.pptp

Файл /etc/ppp/options.pptp устанавливает параметры, которые будут применяться ко всем туннелям. В большинстве случаев, можно воспользоваться только этими параметрами:
lock
noauth
nobsdcomp
nodeflate

Файл /etc/ppp/chap-secrets содержит данные для авторизации, в частности, пары логин и пароль, используемые при авторизации через протокол проверки пароля CHAP. В данном файле вам необходимо указать логин, пароль, а иногда и название PPTP-сервера, к которому будет происходить подключение. Формат записи данных в этот файл следующий:

Для того, чтобы после каждого запуска и остановки VPN-подключения вам не приходилось вручную менять маршрут по-умолчанию default route, есть два решения:
параметр defaultroute/replacedefaultroute
скрипты в каталогах /etc/ppp/ip-up.d/ и /etc/ppp/ip-down.d/options.pptp

Тоннель VPN запускается командой pon:
для примера:
>>>pon subnet

Читайте также: