Wireguard - technische Diskussion

wireguard erlaubt seit letzter Woche auch Kernel 3.18++
dass ist nicht nur super für Android Geräte, sondern auch für aktuelles Gluon (2016++). Die sind im Moment in der Regel noch bei ~ 3.18 Kerneln.

damit kann man wireguard/gretap auch auf den 841er laufen lassen, soweit bin ich derweil. Nun stehen Geschwindigkeit Tests und ein Plan für Key/IP Austausch Peer<>Server noch an.

also von Hand unter ./gluon/openwrt/package/kerne/network - wireguard Ordner entsprechend angelegt und Makefile sowie files/wireguard.sh hinzugefügt.
(von hier kopiert https://github.com/openwrt/packages/tree/master/net/wireguard , sonst müsste man alternativ an den OpenWRT Commit als Grundlage drehen und das explodiert erfahungsgemäss gerne mal an vielen anderen Stellen)
(evtl im Ordner gluon/openwrt make menuconfig ausführen und wireguard sowie gre zum bauen vormerken)

danach die fastd-pakete aus der site.mk entfernt und die für wireguard/gre nötigen Pakete hinzugefügt. Wenn man nicht für die 4Mb Geräte baut, kann man fastd durchaus auch drin lassen.

# hinzugeügte Pakete zu site.mk
kmod-gre kmod-gre6 ip-full kmod-wireguard wireguard-tools \

# entfernte Pakete
#         gluon-config-mode-mesh-vpn \
#        gluon-mesh-vpn-fastd

related links
lede-wireguard-gretap-ergebnisse-unter-livebedingungen
wireguard-als-zukuenftige-vpn-loesung
erste wg tests
wireguard-tag

script für all incl auf knoten

# cat foo.sh 
#!/bin/sh

# every peer should have its own ip
IP=192.168.99.2

# check if key exist
[ -f /root/wg_privatekey ] || wg genkey > /root/wg_privatekey && wg pubkey < /root/wg_privatekey > /root/wg_publickey

# del and make new wg0
ip link del dev wg0 2>/dev/null || true
ip link add dev wg0 type wireguard

# if conf not exist make 
if [ ! -f /root/wg_conf ]; then
cat<<EOF > /root/wg_conf
[Interface]
ListenPort = 10099

[Peer]
PublicKey = Gqntn/96zfRrz6SedcNXzw7b+vyjn6IfZlFM8+6U63E= 
Endpoint = 136.243.153.228:10099
AllowedIPs = 0.0.0.0/0,fe80::/0
EOF
fi

# addconf
wg addconf wg0 /root/wg_conf
wg set wg0 private-key /root/wg_privatekey
ip addr add fdf1::$(cat /sys/class/net/eth0/address)/64 dev wg0
ip addr add fe80::$(cat /sys/class/net/eth0/address)/64 dev wg0
# <me> peer <the other>
ip address add $IP/32 peer 192.168.99.1/32 dev wg0
# test if v6 is sufficient , so own ip could be uniq
#ip address add fdf1::$(cat /sys/class/net/eth0/address) peer fdf1::16:3e:75:72:af/64 dev wg0
ip link set up dev wg0

# grestuff
ip link add gre4 type gretap remote 192.168.99.1 local $IP
ifconfig gre4 up

# batman
batctl if add gre4

helpfull lines for server…

# nebst dem anderen foo , siehe peer config ...  neuer peer zu server hinzufügen
# angenommen der server lauscht auf 10099 und wg0 intern auf 192.168.99.1
wg genkey > /root/wg_privatekey && wg pubkey < /root/wg_privatekey > /root/wg_publickey

wg set wg0 peer lustigerneuerpeerkey= allowed-ips 192.168.99.5/32
ip link add gre5 type gretap remote 192.168.99.5 local 192.168.99.1 ttl 255
ifconfig gre5 up
10 „Gefällt mir“