Пожалуйста, обратите внимание, что пользователь заблокирован
Сначало настроим второй сервер:
Шаг 1. Установка OpenVPN
Шаг 2. Создание директории центра сертификации
OpenVPN это виртуальная частная сеть, использующая TLS/SSL. Это означает, что OpenVPN использует сертификаты для шифрования трафика между сервером и клиентами. Для выпуска доверенных сертификатов (trusted certificates) нам потребуется создать наш собственный центр сертификации.
Создайте пользователя с именем, например, openvpn-ca и перейдите в его домашний каталог:
Для начала скопируем шаблонную директорию easy-rsa в нашу домашнюю директорию с помощью команды make-cadir:
Шаг 3. Настройка переменных центра сертификации
Для настройки переменных нашего центра сертификации нам необходимо отредактировать файл vars. Откройте этот файл в вашем текстовом редакторе:
Внутри файла вы найдёте переменные, которые можно отредактировать, и которые задают параметры сертификатов при их создании. Нам нужно изменить всего несколько переменных.
Шаг 4. Создание центра сертификации
Теперь мы можем использовать заданные нами переменные и утилиты easy-rsa для создания центра сертификации.
Убедитесь, что вы находитесь в директории центра сертификации и используйте команду source к файлу vars. В моем случае также потребовалось добавить симлинк к файлу openssl-1.0.0.cnf:
Вы должны увидеть следующий вывод:
Вывод
Теперь мы можем создать наш корневой центр сертификации командой:
Эта команда запустит процесс создания ключа и сертификата корневого центра сертификации. Поскольку мы задали все переменные в файле vars, все необходимые значения будут введены автоматически. Нажимайте ENTER для подтверждения выбора.
Теперь у нас есть центр сертификации, который мы сможем использовать для создания всех остальных необходимых нам файлов.
Шаг 5. Создание сертификата, ключа и файлов шифрования для сервера
Далее создадим сертификат, пару ключей и некоторые дополнительные файлы, используемые для осуществления шифрования, для нашего сервера.
Начнём с создания сертификата OpenVPN и ключей для сервера. Это можно сделать следующей командой:
Внимание: Если ранее вы выбрали имя, отличное от server, вам придётся немного изменить некоторые инструкции. Например, при копировании созданных файлов в директорию /etc/openvpn вам придётся заменить имена на заданные вами. Вам также придётся изменить файл /etc/openvpn/server.conf для того, чтобы он указывал на корректные .crt и .key файлы.
Вывод опять будет содержать значения по умолчанию, переданные этой команде (server), а также значения из файла vars.
Согласитесь со всеми значениями по умолчанию, нажимая ENTER. Не задавайте challenge password. В конце процесса два раза введите y для подписи и подтверждения создания сертификата:
Вывод
Для завершения этой команды может потребоваться несколько минут.
Далее мы можем сгенерировать подпись HMAC для усиления способности сервера проверять целостность TSL:
Шаг 6. Создание сертификата и пары ключей для клиента
Далее мы можем сгенерировать сертификат и пару ключей для клиента. Вообще это можно сделать и на клиентской машине и затем подписать полученный ключ центром сертификации сервера, но в этой статье для простоты мы сгенерируем подписанный ключ на сервере.
В этой статье мы создадим ключ и сертификат только для одного клиента. Если у вас несколько клиентов, вы можете повторять этот процесс сколько угодно раз. Просто каждый раз передавайте уникальное значение скрипту.
Поскольку мы можем вернуться к этому шагу позже, мы повторим команду source для файла vars. Мы будем использовать параметр clientsrv2 для создания первого сертификата и ключа.
Для создания файлов без пароля для облегчения автоматических соединений используйте команду build-key:
В ходе процесса создания файлов все значения по умолчанию будут введены, вы можете нажимать ENTER. Не задавайте challenge password и введите y на запросы о подписи и подтверждении создания сертификата.
Шаг 7. Настройка сервиса OpenVPN
Далее настроим сервис OpenVPN с использованием созданных ранее файлов.
Копирование файлов в директорию OpenVPN Нам необходимо скопировать нужные нам файлы в директорию /etc/openvpn.
Сначала скопируем созданные нами файлы. Они находятся в директории ~/openvpn-ca/keys, в которой они и были созданы. Нам необходимо скопировать сертификат и ключ центра сертификации, сертификат и ключ сервера, подпись HMAC и файл Diffie-Hellman:
Далее нам необходимо скопировать и распаковать файл-пример конфигурации OpenVPN в конфигурационную директорию, мы будем использовать этот файл в качестве базы для наших настроек:
Настройка конфигурации OpenVPN Теперь, когда наши файлы находятся на своём месте, займёмся настройкой конфигурационного файла сервера:
Базовая настройка
Адрес сети VPN сервера
Шаг 8. Настройка сетевой конфигурации сервера
Далее нам необходимо настроить сетевую конфигурацию сервера, чтобы OpenVPN мог корректно перенаправлять трафик.
Настройка перенаправления IP Сначала разрешим серверу перенаправлять трафик. Это ключевая функциональность нашего VPN сервера.
Настроим это в файле /etc/sysctl.conf:
Найдите строку настройки net.ipv4.ip_forward. Удалите "#" из начала строки, чтобы раскомментировать её:
Для применения настроек к текущей сессии наберите команду:
Настройка правил UFW для сокрытия соединений клиентов Вам нужно установить файрвол UFW. Нам потребуется файрвол для манипулирования с входящим на сервер трафиком. Мы должны изменить файл настроек для сокрытия соединений (masquerading).
Откроем файл /etc/ufw/before.rules и добавим туда соответствующие настройки:
Это файл содержит настройки UFW, которое применяются перед применением правил UFW. Добавьте в начало файла выделенные красным строки. Это настроит правила, применяемые по умолчанию, к цепочке POSTROUTING в таблице nat и будет скрывать весь трафик от VPN:
Теперь мы должны сообщить UFW, что ему по умолчанию необходимо разрешать перенаправленные пакеты. Для этого откройте файл /etc/default/ufw:
Найдите в файле директиву DEFAULT_FORWARD_POLICY. Мы изменим значение с DROP на ACCEPT:
Открытие порта OpenVPN и применение изменений Далее настроим сам файрвол для разрешения трафика в OpenVPN.
Если вы не меняли порт и протокол в файле /etc/openvpn/server.conf, вам необходимо разрешить трафик UDP для порта 1194. Если вы изменили эти настройки, введите указанные вами значения. В моем случае это TCP порт 1194
Также добавьте ваш SSH порт
Теперь деактивируем и активируем UFW для применения внесённых изменений:
Теперь наш сервер сконфигурирован для обработки трафика OpenVPN.
Шаг 9. Включение сервиса OpenVPN
Мы готовы включит сервис OpenVPN на нашем сервере. Мы можем сделать это с помощью systemd.
Нам необходимо запустить сервер OpenVPN указав имя нашего файла конфигурации в качестве переменной после имени файла systemd. Файл конфигурации для нашего сервера называется /etc/openvpn/server.conf, поэтому мы добавим dedione_store в конец имени файла при его вызове:
Убедимся, что сервис успешно запущен командой:
Если всё в порядке, настроем сервис на автоматическое включение при загрузке сервера:
Шаг 10. Создание инфраструктуры настройки клиентов
Далее настроим систему для простого создания файлов конфигурации для клиентов.
Создание структуры директорий конфигурации клиентов В домашней директории создайте структуру директорий для хранения файлов:
Поскольку наши файлы конфигурации будут содержать клиентские ключи, мы должны настроить права доступа для созданных директорий:
Создание базовой конфигурации Далее скопируем конфигурацию-пример в нашу директорию для использования в качестве нашей базовой конфигурации:
Откройте этот файл в вашем текстовом редакторе:
Сделаем несколько изменений в этом файле.
Сначала найдите директиву remote. Эта директива сообщает клиенту адрес нашего сервера OpenVPN. Это должен быть публичный IP адрес вашего сервера OpenVPN. Если вы изменили порт, который слушает сервер OpenVPN, измените порт по умолчанию 1194 на ваше значение:
Создайте и откройте файл make_config.sh внутри директории ~/client-configs:
Вставьте следующие текст в этот файл:
Сохраните и закройте файл.
Сделайте его исполняемым файлом командой:
Шаг 11. Генерация конфигураций клиентов
Теперь мы можем легко сгенерировать файлы конфигурации клиентов.
Если вы следовали всем шагам этой статьи, вы создали сертификат clientsrv2.crt и ключ клиента clientsrv2.key командой ./build-key clientsrv2 на шаге 6. Вы можете сгенерировать конфигурацию для этих файлов перейдя в директорию ~/client-configs и используя только что созданный нами скрипт:
Если всё прошло успешно, мы должны получить файл clientsrv2.ovpn в директории ~/client-configs/files:
Вывод
На первом сервере делаем все идентично, кроме следующих пунктов:
Интерфейс eth0 меняем на tun1 и адрес 10.8.1.0/24 на 10.8.0.0/24
Перенаправление всего трафика через VPN сервер
Адрес сети VPN сервера
Создадим скрипт /etc/openvpn/upstream-route.sh содержащий следующие команды:
Далее добавим их в файл конфигурации клиента который подключается ко второму серверу.
Настраиваем автозауск
Точно так же создаем инфраструктуру настройки клиентов. Шаг 10 И сгенерированный файл переносим на клиентскую машину.
Подключение на Linux
В результате вы подключитесь к серверу.
Шаг 1. Установка OpenVPN
Bash:
sudo apt update
sudo apt install openvpn easy-rsa
Шаг 2. Создание директории центра сертификации
OpenVPN это виртуальная частная сеть, использующая TLS/SSL. Это означает, что OpenVPN использует сертификаты для шифрования трафика между сервером и клиентами. Для выпуска доверенных сертификатов (trusted certificates) нам потребуется создать наш собственный центр сертификации.
Создайте пользователя с именем, например, openvpn-ca и перейдите в его домашний каталог:
Bash:
sudo adduser openvpn-ca
sudo usermod -aG sudo openvpn-ca
sudo su - openvpn-ca
Для начала скопируем шаблонную директорию easy-rsa в нашу домашнюю директорию с помощью команды make-cadir:
Bash:
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
Шаг 3. Настройка переменных центра сертификации
Для настройки переменных нашего центра сертификации нам необходимо отредактировать файл vars. Откройте этот файл в вашем текстовом редакторе:
Bash:
vi vars
~/openvpn-ca/vars
Пока мы в этом файле, отредактируем значение KEY_NAME чуть ниже, которое заполняет поле субъекта сертификатов. Для простоты зададим ему название vpnsrv2:. . .
export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="CodeBy"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"
. . .
~/openvpn-ca/vars
Сохраните и закройте файл.export KEY_NAME="vpnsrv2"
Шаг 4. Создание центра сертификации
Теперь мы можем использовать заданные нами переменные и утилиты easy-rsa для создания центра сертификации.
Убедитесь, что вы находитесь в директории центра сертификации и используйте команду source к файлу vars. В моем случае также потребовалось добавить симлинк к файлу openssl-1.0.0.cnf:
Bash:
cd ~/openvpn-ca
ln -s ~/openvpn-ca/openssl-1.0.0.cnf openssl.cnf
source vars
Вывод
Убедимся, что мы работаем в "чистой среде" выполнив следующую команду:NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys
./clean-allТеперь мы можем создать наш корневой центр сертификации командой:
./build-caЭта команда запустит процесс создания ключа и сертификата корневого центра сертификации. Поскольку мы задали все переменные в файле vars, все необходимые значения будут введены автоматически. Нажимайте ENTER для подтверждения выбора.
Теперь у нас есть центр сертификации, который мы сможем использовать для создания всех остальных необходимых нам файлов.
Шаг 5. Создание сертификата, ключа и файлов шифрования для сервера
Далее создадим сертификат, пару ключей и некоторые дополнительные файлы, используемые для осуществления шифрования, для нашего сервера.
Начнём с создания сертификата OpenVPN и ключей для сервера. Это можно сделать следующей командой:
Внимание: Если ранее вы выбрали имя, отличное от server, вам придётся немного изменить некоторые инструкции. Например, при копировании созданных файлов в директорию /etc/openvpn вам придётся заменить имена на заданные вами. Вам также придётся изменить файл /etc/openvpn/server.conf для того, чтобы он указывал на корректные .crt и .key файлы.
./build-key-server vpnsrv2Вывод опять будет содержать значения по умолчанию, переданные этой команде (server), а также значения из файла vars.
Согласитесь со всеми значениями по умолчанию, нажимая ENTER. Не задавайте challenge password. В конце процесса два раза введите y для подписи и подтверждения создания сертификата:
Вывод
Далее создадим оставшиеся файлы. Мы можем сгенерировать сильные ключи протокола Диффи-Хеллмана, используемые при обмене ключами, командой:. . .
Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
./build-dhДля завершения этой команды может потребоваться несколько минут.
Далее мы можем сгенерировать подпись HMAC для усиления способности сервера проверять целостность TSL:
Bash:
sudo openvpn --genkey --secret keys/ta.key
sudo chown openvpn-ca:openvpn-ca keys/ta.key
Шаг 6. Создание сертификата и пары ключей для клиента
Далее мы можем сгенерировать сертификат и пару ключей для клиента. Вообще это можно сделать и на клиентской машине и затем подписать полученный ключ центром сертификации сервера, но в этой статье для простоты мы сгенерируем подписанный ключ на сервере.
В этой статье мы создадим ключ и сертификат только для одного клиента. Если у вас несколько клиентов, вы можете повторять этот процесс сколько угодно раз. Просто каждый раз передавайте уникальное значение скрипту.
Поскольку мы можем вернуться к этому шагу позже, мы повторим команду source для файла vars. Мы будем использовать параметр clientsrv2 для создания первого сертификата и ключа.
Для создания файлов без пароля для облегчения автоматических соединений используйте команду build-key:
Bash:
cd ~/openvpn-ca
source vars
./build-key clientsrv2
Шаг 7. Настройка сервиса OpenVPN
Далее настроим сервис OpenVPN с использованием созданных ранее файлов.
Копирование файлов в директорию OpenVPN Нам необходимо скопировать нужные нам файлы в директорию /etc/openvpn.
Сначала скопируем созданные нами файлы. Они находятся в директории ~/openvpn-ca/keys, в которой они и были созданы. Нам необходимо скопировать сертификат и ключ центра сертификации, сертификат и ключ сервера, подпись HMAC и файл Diffie-Hellman:
Bash:
cd ~/openvpn-ca/keys
sudo mkdir /etc/openvpn/keys
sudo cp ca.crt vpnsrv2.crt vpnsrv2.key dh2048.pem ta.key /etc/openvpn/keys/
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.confНастройка конфигурации OpenVPN Теперь, когда наши файлы находятся на своём месте, займёмся настройкой конфигурационного файла сервера:
sudo vi /etc/openvpn/server.confБазовая настройка
Адрес сети VPN сервера
/etc/openvpn/server.conf
Найдём секцию HMAC поиском директивы tls-auth. Удалите ";" для того, чтобы раскомментировать строку с tls-auth. Далее добавьте параметр key-direction и установите его значение в "0":# ethernet bridging. See the man page for more info.
server 10.8.1.0 255.255.255.0
/etc/openvpn/server.conf
Далее найдём секцию шифрования, нас интересуют закомментированные строки cipher. Удалите ";" для раскомментирования строки AES-256-CBC:tls-auth keys/ta.key 0 # This file is secret
key-direction 0
/etc/openvpn/server.conf
Под этой строкой добавьте строку auth и выберите алгоритм HMAC. Хорошим выбором будет SHA512:cipher AES-256-CBC
/etc/openvpn/server.conf
Наконец, найдите настройки user и group и удалите ";" для раскомментирования этих строк:auth SHA512
/etc/openvpn/server.conf
Необходимо закомментировать следующие директивы. Найдите секцию redirect-gateway и добавьте ";" в начало строки:user nobody
group nogroup
/etc/openvpn/server.conf
Чуть ниже находится секция dhcp-option.;push "redirect-gateway def1 bypass-dhcp"
/etc/openvpn/server.conf
(Опционально) Настройка порта и протокола По умолчанию OpenVPN использует порт 1194 и протокол UDP для соединения с клиентами. Если вам необходимо изменить порт из-за каких-либо ограничений для ваших клиентов, вы можете сделать это изменив настройку port.;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
/etc/openvpn/server.conf
(Опционально) Использование кастомного имени сертификата и ключа Если во время использования команды ./build-key-server чуть выше вы указали параметр, отличный от vpnsrv2, измените настройки cert и key, чтобы они указывали на правильные файлы .crt и .key. Если вы использовали vpnsrv2, эти настройки должны выглядеть таким образом:port 1194
# TCP or UDP server?
proto tcp4
/etc/openvpn/server.conf
Сохраните и закройте файл.ca keys/ca.crt
cert keys/vpnsrv2.crt
key keys/vpnsrv2.key
dh keys/dh2048.pem
Шаг 8. Настройка сетевой конфигурации сервера
Далее нам необходимо настроить сетевую конфигурацию сервера, чтобы OpenVPN мог корректно перенаправлять трафик.
Настройка перенаправления IP Сначала разрешим серверу перенаправлять трафик. Это ключевая функциональность нашего VPN сервера.
Настроим это в файле /etc/sysctl.conf:
sudo vi /etc/sysctl.confНайдите строку настройки net.ipv4.ip_forward. Удалите "#" из начала строки, чтобы раскомментировать её:
/etc/sysctl.conf
Сохраните и закройте файл.net.ipv4.ip_forward=1
Для применения настроек к текущей сессии наберите команду:
sudo sysctl -pНастройка правил UFW для сокрытия соединений клиентов Вам нужно установить файрвол UFW. Нам потребуется файрвол для манипулирования с входящим на сервер трафиком. Мы должны изменить файл настроек для сокрытия соединений (masquerading).
Bash:
sudo apt update
sudo apt install ufw
sudo vi /etc/ufw/before.rulesЭто файл содержит настройки UFW, которое применяются перед применением правил UFW. Добавьте в начало файла выделенные красным строки. Это настроит правила, применяемые по умолчанию, к цепочке POSTROUTING в таблице nat и будет скрывать весь трафик от VPN:
/etc/ufw/before.rules
Сохраните и закройте файл.#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
. . .
Теперь мы должны сообщить UFW, что ему по умолчанию необходимо разрешать перенаправленные пакеты. Для этого откройте файл /etc/default/ufw:
sudo vi /etc/default/ufwНайдите в файле директиву DEFAULT_FORWARD_POLICY. Мы изменим значение с DROP на ACCEPT:
/etc/default/ufw
Сохраните и закройте файл.DEFAULT_FORWARD_POLICY="ACCEPT"
Открытие порта OpenVPN и применение изменений Далее настроим сам файрвол для разрешения трафика в OpenVPN.
Если вы не меняли порт и протокол в файле /etc/openvpn/server.conf, вам необходимо разрешить трафик UDP для порта 1194. Если вы изменили эти настройки, введите указанные вами значения. В моем случае это TCP порт 1194
Также добавьте ваш SSH порт
Bash:
sudo ufw allow 22
sudo ufw allow 1194/tcp
Bash:
sudo ufw disable
sudo ufw enable
Шаг 9. Включение сервиса OpenVPN
Мы готовы включит сервис OpenVPN на нашем сервере. Мы можем сделать это с помощью systemd.
Нам необходимо запустить сервер OpenVPN указав имя нашего файла конфигурации в качестве переменной после имени файла systemd. Файл конфигурации для нашего сервера называется /etc/openvpn/server.conf, поэтому мы добавим dedione_store в конец имени файла при его вызове:
sudo systemctl start openvpn@serverУбедимся, что сервис успешно запущен командой:
sudo systemctl status openvpn@serverЕсли всё в порядке, настроем сервис на автоматическое включение при загрузке сервера:
sudo systemctl enable openvpn@serverШаг 10. Создание инфраструктуры настройки клиентов
Далее настроим систему для простого создания файлов конфигурации для клиентов.
Создание структуры директорий конфигурации клиентов В домашней директории создайте структуру директорий для хранения файлов:
Bash:
sudo su - openvpn-ca
mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/filesСоздание базовой конфигурации Далее скопируем конфигурацию-пример в нашу директорию для использования в качестве нашей базовой конфигурации:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.confОткройте этот файл в вашем текстовом редакторе:
vi ~/client-configs/base.confСделаем несколько изменений в этом файле.
Сначала найдите директиву remote. Эта директива сообщает клиенту адрес нашего сервера OpenVPN. Это должен быть публичный IP адрес вашего сервера OpenVPN. Если вы изменили порт, который слушает сервер OpenVPN, измените порт по умолчанию 1194 на ваше значение:
~/client-configs/base.conf
Убедитесь, что протокол совпадает с настройками сервера:. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote server_IP_address 1194
. . .
~/client-configs/base.conf
Далее раскомментируйте директивы user и group удаляя ";":proto tcp
~/client-configs/base.conf
Найдите директивы ca, cert и key. Закомментируйте эти директивы, так как мы будем добавлять сертификаты и ключи в самом файле:# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
~/client-configs/base.conf
Добавьте настройки cipher и auth согласно заданным в файле /etc/openvpn/server.conf:# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key
~/client-configs/base.conf
Далее добавьте директиву key-direction в любое место в файле. Она должна иметь значение "1" для корректной работы сервера:cipher AES-256-CBC
auth SHA512
~/client-configs/base.conf
Создание скрипта генерации файлов конфигурации Теперь создадим простой скрипт для генерации файлов конфигурации с релевантными сертификатами, ключами и файлами шифрования. Он будет помещать сгенерированные файла конфигурации в директорию ~/client-configs/files.key-direction 1
Создайте и откройте файл make_config.sh внутри директории ~/client-configs:
vi ~/client-configs/make_config.shВставьте следующие текст в этот файл:
~/client-configs/make_config.sh
Bash:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn
Сделайте его исполняемым файлом командой:
chmod 700 ~/client-configs/make_config.shШаг 11. Генерация конфигураций клиентов
Теперь мы можем легко сгенерировать файлы конфигурации клиентов.
Если вы следовали всем шагам этой статьи, вы создали сертификат clientsrv2.crt и ключ клиента clientsrv2.key командой ./build-key clientsrv2 на шаге 6. Вы можете сгенерировать конфигурацию для этих файлов перейдя в директорию ~/client-configs и используя только что созданный нами скрипт:
Bash:
cd ~/client-configs
./make_config.sh clientsrv2
ls ~/client-configs/filesВывод
Доставка конфигураций на первый сервер Теперь мы должны переместить файл конфигурации первый сервер SRV1.clientsrv2.ovpn
На первом сервере делаем все идентично, кроме следующих пунктов:
sudo vi /etc/ufw/before.rulesИнтерфейс eth0 меняем на tun1 и адрес 10.8.1.0/24 на 10.8.0.0/24
/etc/ufw/before.rules
Сохраните и закройте файл.#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to tun1
-A POSTROUTING -s 10.8.0.0/24 -o tun1 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
. . .
Перенаправление всего трафика через VPN сервер
Адрес сети VPN сервера
sudo vi /etc/openvpn/server.conf/etc/openvpn/server.conf
Протокол ставим udp4# ethernet bridging. See the man page for more info.
server 10.8.0.0 255.255.255.0
/etc/openvpn/server.conf
Далее раскомментируйте следующие строки. Секция redirect-gateway:# TCP or UDP server?
proto udp4
/etc/openvpn/server.conf
и секция dhcp-optionpush "redirect-gateway def1 bypass-dhcp"
/etc/openvpn/server.conf
также эту директивуpush "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Прописываем правила маршрутизации на первом сервере:explicit-exit-notify 1
Создадим скрипт /etc/openvpn/upstream-route.sh содержащий следующие команды:
Bash:
#!/bin/sh
ip rule add from 10.8.0.0/24 table 120
ip route add default dev tun1 table 120
exit 0
chmod +x /etc/openvpn/upstream-route.shДалее добавим их в файл конфигурации клиента который подключается ко второму серверу.
vi clientsrv2.ovpnclientsrv2.ovpn
Также в этом файле необходимо указать чтобы OpenVPN клиент всегда занимал интерфейс tun1:script-security 2
up upstream-route.sh
clientsrv2.ovpn
Скопируем clientsrv2.ovpn в корневую папку OpenVPN и переиминуем его в client.confdev tun1
sudo cp clientsrv2.ovpn /etc/openvpn/client.confНастраиваем автозауск
Bash:
# server
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
# client to srv2
sudo systemctl start openvpn@client
sudo systemctl start openvpn@client
Подключение на Linux
Bash:
sudo apt update
sudo apt install openvpn
sudo openvpn --config clientsrv1.ovpn