openvpn
gavika.openvpn
Установите и настройте OpenVPN. Создайте и управляйте своим собственным сервером OpenVPN.
https://www.techchorus.net/blog/run-your-own-openvpn-server/
Также посмотрите директорию examples
.
Требования
Роль должна использоваться вместе с gavika.easy_rsa
.
Переменные роли
Переменная | Значение по умолчанию | Описание | Обязательно? |
---|---|---|---|
easy_rsa_local_pool_directory | /tmp/ca_openvpn_pool | Директория для временного хранения запросов на сертификаты, сертификатов и т.д. | Да |
openvpn_client_users | [] | Список имен пользователей клиентов OpenVPN. Рекомендуется использовать только буквенно-цифровые символы. | Нет |
openvpn_port | 1194 | Порт, на котором работает сервер OpenVPN | Да |
openvpn_protocol | По умолчанию: udp Выбор: tcp или udp | Сетевой протокол для использования | Да |
openvpn_server_ip_address | IP-адрес сервера OpenVPN | Значение, используемое в сгенерированных сертификатах клиентов | Да |
openvpn_generated_configurations_local_pool | false. Логический. | Нужно ли копировать сгенерированные конфигурации клиентов в локальную директорию (базовая машина, на которой выполняется ansible-playbook). | Да |
openvpn_route_all_traffic | True. Логический. | Направлять весь интернет-трафик через сервер OpenVPN | Да |
openvpn_use_opendns_public_dns | True. Логический. | Передавать DNS-серверы OpenDNS клиентам | Да |
openvpn_additional_configs | [] | Дополнительная конфигурация сервера OpenVPN. Список словарей. Каждый элемент списка — это пара "ключ, значение". Пример openvpn_additional_configs: - push: "topology subnet" - push: "route 192.168.4.5 255.255.255.255" |
Да |
openvpn_default_firewalld_zone | public | Имя зоны для использования в конфигурации Firewalld. Актуально только для EL | Да |
Чтобы создать сервер CA и сервер OpenVPN с использованием gavika.easy_rsa
и gavika.openvpn
, вы должны выполнить роли несколько раз в зависимости от ваших потребностей. Вы несете ответственность за выполнение ролей необходимое количество раз и в нужном порядке. Примеры приведены в документации. Обычно вам нужно будет выполнить open-vpn-playbook.yml
дважды и easy-rsa-playbook.yml
один раз.
Процесс выполнения плэйбука: Полноразмерная блок-схема
Вот пример выполнения плэйбуков:
# openvpn: настройка локальных каталогов, установка openvpn, создание запросов сервера,
# создание запросов клиентов
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
# easy_rsa: создание CA сервера, импорт и подписание запросов, получение сертификатов CA
ansible-playbook -i my-inventory.yml easy-rsa-playbook.yml
# openvpn: использование подписанных запросов, настройка openvpn, генерация конфигураций клиентов
ansible-playbook -i my-inventory.yml openvpn-playbook.yml
Зависимости
Роль gavika.openvpn
зависит от gavika.easy_rsa
.
Требуются следующие коллекции:
community.aws
Требуется библиотека Python boto3
.
Роль gavika.openvpn
должна использоваться вместе с gavika.easy_rsa
.
Пример плэйбука для настройки CA сервера: easy-rsa-playbook.yml
---
- hosts: ca_server
become: true
vars:
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "Bangalore"
easy_rsa_req_org: "Gavika"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "Gavika"
easy_rsa_local_pool_directory: /tmp/ca_openvpn_pool # Без конечного /
easy_rsa_server_request_to_import: "server.req"
easy_rsa_ca_server_mode: true
roles:
- role: gavika.easy_rsa
Пример плэйбука для установки сервера OpenVPN: openvpn-playbook.yml
---
- hosts: openvpn_server
become: true
vars:
openvpn_client_users:
- janedoe
- johndoe
easy_rsa_req_country: "IN"
easy_rsa_req_province: "KA"
easy_rsa_req_city: "Bangalore"
easy_rsa_req_org: "My Organization"
easy_rsa_req_email: "[email protected]"
easy_rsa_req_ou: "My Organization Unit"
roles:
- role: gavika.easy_rsa
- role: gavika.openvpn
Пример инвентаря: my-inventory
:
all:
hosts:
placeholder
children:
ca_server:
hosts:
dev-ca-01.example.com:
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.5
easy_rsa_ca_server_mode: true
ansible_python_interpreter: /usr/bin/python3
openvpn_server:
hosts:
dev-vpn-01.example.com:
ansible_python_interpreter: /usr/bin/python3
ansible_become: true
ansible_user: ubuntu
ansible_host: 192.168.3.6
openvpn_server_ip_address: 192.168.3.6
Лицензия
Лицензия Apache, версия 2.0
Информация об авторе
Судхира Сатьянарана
Gavika: https://www.gavika.com
Twitter: https://www.twitter.com/bngsudheer
Github: https://github.com/bngsudheer
Role to install and configure OpenVPN server and generate client configurations
ansible-galaxy install gavika/openvpn