summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Yann Wettengel <niyawe@niyawe.de>2017-07-12 00:55:58 +0200
committerNiklas Yann Wettengel <niyawe@niyawe.de>2017-07-12 00:55:58 +0200
commit8bad801b15ab010f63cebf80691f658319873317 (patch)
treec7f3ef3e39de2f41e3cc8aa9b083b010a6299e23
parent6ef6aa8d628b0c7eeeec37d0c5b43df6d87f8b33 (diff)
added routing between servers
-rw-r--r--host_vars/fastd11
-rwxr-xr-xroles/configure_static_routes/files/ffmyk-iproute.sh6
-rw-r--r--roles/install_babeld/handlers/main.yml5
-rw-r--r--roles/install_babeld/tasks/main.yml20
-rw-r--r--roles/install_babeld/templates/babeld.conf.j259
-rw-r--r--roles/install_wireguard_backbone/tasks/main.yml24
-rw-r--r--roles/install_wireguard_backbone/templates/down.sh.j25
-rw-r--r--roles/install_wireguard_backbone/templates/up.sh.j27
-rw-r--r--roles/install_wireguard_backbone/templates/wg.conf.j215
-rw-r--r--setup_fastd.yml2
10 files changed, 150 insertions, 4 deletions
diff --git a/host_vars/fastd b/host_vars/fastd
index 87b7313..1b5d430 100644
--- a/host_vars/fastd
+++ b/host_vars/fastd
@@ -23,7 +23,16 @@ sites:
address: '< peer wg mesh ipv6 ula>'
endpoint: '< peer public ipv6 >'
mac: '< own mac for mesh interface with peer >'
- wireguard_bb_key: '< priv key >'
+wireguard_bb_key: '< priv key >'
+wireguard_bb_port: < port >
+wireguard_bb_address: '< ipv6 wireguard backbone netz >'
+wireguard_bb_gre_ipv4: '< ipv4 an gre tunneln >'
+wireguard_bb_peers:
+ - name: '< name des interfaces >'
+ key: '< wireguard public key >'
+ address: '< ipv6 wireguard backbone netz >'
+ endpoint: '< peer public ipv6 >'
+ gre_ipv4: '< peer ipv4 an gre interface >'
mullvad_country: nl
mullvad_crt: |
-----BEGIN CERTIFICATE-----
diff --git a/roles/configure_static_routes/files/ffmyk-iproute.sh b/roles/configure_static_routes/files/ffmyk-iproute.sh
index ee7f6a0..2a653e9 100755
--- a/roles/configure_static_routes/files/ffmyk-iproute.sh
+++ b/roles/configure_static_routes/files/ffmyk-iproute.sh
@@ -7,6 +7,6 @@ ip -6 route add unreachable default table ffmyk
ip -4 rule add from all fwmark 0x1 table ffmyk
ip -6 rule add from all fwmark 0x1 table ffmyk
-#Alles mit Freifunk-IP - woher auch immer - gehlrt zu Tabelle ffmyk
-ip -4 rule add from 10.222.0.0/16 table ffmyk
-ip -6 rule add from 2001:470:cd45:FF00::/56 table ffmyk
+#Alles mit Freifunk-IP - woher auch immer - gehört zu Tabelle ffmyk
+#ip -4 rule add from 10.222.0.0/16 table ffmyk
+#ip -6 rule add from 2001:470:cd45:FF00::/56 table ffmyk
diff --git a/roles/install_babeld/handlers/main.yml b/roles/install_babeld/handlers/main.yml
new file mode 100644
index 0000000..87ce21f
--- /dev/null
+++ b/roles/install_babeld/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart babeld
+ systemd:
+ name: babeld.service
+ state: restarted
diff --git a/roles/install_babeld/tasks/main.yml b/roles/install_babeld/tasks/main.yml
new file mode 100644
index 0000000..f3cd693
--- /dev/null
+++ b/roles/install_babeld/tasks/main.yml
@@ -0,0 +1,20 @@
+---
+- name: install fastd
+ become: yes
+ become_user: '{{ aur_user }}'
+ aur:
+ name: babeld
+ tool: yaourt
+
+- name: babeld.conf
+ template:
+ src: babeld.conf.j2
+ dest: /etc/babeld.conf
+ mode: 0640
+ notify: restart babeld
+
+- name: start and enable babeld service
+ systemd:
+ name: babeld.service
+ enabled: yes
+ state: started
diff --git a/roles/install_babeld/templates/babeld.conf.j2 b/roles/install_babeld/templates/babeld.conf.j2
new file mode 100644
index 0000000..d654df8
--- /dev/null
+++ b/roles/install_babeld/templates/babeld.conf.j2
@@ -0,0 +1,59 @@
+# Configuration for babeld. See the man page babeld(8) for
+# details on the configuration format.
+
+# Works on Linux > 3.11
+ipv6-subtrees true
+
+# You must provide at least one interface for babeld to operate on.
+{% for peer in wireguard_bb_peers %}
+interface bb{{ peer.name }}
+{% endfor %}
+#interface wlan0
+
+# Global options you might want to set. There are many more, see the man page.
+#debug 1
+local-port 33123
+#diversity true
+#random-id true
+
+# Per-interface configuration. Note that each interface referenced here
+# will be used by babeld.
+#interface eth1 rxcost 10
+#interface tun0 faraway true
+#interface wlan0 hello-interval 1
+
+# Since 1.4.2, you can also specify defaults for interface parameters, which
+# will be used for all interfaces except specified otherwise (see above).
+#default rxcost 42
+#default hello-interval 5
+
+# Since 1.5.0, you can use the RTT-based metric, most useful for a network
+# with tunnels (overlay network).
+#default enable-timestamps true
+#interface tun0 max-rtt-penalty 150
+#interface tun0 rtt-max 100
+default type wired max-rtt-penalty 128
+export-table 42
+import-table 42
+
+
+# Filtering rules.
+
+# Only accept routes included in a specific prefix.
+#in ip 192.168.42.0/24 allow
+#in ip 2001:db8:cafe:cafe::/64 allow
+#in deny
+
+redistribute metric 128
+# Only redistribute addresses from a given prefix, to avoid redistributing
+# all local addresses
+redistribute ip 10.222.0.0/16 local allow
+redistribute ip 2001:470:cd45:FF00::/56 local allow
+redistribute local deny
+
+# Redistribute a default route obtained otherwise (here, through DHCP or
+# configured statically).
+# Note that babeld ignores kernel routes with proto 3 (boot) by default.
+#redistribute proto 3 ip 0.0.0.0/0 eq 0 metric 50
+#redistribute proto 3 ip ::/0 eq 0 metric 50
+
diff --git a/roles/install_wireguard_backbone/tasks/main.yml b/roles/install_wireguard_backbone/tasks/main.yml
new file mode 100644
index 0000000..d0b725d
--- /dev/null
+++ b/roles/install_wireguard_backbone/tasks/main.yml
@@ -0,0 +1,24 @@
+---
+- name: create wireguard config for sites
+ template:
+ src: wg.conf.j2
+ dest: /etc/wireguard/wgbackbone.conf
+ mode: 0400
+
+- name: create wireguard up scripts for sites
+ template:
+ src: up.sh.j2
+ dest: /etc/wireguard/upbackbone.sh
+ mode: 0744
+
+- name: create wireguard down scripts for sites
+ template:
+ src: down.sh.j2
+ dest: /etc/wireguard/downbackbone.sh
+ mode: 0744
+
+- name: start and enable wireguard mesh
+ systemd:
+ name: wg-quick@wgbackbone.service
+ enabled: yes
+ state: started
diff --git a/roles/install_wireguard_backbone/templates/down.sh.j2 b/roles/install_wireguard_backbone/templates/down.sh.j2
new file mode 100644
index 0000000..07325bf
--- /dev/null
+++ b/roles/install_wireguard_backbone/templates/down.sh.j2
@@ -0,0 +1,5 @@
+#!/bin/bash
+{% for peer in wireguard_bb_peers %}
+ip link set down dev bb{{ peer.name }}
+ip link del bb{{ peer.name }} type ip6gretap
+{% endfor %}
diff --git a/roles/install_wireguard_backbone/templates/up.sh.j2 b/roles/install_wireguard_backbone/templates/up.sh.j2
new file mode 100644
index 0000000..97985f9
--- /dev/null
+++ b/roles/install_wireguard_backbone/templates/up.sh.j2
@@ -0,0 +1,7 @@
+#!/bin/bash
+{% for peer in wireguard_bb_peers %}
+ip link add bb{{ peer.name }} type ip6gretap remote {{ peer.address }} local {{ wireguard_bb_address }} ttl 255 dev wgbackbone
+ip link set mtu 1280 dev bb{{ peer.name }}
+ip link set up dev bb{{ peer.name }}
+ip address add {{ wireguard_bb_gre_ipv4 }} peer {{ peer.gre_ipv4 }} dev bb{{ peer.name }}
+{% endfor %}
diff --git a/roles/install_wireguard_backbone/templates/wg.conf.j2 b/roles/install_wireguard_backbone/templates/wg.conf.j2
new file mode 100644
index 0000000..8e8841a
--- /dev/null
+++ b/roles/install_wireguard_backbone/templates/wg.conf.j2
@@ -0,0 +1,15 @@
+[Interface]
+ListenPort = {{ wireguard_bb_port }}
+PrivateKey = {{ wireguard_bb_key }}
+Address = {{ wireguard_bb_address }}/48
+MTU = 1423
+PostUp = /etc/wireguard/upbackbone.sh
+PreDown = /etc/wireguard/downbackbone.sh
+
+{% for peer in wireguard_bb_peers %}
+[Peer]
+PublicKey = {{ peer.key }}
+AllowedIPs = {{ peer.address }}/128
+Endpoint = [{{ peer.endpoint }}]:{{ wireguard_bb_port }}
+PersistentKeepalive = 30
+{% endfor %}
diff --git a/setup_fastd.yml b/setup_fastd.yml
index a3ea662..163fe60 100644
--- a/setup_fastd.yml
+++ b/setup_fastd.yml
@@ -20,6 +20,8 @@
- install_bind
- install_wireguard
- install_wireguard_mesh
+ - install_wireguard_backbone
+ - install_babeld
- install_fastd
#- install_openvpn
#- install_monitoring