peervpn
role-peervpn
Эта роль Ansible используется в Kubernetes the not so hard way with Ansible (at Scaleway) - Часть 3 - PeerVPN. Она предназначена для настройки PeerVPN для Ubuntu 16.04/18.04 (но должна работать и на всех Linux-системах, использующих systemd). С помощью PeerVPN вы можете легко установить полностью соединённую VPN между дата-центрами и всеми узлами, которые вам нужны. Вам нужен хотя бы один хост с общедоступным интерфейсом (по умолчанию это Порт 7000
протокол UDP
). Одной из простых конфигураций может быть использование этого общедоступного хоста для вашей настройки peervpn_conf_initpeers
. Поиск других хостов в вашей VPN будет автоматически выполнен PeerVPN.
PeerVPN устанавливает свой собственный TAP-интерфейс для этой цели. Имя этого TAP-интерфейса по умолчанию — tap0
. Чтобы изменить имя, укажите другое значение переменной peervpn_conf_interface
.
Чтобы сгенерировать надежный секретный пароль для вашего заранее заданного ключа PeerVPN, вы можете использовать:
openssl rand -base64 382 | tr -d '\n' && echo
Поскольку это заранее заданный ключ, он ДОЛЖЕН быть использован на всех хостах, где вы устанавливаете PeerVPN и используете одно и то же имя сети. В противном случае подключение не будет работать. По умолчанию заранее заданный ключ — default
, который, конечно, нужно изменить ;-)
Версии
Я тегирую каждый релиз и стараюсь придерживаться семантического версионирования. Если вы хотите использовать роль, я рекомендую проверять последнюю метку. Основная ветка — это в основном разработка, а теги обозначают стабильные релизы. Но в общем я стараюсь поддерживать основную ветку в хорошем состоянии. Тег 1.0.0+r044
означает, что это релиз 1.0.0
этой роли и он использует PeerVPN r044
. Если сама роль изменится, будет увеличен номер версии X.Y.Z
. Если изменится версия PeerVPN, будет увеличен rXXX
, а также уровень патча роли (например, 1.0.0
-> 1.0.1
). Это позволяет тегировать исправления ошибок и новые основные версии роли, пока она всё ещё разрабатывается для конкретного релиза PeerVPN.
Требования
Разрешите трафик на порту 7000 протокол UDP (по умолчанию), если у вас установлены правила файервола. Вы также ДОЛЖНЫ добавить переменную peervpn_conf_initpeers
. Для этой переменной нет значения по умолчанию! IPv6 ВКЛЮЧЁН по умолчанию. Если вы не хотите его использовать, добавьте переменную peervpn_conf_enableipv6: no
.
Переменные роли
В общем, вам нужно изменить очень few переменных (см. ниже). Но посмотрите на templates/etc/peervpn/peervpn.conf.j2
для примеров и полного описания переменных.
Переменные без значений по умолчанию:
peervpn_conf_initpeers
peervpn_conf_engine
peervpn_conf_ifconfig6
peervpn_conf_upcmd
peervpn_conf_chroot
Переменные со значениями по умолчанию:
peervpn_version: "peervpn-0-044"
peervpn_install_directory: "/opt/{{peervpn_version}}"
peervpn_dest: "/usr/local/sbin"
peervpn_conf_networkname: "peervpn"
peervpn_conf_psk: "default"
peervpn_conf_enabletunneling: "yes"
peervpn_conf_interface: "tap0"
peervpn_conf_local: "0.0.0.0"
peervpn_conf_port: 7000
peervpn_conf_ifconfig4: "10.0.0.1/24"
peervpn_conf_sockmark: 0
peervpn_conf_enableipv4: "yes"
peervpn_conf_enablenat64clat: "no"
peervpn_conf_enablerelay: "no"
peervpn_conf_enableprivdrop: "yes"
peervpn_conf_user: "nobody"
peervpn_conf_group: "nogroup"
Вы ДОЛЖНЫ указать значение для peervpn_conf_initpeers
, чтобы использовать PeerVPN (либо по хосту в директории Ansible host_vars
, либо по группе хостов в директории group_vars
. Например, если вы укажете peervpn_conf_initpeers: "host.example.net 7000"
, PeerVPN попытается подключиться к host.example.net
на порту 7000
через UDP, чтобы установить соединение.
Вы должны как минимум изменить следующие переменные:
peervpn_conf_initpeers
: Имя хоста и порт, к которым PeerVPN должен подключиться, чтобы стать частью VPN.
peervpn_conf_networkname
: Имя вашей VPN.
peervpn_conf_psk
: Предварительный ключ. Как генерировать хороший пароль для заранее заданного ключа, смотрите выше в введении.
peervpn_conf_ifconfig4
: IP-адрес узла и подсеть в записи CIDR. Эта переменная должна быть указана для каждого хоста.
Пример плейбука
- hosts: webservers
roles:
- peervpn
Лицензия
GNU GENERAL PUBLIC LICENSE версия 3
Информация об авторе
ansible-galaxy install githubixx/ansible-role-peervpn