Содержание:
- Теория
- Установка OpenVPN
- Запуск сервера OpenVPN
- Настройка сервера OpenVPN
- Встраивание сертификатов в файл .ovpn
- Заключение
Virtual Private Network (VPN) дословно переводится как «виртуальная частная сеть». VPN создаёт надёжное шифрованное соединение между устройствами — VPN-туннель. Благодаря такому соединению, при подключении к незащищённой сети (например, WiFi в кафетерии), трафик пройдёт через VPN-сервер, что защитит его от постороннего вмешательства.
Бесплатные VPN и прокси отличаются нестабильностью из-за множества активных пользователей. Такие сервисы могут беспричинно прекратить работу в любой момент. Платные же инструменты могут исчезнуть в ближайшем будущем, в связи с законом о запрете анонимайзеров и VPN.
В сложившейся ситуации лучшим решением будет настроить собственную виртуальную частную сеть. В этой статье расскажем как установить собственную виртуальную частную сеть на примере VPN-клиента OpenVPN и Ubuntu 18.04. Установка OpenVPN на CentOS, Debian и другие популярные Linux дистрибутивы происходит по похожей схеме.
Теория
Что такое VPN
VPN-соединение создаётся за счёт связки клиент-серверной архитектуры. Клиенты подключаются к серверу VPN, объединяются в виртуальную сеть, безопасно обмениваются данными. Для подключения к Интернету клиент обращается к серверу VPN, а тот, в свою очередь, получает данные из глобальной сети и передаёт их обратно клиенту.
Другими словами, VPN создаёт безопасный коридор между вашими устройствами и сетью. Этот коридор незаметен, а данные, находящиеся в нём, невозможно перехватить. Все соединения идут не напрямую, а через сервер, который может находиться в любой точке мира.
OpenVPN
Один из способов создания виртуальной частной сети – использование бесплатной программы OpenVPN. Утилиту или её исходный код можно скачать на официальном сайте. OpenVPN работает при помощи сертификатов и асимметричного шифрования. То есть передаваемые данные шифруются одним ключом, а расшифровываются другим.
Пара ключей шифрования
- Публичный ключ – сертификат, который может быть в свободном доступе, производит шифрование данных (email сообщения, проверка ЭЦП).
- Приватный ключ – хранящийся в ограниченном доступе, только у заинтересованных лиц, расшифровывает данные, зашифрованные публичным ключом.
Для того чтобы такая пара ключей работала, они должны быть подписаны центром авторизации (certification authority, CA). При этом CA имеет свой сертификат и приватный ключ, которые нужны для идентификации созданной пары ключей.
Что нужно для работы OpenVPN
Для настройки VPN необходим виртуальный частный сервер (virtual private server, VPS/VDS). В качестве ОС будет использоваться Ubuntu — один из самых популярных и стабильных серверных дистрибутивов на базе Linux.
VPS можно арендовать у подходящего хостинг-провайдера. При выборе виртуального сервера важно, чтобы он подходил под следующие условия:
- Оперативная память (RAM) — не менее 512 МБ.
- Скорость сетевого интерфейса — 100 мб/сек или выше.
- Физический сервер должен находиться максимально близко к будущему пользователю. Это обеспечит минимальную задержку (пинг) и позволит соответствовать местным законам.
Такие факторы, как объём постоянной памяти и тип накопителя, практически не имеют значения.
Установка OpenVPN
Подготовка
Установка OpenVPN на Ubuntu 18.04 начинается с установки пакетов OpenVPN и Easy-rsa из репозитория. Утилита Easy-rsa необходима для управления ключами и сертификатами.
Перед инсталляцией необходимо обновить список пакетов:
sudo apt update
Теперь нужно выполнить установку OpenVPN и Easy–rsa:
sudo apt install openvpn easy-rsa
Также в процессе работы пригодится пакет NetTOOLS, включающий в себя все необходимые сетевые инструменты. Установка выполняется командой:
sudo apt install net-tools
Настройка центра сертификации
Настройка сервера OpenVPN на Ubuntu начинается с установки центра сертификации и создания корневого сертификата:
sudo cp -R /usr/share/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa export EASYRSA=$(pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca
При выполнении последней команды программа попросит пользователя придумать пароль. Созданный код доступа будет использоваться в последующих действиях для подписи сертификатов и ключей.
В результате создаются файлы:
- /etc/openvpn/easy-rsa/pki/ca.crt – сертификат CA. Он необходим клиентам и серверу для проверки подписи CA.
- /etc/openvpn/easy-rsa/pki/private/ca.key – приватный ключ CA.
Для удобства нужно создать каталог, в котором будут храниться все необходимые сертификаты и ключи OpenVPN:
mkdir /etc/openvpn/certs/
Теперь необходимо скопировать корневой сертификат OpenVPN в созданную папку:
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/certs/ca.crt
Ключи OpenVPN для сервера
Генерация ключей для сервера OpenVPN выполняется следующей командой:
./easyrsa gen-req server nopass
Далее созданный сертификат подписывается ключом CA:
./easyrsa sign-req server server
Появится предупреждение с запросом подтвердить подпись. Нужно написать «yes» и ввести пароль центра сертификации.
Созданные файлы копируются в каталог для сертификатов:
cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/certs/ cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/certs/
Теперь нужно создать файл параметров Diffie–Hellman:
openssl dhparam -out /etc/openvpn/certs/dh2048.pem 2048
Последним создаётся ключ HMAC (hash-based message authentication code):
openvpn --genkey --secret /etc/openvpn/certs/ta.key
Теперь в папке, созданной для хранения сертификатов, должно быть 5 файлов. Проверить их наличие можно командой:
ls -l /etc/openvpn/certs/
Создание ключей клиентов OpenVPN
Сгенерировать ключи и выполнить их подпись можно следующей командой:
./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
На вопрос о намерении подписать нужно ответить «yes» и ввести пароль CA.
Запуск сервера OpenVPN
Создание конфигурационного файла OpenVPN
Для настройки OpenVPN нужно создать файл конфигурации клиента:
nano /etc/openvpn/server.conf
Далее в него копируется следующий конфиг OpenVPN сервера:
# Порт для использования port 1194 # TCP/UDP Рекомендуется использовать UDP протокол ;proto tcp proto udp # Остается без изменений ;dev tap dev tun # Ключи # Сертификат CA ca /etc/openvpn/certs/ca.crt # Сертификат сервера cert /etc/openvpn/certs/server.crt # Приватный ключ сервера key /etc/openvpn/certs/server.key #не распространяется и хранится в секрете # параметры DH dh /etc/openvpn/certs/dh2048.pem # Создание виртуальной сети и ее параметры # Параметры IP server 10.8.0.0 255.255.255.0 # При перезагрузке сервера, клиенту будет присвоен прежний IP адрес ifconfig-pool-persist /etc/openvpn/ipp.txt # Настройка для установки шлюза по умолчанию (для клиентов при подключении к VPN сервер VPN становится шлюзом) push "redirect–gateway def1 bypass–dhcp" # Настройка позволяющая нескольким клиентам использовать одну и #туже пару ключей (сертификат–приватный ключ) #не рекомендуется для использования, закомментирована ;duplicate–cn # Пинг удаленного узла с интервалом 10 секунд # Если не отвечает в течение 120 секунд, считать упавшим keepalive 10 120 # Защита от DoS–атак портов UDP за счет созданного HMAC файрволла remote-cert-tls client tls-auth /etc/openvpn/certs/ta.key 0 # файл хранится в секрете # Криптографические шифры cipher AES-256-CBC #у клиентов указывается точно такой же # Сжатие и отправка настроек клиенту ;compress lz4–v2 ;push "compress lz4–v2" # MAX число одновременных подключений ;max–clients 100 # Понижение привилегий демона OpenVPN # после запуска # Только для не Windows систем. ;user nobody ;group nobody # Хранение ключей в памяти (если нет подключения из–за привилегий) persist-key persist-tun # Лог файл текущих соединений. # Каждую минуту обрезается и перезаписываться status openvpn–status.log # Логи syslog. #!Используется только один. Раскомментировать необходимый. # перезаписывать файл журнала при каждом запуске OpenVPN ;log openvpn.log # дополнять журнал ;log–append openvpn.log # Уровень вербальности # # 0 тихий, кроме фатальных ошибок # 4 подходит для обычного использования # 5 и 6 помогают в отладке при решении проблем с подключением # 9 крайне вербальный verb 4 # Предупреждение клиента о перезапуске сервера explicit-exit-notify 1
Параметр «server» в приведённом примере не является константой и может изменяться, в зависимости от наличия свободных адресов подсетей. Eсли же один диапазон адресов (например, 10.x.0.0 255.255.255.0) уже занят локальными машинами, нужно выбрать другой (где переменная «x» будет задана в промежутке от 1 до 255).
Теперь файл необходимо сохранить и закрыть. Для этого нужно воспользоваться сочетанием клавиш «Ctrl+X», затем «Y» и подтвердить операцию нажатием «Enter».
Тестирование сервера OpenVPN
Создание сервера OpenVPN завершено. Перед тем как подключиться к нему, остаётся только проверить созданный конфигурационный файл на наличие ошибок. Для этого нужно произвести тестовый запуск:
openvpn /etc/openvpn/server.conf
Об успешном старте сигнализирует сообщение «Initialization Sequence Completed».
Если всё в порядке, то можно запускать службу OpenVPN сервера для постоянной работы. Также нужно добавить программу в автозагрузку, чтобы развёртывание OpenVPN осуществлялось при каждом запуске системы. Все это делается двумя командами:
systemctl start openvpn@server.service systemctl enable openvpn@server.service
Команда systemctl использует формат вида «openvpn–server@<configuration>.service». Где «<configuration>» – конфигурация из папки «/etc/openvpn/» без расширения .conf.
Получить информацию о работе службы можно с помощью команды:
systemctl status openvpn@server.service
Включение маршрутизации трафика на OpenVPN сервере
При подключении к серверу доступа к глобальной сети не будет, поскольку маршрутизация трафика не выполняется. Чтобы её добавить, нужно выполнить следующие действия.
Для начала создаётся файл «vpn_route.sh» а каталоге «/root/bin/».
nano /root/bin/vpn_route.sh
Если папка отсутствует, её необходимо создать:
mkdir /root/bin/
Далее, в открывшийся файл, нужно внести конфигурацию:
#!/bin/sh # укажите имя интерфейса, иначе скрипт попытается выбрать его автоматически #DEV='eth0' # проверить можно командой “ip a” DEV='ens3' # Значение подсети # изменяется в соответствии с конфигурацией PRIVATE=10.8.0.0/24 if [ -z "$DEV" ]; then DEV="$(ip route | grep default | head -n 1 | awk '{print $5}')" fi # Включаем маршрутизация транзитных IP–пакетов, чтобы # они уходили на внешний интерфейс sysctl net.ipv4.ip_forward=1 # Проверка блокировки перенаправленного трафика iptables iptables -I FORWARD -j ACCEPT # Преобразование адресов (NAT) iptables -t nat -I POSTROUTING -s $PRIVATE -o $DEV -j MASQUERADE
Параметр «PRIVATE» в приведённом примере не является константой и может изменяться, в зависимости от наличия свободных адресов подсетей. Eсли же один диапазон адресов (например, 10.x.0.0/24) уже занят локальными машинами, нужно выбрать другой (где переменная «x» будет задана в промежутке от 1 до 255). В случае изменения значения подсети в «vpn_route.sh» нужно обязательно соотнести новое значение с тем, что прописано в конфигурационном файле OpenVPN «/etc/openvpn/server.conf» (параметр «server»).
После сохранения нужно сделать файл исполняемым:
chmod 755 /root/bin/vpn_route.sh
Далее проводится пробный запуск скрипта для выявления ошибок:
bash /root/bin/vpn_route.sh
Если всё в порядке, то остаётся добавить добавить созданный скрипт в автозагрузку. Для этого нужно создать службу systemd:
nano /etc/systemd/system/openvpn-server-routing.service
В открывшийся файл вносятся следующие данные:
[Unit] Description=Включение маршрутизации OpenVPN трафика. [Service] ExecStart=/root/bin/vpn_route.sh [Install] WantedBy=multi-user.target
Теперь нужно добавить созданную службу в автозагрузку:
systemctl enable openvpn-server-routing
Настройка клиента OpenVPN сервера
Перенос ключей и сертификатов
На данном этапе настройки конфигурации OpenVPN необходимо разместить ранее созданные файлы на клиентском компьютере.
Если клиент OpenVPN на Windows, создается папка по пути «C:\Program Files\OpenVPN\certs\». В нее перемещаются следующие элементы:
- Файлы ca.crt и ta.key из папки /etc/openvpn/certs.
- Файл client1.crt из папки /etc/openvpn/easy-rsa/pki/issued.
- Файл client1.key из папки /etc/openvpn/easy-rsa/pki/private/.
Кстати. Выполнить перенос данных можно с помощью FTP-клиента WinSCP.
Если клиент работает на Ubuntu, файлы переносятся следующим образом:
- С сервера из папки /etc/openvpn/certs файлы ca.crt и ta.key, копируются в папку /etc/openvpn/certs.
- С сервера из папки /etc/openvpn/easy-rsa/pki/issued/ файл client1.crt, копируются в папку /etc/openvpn/certs.
- С сервера из папки /etc/openvpn/easy-rsa/pki/private/ файл client1.key, копируется в папку /etc/openvpn/certs.
Отправить файлы на устройство под управлением Linux можно с помощью FTP-клиента FileZilla.
Настройка OpenVPN на Windows
Клиент для Windows можно скачать с официального сайта.
Ранее в папку «C:\Program Files\OpenVPN\certs\» были перемещены сертификаты и ключи для подключения к OpenVPN серверу. Теперь необходимо добавить конфигурацию для работы программы. Для этого нужно создать в папке «C:\Program Files\OpenVPN\config\» файл «client.ovpn» и добавить в него следующие строки:
# Роль программы. client # IP адрес OpenVPN сервера remote XXX.XXX.XXX.XXX # Порт сервера. Берется из конфигурации сервера port 1194 # не изменяется dev tun # Протокол как на сервере ;proto tcp proto udp # Имя хоста/IP и порт сервера. #Удаленные сервера для баланса нагрузки ;remote my–server–1 1194 ;remote my–server–2 1194 # Случайный выбор хостов. Если не указано, берется по порядку ;remote–random # Преобразование имени хоста # (в случае непостоянного подключения к интернету) resolv-retry infinite # Привязка к локальному порту nobind # Маршрутизация всего трафика через VPN-сервер redirect-gateway def1 bypass-dhcp # Попытка сохранения состояния при перезапуске persist-key persist-tun # Настройка HTTP прокси при подключении OpenVPN серверу ;http–proxy–retry # retry on connection failures ;http–proxy [proxy server] [proxy port #] # Отключение предупреждений о дублировании пакетов ;mute–replay–warnings # Сертификаты ca "C:\\Program Files\\OpenVPN\\certs\\ca.crt" cert "C:\\Program Files\\OpenVPN\\certs\\client1.crt" key "C:\\Program Files\\OpenVPN\\certs\\client1.key" # Дополнительная защита remote-cert-tls server # Ключ HMAC tls-auth "C:\\Program Files\\OpenVPN\\certs\\ta.key" 1 # Шифры как на сервере cipher AES-256-CBC # Сжатие. Если на сервере отключено, не включается #comp–lzo # Вербальность журнала. verb 3
После сохранения остаётся выбрать в программе профиль «client» и нажать «Подключиться» для установки соединения с сервером.
Настройка клиента на Ubuntu
Клиент OpenVPN поставляется совместно с серверной частью, поэтому при установке указывается тот же пакет, что и в начале статьи – «openvpn»:
sudo apt install openvpn
Ранее ключи уже были сгенерированы (ca.crt, client1.crt, client1.key, ta.key) и перемещены в папку «/etc/openvpn/certs/». Проверить их наличие можно следующей командой:
ls –l /etc/openvpn/certs/
Если все 5 файлов присутствуют, то можно переходить к созданию конфигурационного файла OpenVPN client:
sudo nano /etc/openvpn/client.conf
В открывшийся файл настроек необходимо внести следующую конфигурацию:
# Роль программы. client # IP адрес OpenVPN сервера remote XXX.XXX.XXX.XXX # Порт сервера. Берется из конфигурации сервера port 1194 # не изменяется dev tun # Протокол как на сервере ;proto tcp proto udp # Имя хоста/IP и порт сервера. #Удаленные сервера для баланса нагрузки ;remote my–server–1 1194 ;remote my–server–2 1194 # Случайный выбор хостов. Если не указано, берется по порядку ;remote–random # Преобразование имени хоста # (в случае непостоянного подключения к интернету) resolv-retry infinite # Привязка к локальному порту nobind # Маршрутизация всего трафика через VPN-сервер redirect-gateway def1 bypass-dhcp # Попытка сохранения состояния при перезапуске persist-key persist-tun # Настройка HTTP прокси при подключении OpenVPN серверу ;http–proxy–retry # retry on connection failures ;http–proxy [proxy server] [proxy port #] # Отключение предупреждений о дублировании пакетов ;mute–replay–warnings # Сертификаты ca /etc/openvpn/certs/ca.crt cert /etc/openvpn/certs/client1.crt key /etc/openvpn/certs/client1.key # Дополнительная защита remote-cert-tls server # Ключ HMAC tls-auth /etc/openvpn/certs/ta.key 1 # Шифры как на сервере cipher AES-256-CBC # Сжатие. Если на сервере отключено, не включается #comp–lzo # Вербальность журнала. verb 3
Перед тем как запустить OpenVPN, нужно заменить некоторые значения на собственные. Далее файл сохраняется и закрывается.
Выполнить тестовый запуск клиента с указанными параметрами можно следующей командой:
sudo openvpn /etc/openvpn/client.conf
Об успешном подключении просигнализирует сообщение: «Initialization Sequence Completed».
Теперь можно запустить службу OpenVPN для работы в скрытом режиме:
sudo systemctl start openvpn@client.service
Проверка статуса службы:
sudo systemctl status openvpn@client.service
Добавление службу в автозагрузку:
sudo systemctl enable openvpn@client.service
Остановка службы VPN:
sudo systemctl stop openvpn@client.service
Удаление из автозагрузки:
sudo systemctl disable openvpn@client.service
Встраивание сертификатов в файл .ovpn
Содержимое сертификатов и ключей можно указать в конфигурационном файле .ovpn. Это позволяет использовать только один документ для переноса всех аутентификационных данных, что существенно ускоряет процесс подготовки клиентской части.
Данные сертификатов заносятся в парные теги, которые имеют такое же наименование, как и стандартные опции (ca, cert, dh, tls–auth, key и т. д.). Далее это будет показано на примере ранее созданного конфигурационного файла client.conf.
Для начала нужно удалить из файла прописанные сертификаты и ключи:
ca "C:\\Program Files\\OpenVPN\\certs\\ca.crt" cert "C:\\Program Files\\OpenVPN\\certs\\client1.crt" key "C:\\Program Files\\OpenVPN\\certs\\client1.key" tls–auth "C:\\Program Files\\OpenVPN\\certs\\ta.key" 1
Так как «tls–auth» – дополнительная опция, то её необходимо добавить отдельной строкой, введя:
key-direction 1
Далее нужно создать парные теги, как ниже, и перенести данные о ключах:
<ca> [...] </ca> <cert> [...] </cert> <key> [...] </key> <tls-auth> [...] </tls-auth>
Вместо многоточия указывается содержание публичного или приватного ключа между заголовками «BEGIN» и «END».
После сохранения настроек файл можно передать клиентам OpenVPN.
Заключение
Своя собственная VPN сеть позволяет обезопасить передаваемые личные данные в огромном потоке информации, а также даст доступ практически ко всем ресурсам Всемирной паутины.
Настроить OpenVPN на Ubuntu для создания своей собственной сети достаточно легко. Нужно лишь внимательно следует следовать приведённой инструкции и правильно выбрать поставщика хостинг-услуг.
Виртуальные сервера Eternalhost — проверенное решение для создания собственной сети VPN! Оперативная техподдержка 24/7 и бесплатная защита от DDoS.
При проверке запуска сервера пишет «Cannot pre-load keyfile (/etc/openvpn/certs/ta.key)» хотя файл сгенерирован и находится в папке.
Отличная инструкция. Большое спасибо. Перепробовал много разных туторов из сети, потратил 3 дня, но так и не смог запилить vpn. С вашей инструкцией все сделал (предварительно снеся все следы предыдущих потуг) за пол часа.
Кривая инструкция! Нет пояснений, возможных ошибок и путей решения, очень много додумок в стиле «так это итак понятно».
по древней digital ocean хоть до сервера дошел, он завис насмерть без причин и логов.
а тут сразу же затык на этой строке
sudo ./easyrsa init-pki
пишет command not foud
это же невозможно..
Чтобы понять, почему у вас не получилось, необходимо погружаться в подробности процесса (хотя бы видеть логи).
Возможно, вы использовали другую версию Ubuntu или вообще другую ОС. Или выполняли команду, не заходя в указанную папку.
В любом случае, в ближайшее время мы перепроверим инструкцию и, если потребуется, внесем коррективы.
Создал VPN по данной инструкции, соединение с сервером есть, выхода в интернет нету. Где я мог накосачить?
Гайд 100% рабочий — наши специалисты регулярно его проверяют. Возможно, вы просто не настроили сеть на сервере?
openvpn —genkey —secret /etc/openvpn/certs/ta.key теперь устарело
openvpn —genkey secret /etc/openvpn/certs/ta.key вот как верно…
А так мануал СУпер. 5мин и взлетел впн … Ухххх
Рады за вас)
По поводу «устарело», однако есть большие сомнения. На официальном сайте Openvpn указано:
openvpn —genkey —secret ta.key
Действительно устарело. При выполнении команды выходит сообщение:
a###a@####:/etc/openvpn/easy-rsa# openvpn —genkey —secret /etc/openvpn/certs/ta.key
2023-10-15 21:11:07 WARNING: Using —genkey —secret filename is DEPRECATED. Use —genkey secret filename instead.
прямо указывается что нужно печатать команду так: «—genkey secret».
Кто-то может даже не обратить внимания на этот ворнинг, а потом жаловаться, что инструкция не работает.
У вас, кстати, опущен параметр key-direction 1, Если ключи вставлены в сам ovpn файл клиента. Будешь ошибка типа hmac чего-то там.. по теме tls проверок.
так-то, если ключи не вставлены, а просто прописан путь, там директива (1) указана, а вот когда соль ключа, то там просто соль ключа. без параметра. Без «key-direction 1: швах.
Спасибо, что указали на проблему. В ближайшее время мы полностью перепроверим мануал вручную и вернемся с ответами.
Дмитрий, мы полностью перепроверили алгоритм. Если делать так, как указано в инструкции, все работает.
Options error: You must define TUN/TAP device (—dev)
аминь.
Столько заморочек. То два бэкслеша не те, то еще что.
купил микротик и все сделал по l2tp.
Дмитрий, не могли бы вы указать — где именно вылезают «ошибки»?
Без доступа к серверу и клиентского конфига данных слишком мало.
Скорее всего в клиентском конфиге не был указан «dev tun».
Переустановил клиента — как бы ошибки такой нет, но соединения нет. Порты открыты. Статус сервера овпн ок. waiting, хоть тресни.
В свое время настраивал openvpn по другому мануалу.
Попробовал отработать конфиги от центос, что там — нет соединения. Хоть порты октрыты, хоть наттинг работает. «waiting».
А под центос на vps работает. странно. То же настраивал по руководству.
Привет
может подскажите, не могу зайти в OpenVpn, какой там установлен изначальный пароль? И как его поменять
ЮПД: sudo passwd openvpn не работает
Для аутентификации пользователя при подключении к OpenVPN нужен прежде всего сертификат сервера СА и приватный ключ (как и описано у нас). Это главный и основной способ. В дальнейшем можно настроить двойную аутентификацию с использованием логина/пароля пользователя, а также принудительно отключить запрос клиентского сертификата. Однако данный способ не рекомендован самим поставщиком услуги с точки зрения безопасности. В данном руководстве как раз описан способ создания пары сертификат+ключ СА без необходимости вводить пароля (параметр «nopass»).
Что же касается «sudo passwd openvpn», то это имеет отношение только к ОС, и никак не относится к самому OpenVPN.
Не очень полная статья. В частности, вообще, не сказано ничего про параметр server
# Параметры IP
server 10.8.0.0 255.255.255.0
Почему-то все, кто пишет подобные статьи, считают, что подсеть 10.8.0.0 «чистая» и там кроме сервера и VPN-клиентов никого нет. А как быть если адреса 10.8.0.1-10.8.0.99 заняты локальными машинами, а VPN-серверу надо дать адрес 10.8.0.100 ?
Ведь такая строка
# Параметры IP
server 10.8.0.100 255.255.255.0
Приведет к ошибке запуска vpn-сервера…
Где в конфиге прописать, что у VPN-сервера должен быть адрес 10.8.0.100 ?
Если сеть 10.8.0.0 уже используется, то не стоит пытаться присвоить VPN-серверу адрес из этой же сети для построения сети OpenVPN.
Вместо этого, можно использовать другую сеть. Например, сеть 10.9.0.0.
Для этого в файле «/etc/openvpn/server.conf» нужно изменить строку «server 10.8.0.0 255.255.255.0» на «10.9.0.0 255.255.255.0».
Аналогично в файле «/root/bin/vpn_route.sh» нужно изменить строку «PRIVATE=10.8.0.0/24» на «PRIVATE=10.9.0.0/24»
Спасибо за конструктивную критику. Мы добавим примечание, освещающее эту проблематику, непосредственно в статью.
Если сеть 10.8.0.0 уже используется, то не стоит пытаться присвоить VPN-серверу адрес из этой же сети для построения сети OpenVPN.
Почему? Вот где в мануале openvpn такое написано? Мне нужно, чтобы VPN клиенты попали в ту же сеть, что и локальные клиенты.
Для этого в файле «/etc/openvpn/server.conf» нужно изменить строку «server 10.8.0.0 255.255.255.0» на «10.9.0.0 255.255.255.0».
Скажите, зачем повторять то, что Вы написали в статье? Вопрос звучал КАК задать VPN-серверу КОНКРЕТНЫЙ адрес, а не первый в подсети? В конфиг-файле есть параметр ifconfig который типа задает серверу адрес, но он не работает.
OpenVPN создаёт свою (виртуальную) сеть, которая никак не пересекается с локальной сетью. У них общий только OpenVPN-сервер.
Поэтому ситуация, когда «VPN клиенты попадают в ту же сеть, что и локальные клиенты» и не описана в мануале.
Единственно, что можно сделать, чтобы сети видели друг друга — настроить маршрутизацию между ними. Но это уже совершенно другая тема.
Хочу подключить на опенвпн и tcp и udp, в файле на udp даю адрес 10.8.0.0 и на tcp 10.9.0.0, udp работает а tcp подключается но нет трафика, и если меняю места udp 10.9.0.0 а на tcp 10.8.0.0 теперь tcp работает а udp подключается но нет трафика.
В чем может быть проблема?
Скорее всего у вас проблема с маршрутизацией к одной из подсетей (в /root/bin/vpn_route.sh). Чтобы узнать подробнее, нужно смотреть логи.