mirror of
https://github.com/trailofbits/algo.git
synced 2025-06-07 15:43:54 +02:00
WireGuard update-users fix (#1183)
This commit is contained in:
parent
75685e202b
commit
66d30e3005
5 changed files with 58 additions and 48 deletions
|
@ -7,13 +7,13 @@ wireguard_network_ipv4:
|
||||||
prefix: 24
|
prefix: 24
|
||||||
gateway: 10.19.49.1
|
gateway: 10.19.49.1
|
||||||
clients_range: 10.19.49
|
clients_range: 10.19.49
|
||||||
clients_start: 100
|
clients_start: 2
|
||||||
wireguard_network_ipv6:
|
wireguard_network_ipv6:
|
||||||
subnet: 'fd9d:bc11:4021::'
|
subnet: 'fd9d:bc11:4021::'
|
||||||
prefix: 48
|
prefix: 48
|
||||||
gateway: 'fd9d:bc11:4021::1'
|
gateway: 'fd9d:bc11:4021::1'
|
||||||
clients_range: 'fd9d:bc11:4021::'
|
clients_range: 'fd9d:bc11:4021::'
|
||||||
clients_start: 100
|
clients_start: 2
|
||||||
wireguard_vpn_network: "{{ wireguard_network_ipv4['subnet'] }}/{{ wireguard_network_ipv4['prefix'] }}"
|
wireguard_vpn_network: "{{ wireguard_network_ipv4['subnet'] }}/{{ wireguard_network_ipv4['prefix'] }}"
|
||||||
wireguard_vpn_network_ipv6: "{{ wireguard_network_ipv6['subnet'] }}/{{ wireguard_network_ipv6['prefix'] }}"
|
wireguard_vpn_network_ipv6: "{{ wireguard_network_ipv6['subnet'] }}/{{ wireguard_network_ipv6['prefix'] }}"
|
||||||
keys_clean_all: false
|
keys_clean_all: false
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
---
|
---
|
||||||
wireguard_client_ip: "{{ wireguard_network_ipv4['clients_range'] }}.{{ wireguard_network_ipv4['clients_start'] + item.0 + 1 }}/32{% if ipv6_support %},{{ wireguard_network_ipv6['clients_range'] }}{{ wireguard_network_ipv6['clients_start'] + item.0 + 1 }}/{{ wireguard_network_ipv6['prefix'] }}{% endif %}"
|
wireguard_client_ip: "{{ wireguard_network_ipv4['clients_range'] }}.{{ wireguard_network_ipv4['clients_start'] + index|int + 1 }}/{{ wireguard_network_ipv4['prefix'] }}{% if ipv6_support %},{{ wireguard_network_ipv6['clients_range'] }}{{ wireguard_network_ipv6['clients_start'] + index|int + 1 }}/{{ wireguard_network_ipv6['prefix'] }}{% endif %}"
|
||||||
wireguard_server_ip: "{{ wireguard_network_ipv4['gateway'] }}/{{ wireguard_network_ipv4['prefix'] }}{% if ipv6_support %},{{ wireguard_network_ipv6['gateway'] }}/{{ wireguard_network_ipv6['prefix'] }}{% endif %}"
|
wireguard_server_ip: "{{ wireguard_network_ipv4['gateway'] }}/{{ wireguard_network_ipv4['prefix'] }}{% if ipv6_support %},{{ wireguard_network_ipv6['gateway'] }}/{{ wireguard_network_ipv6['prefix'] }}{% endif %}"
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
with_items:
|
with_items:
|
||||||
- private
|
- private
|
||||||
- public
|
- public
|
||||||
- ip
|
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
become: false
|
become: false
|
||||||
|
|
||||||
|
@ -25,13 +24,46 @@
|
||||||
import_tasks: keys.yml
|
import_tasks: keys.yml
|
||||||
tags: update-users
|
tags: update-users
|
||||||
|
|
||||||
- name: Dump IP addresses
|
- block:
|
||||||
copy:
|
- block:
|
||||||
dest: "{{ wireguard_config_path }}/ip/{{ item.1 }}"
|
- name: WireGuard user list updated
|
||||||
content: "{{ wireguard_client_ip }}"
|
lineinfile:
|
||||||
force: false
|
dest: "{{ wireguard_config_path }}/index.txt"
|
||||||
with_indexed_items: "{{ users }}"
|
create: true
|
||||||
tags: update-users
|
mode: "0600"
|
||||||
|
insertafter: EOF
|
||||||
|
line: "{{ item }}"
|
||||||
|
register: lineinfile
|
||||||
|
with_items: "{{ users }}"
|
||||||
|
|
||||||
|
- set_fact:
|
||||||
|
wireguard_users: "{{ (lookup('file', wireguard_config_path + 'index.txt')).split('\n') }}"
|
||||||
|
|
||||||
|
- name: WireGuard users config generated
|
||||||
|
template:
|
||||||
|
src: client.conf.j2
|
||||||
|
dest: "{{ wireguard_config_path }}/{{ item.1 }}.conf"
|
||||||
|
mode: "0600"
|
||||||
|
with_indexed_items: "{{ wireguard_users }}"
|
||||||
|
when: item.1 in users
|
||||||
|
vars:
|
||||||
|
index: "{{ item.0 }}"
|
||||||
|
|
||||||
|
- name: Generate QR codes
|
||||||
|
shell: >
|
||||||
|
umask 077;
|
||||||
|
which segno &&
|
||||||
|
segno --scale=5 --output={{ item.1 }}.png \
|
||||||
|
"{{ lookup('template', 'client.conf.j2') }}" || true
|
||||||
|
changed_when: false
|
||||||
|
with_indexed_items: "{{ wireguard_users }}"
|
||||||
|
when: item.1 in users
|
||||||
|
vars:
|
||||||
|
index: "{{ item.0 }}"
|
||||||
|
ansible_python_interpreter: "{{ ansible_playbook_python }}"
|
||||||
|
args:
|
||||||
|
chdir: "{{ wireguard_config_path }}"
|
||||||
|
executable: bash
|
||||||
become: false
|
become: false
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
|
@ -43,32 +75,6 @@
|
||||||
notify: restart wireguard
|
notify: restart wireguard
|
||||||
tags: update-users
|
tags: update-users
|
||||||
|
|
||||||
- name: WireGuard users config generated
|
|
||||||
template:
|
|
||||||
src: client.conf.j2
|
|
||||||
dest: "{{ wireguard_config_path }}/{{ item.1 }}.conf"
|
|
||||||
mode: "0600"
|
|
||||||
with_indexed_items: "{{ users }}"
|
|
||||||
become: false
|
|
||||||
tags: update-users
|
|
||||||
delegate_to: localhost
|
|
||||||
|
|
||||||
- name: Generate QR codes
|
|
||||||
shell: >
|
|
||||||
umask 077;
|
|
||||||
which segno &&
|
|
||||||
segno --scale=5 --output={{ item.1 }}.png \
|
|
||||||
"{{ lookup('template', 'client.conf.j2') }}" || true
|
|
||||||
changed_when: false
|
|
||||||
with_indexed_items: "{{ users }}"
|
|
||||||
delegate_to: localhost
|
|
||||||
become: false
|
|
||||||
tags: update-users
|
|
||||||
vars:
|
|
||||||
ansible_python_interpreter: "{{ ansible_playbook_python }}"
|
|
||||||
args:
|
|
||||||
chdir: "{{ wireguard_config_path }}"
|
|
||||||
executable: bash
|
|
||||||
|
|
||||||
- name: WireGuard enabled and started
|
- name: WireGuard enabled and started
|
||||||
service:
|
service:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[Interface]
|
[Interface]
|
||||||
PrivateKey = {{ lookup('file', wireguard_config_path + '/private/' + item.1) }}
|
PrivateKey = {{ lookup('file', wireguard_config_path + '/private/' + item.1) }}
|
||||||
Address = {{ lookup('file', wireguard_config_path + '/ip/' + item.1) }}
|
Address = {{ wireguard_client_ip }}
|
||||||
DNS = {{ wireguard_dns_servers }}
|
DNS = {{ wireguard_dns_servers }}
|
||||||
|
|
||||||
[Peer]
|
[Peer]
|
||||||
|
|
|
@ -4,10 +4,14 @@ ListenPort = {{ wireguard_port }}
|
||||||
PrivateKey = {{ lookup('file', wireguard_config_path + '/private/' + IP_subject_alt_name) }}
|
PrivateKey = {{ lookup('file', wireguard_config_path + '/private/' + IP_subject_alt_name) }}
|
||||||
SaveConfig = false
|
SaveConfig = false
|
||||||
|
|
||||||
{% for u in users|sort %}
|
{% for u in wireguard_users %}
|
||||||
|
{% if u in users %}
|
||||||
|
{% set index = loop.index %}
|
||||||
|
|
||||||
[Peer]
|
[Peer]
|
||||||
# {{ u }}
|
# {{ u }}
|
||||||
PublicKey = {{ lookup('file', wireguard_config_path + '/public/' + u) }}
|
PublicKey = {{ lookup('file', wireguard_config_path + '/public/' + u) }}
|
||||||
AllowedIPs = {{ lookup('file', wireguard_config_path + '/ip/' + u) }}
|
AllowedIPs = {{ wireguard_network_ipv4['clients_range'] }}.{{ wireguard_network_ipv4['clients_start'] + index }}/32{% if ipv6_support %},{{ wireguard_network_ipv6['clients_range'] }}{{ wireguard_network_ipv6['clients_start'] + index }}/128{% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Add table
Reference in a new issue