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

Информация об авторе

Судхира Сатьянарана

О проекте

Role to install and configure OpenVPN server and generate client configurations

Установить
ansible-galaxy install gavika/openvpn
Лицензия
other
Загрузки
258