aboutsummaryrefslogtreecommitdiff
path: root/roles/wireguard
diff options
context:
space:
mode:
authorKumar <kumar@kumardamani.xyz>2021-11-23 14:59:08 +0000
committerKumar Damani <me@kumardamani.net>2022-03-25 19:45:25 +0000
commita857eb82ec9c4a79ad5e41462e2ab82c2660982e (patch)
tree9ca51ddfb551322bd4d2fa3f949fa8898032632d /roles/wireguard
initial commit
Diffstat (limited to 'roles/wireguard')
-rw-r--r--roles/wireguard/defaults/main.yaml2
-rw-r--r--roles/wireguard/handlers/main.yaml7
-rw-r--r--roles/wireguard/tasks/main.yaml38
-rw-r--r--roles/wireguard/templates/wg0.conf.j217
4 files changed, 64 insertions, 0 deletions
diff --git a/roles/wireguard/defaults/main.yaml b/roles/wireguard/defaults/main.yaml
new file mode 100644
index 0000000..9a163d4
--- /dev/null
+++ b/roles/wireguard/defaults/main.yaml
@@ -0,0 +1,2 @@
+# Default Values
+---
diff --git a/roles/wireguard/handlers/main.yaml b/roles/wireguard/handlers/main.yaml
new file mode 100644
index 0000000..bd5fc0d
--- /dev/null
+++ b/roles/wireguard/handlers/main.yaml
@@ -0,0 +1,7 @@
+---
+
+- name: 'Restart wireguard'
+ systemd:
+ name: 'wg-quick@wg0'
+ state: 'restarted'
+ listen: 'restart wireguard'
diff --git a/roles/wireguard/tasks/main.yaml b/roles/wireguard/tasks/main.yaml
new file mode 100644
index 0000000..d7e1e51
--- /dev/null
+++ b/roles/wireguard/tasks/main.yaml
@@ -0,0 +1,38 @@
+# https://dev.to/tangramvision/exploring-ansible-via-setting-up-a-wireguard-vpn-3389
+---
+
+- name: 'install wireguard package'
+ apt:
+ name: 'wireguard'
+ state: 'present'
+ update_cache: true
+
+- name: 'create server wireguard config'
+ template:
+ dest: '/etc/wireguard/wg0.conf'
+ src: 'wg0.conf.j2'
+ owner: 'root'
+ group: 'root'
+ mode: '600'
+ notify: 'restart wireguard'
+
+- name: 'Enable IP Forwarding'
+ sysctl:
+ name: '{{ item.sysctl_key }}'
+ reload: true
+ state: 'present'
+ sysctl_set: true
+ value: '{{ item.sysctl_val }}'
+ loop:
+ - sysctl_key: 'net.ipv4.ip_forward'
+ sysctl_val: "1"
+ - sysctl_key: 'net.ipv6.conf.all.disable_ipv6'
+ sysctl_val: "0"
+ - sysctl_key: 'net.ipv6.conf.all.forwarding'
+ sysctl_val: "1"
+
+- name: 'start wireguard and enable on boot'
+ systemd:
+ name: 'wg-quick@wg0'
+ state: 'started'
+ enabled: true
diff --git a/roles/wireguard/templates/wg0.conf.j2 b/roles/wireguard/templates/wg0.conf.j2
new file mode 100644
index 0000000..6e7bcc1
--- /dev/null
+++ b/roles/wireguard/templates/wg0.conf.j2
@@ -0,0 +1,17 @@
+# {{ ansible_managed }}
+
+[Interface]
+Address = {{ wireguard_server_ip }}
+ListenPort = {{ wireguard_server_listen_port }}
+PrivateKey = {{ wireguard_server_priv_key }}
+PostUp = iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT
+PostUp = iptables -w -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -w -t nat -A POSTROUTING -o eth0 -j MASQUERADE
+PostDown = iptables -w -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -w -t nat -D POSTROUTING -o eth0 -j MASQUERADE
+
+
+{% for peer in wireguard_peers %}
+[Peer]
+PublicKey = {{ peer.peer_key }}
+AllowedIPs = {{ peer.peer_ip}}
+
+{% endfor %}