Angelehnt an : WireGuard als zukünftige VPN-Lösung? ---- Gluon/openwrt linux kernel 4.1++ ?
#Zusammenfassung
Wir haben LEDE im Blankodurchsatz und mit aktuellem Wireguard getestet auf TP-Link841N v11.1 Routern. (4MB Flash, 32 Mb Ram , CPU:650.000MHz)
genommen haben wir das vom 27.Juli 2016 LEDE
Linux version 4.4.15 (buildbot@builds) (gcc version 5.4.0 (LEDE GCC 5.4.0 r1114) ) … HEAD, r1117
Blankodurchsatz auf den Kisten mit reinem Routing LAN 93 Mbs
Durchsatz mit Wireguard , im jetzigen Zustand 15.5 Mbs , allerdings haben wir WG dabei auch abgeschossen, bzw war akut danach nicht mehr pingbar von einer Seite - zwischenzeitlich einen Load von 2.6 erzeugt und eon „out of Ram on eth0 … oomkiller“, das zeigt auf einen Bug - das heisst das da durchaus Spielraum nach oben ist, ansonsten erstmal schwer ernüchternd.
Der Bug(2) muss nicht in Wireguard selber liegen, hier teilen wir erstmal nur unsere Zwischenergebnisse.
[ 4316.816332] netifd invoked oom-killer: gfp_mask=0x24201ca, order=0, oom_score_adj=0
setup
Das Setup bestand aus
Laptop ↔ 841 ↔ 841 ↔ Laptop , auf den Laptops wurde mit Iperf3 gemessen.
die laptops hingen an lan und die Router wurde via WAN miteinander verbunden
installierte Pakete auf den 841 - LEDE Routern
mit einem opkg update && opkg install kmod-wireguard wireguard-tools sind wir in ein nicht genug Speicher getappt … die Pakete einzeln runterladen mit opkg --download-only install … in ein /tmp/wg ordner und dort dann opkg install * hat funktioniert
(eigentlich wollten wir noch l2tp on top und fastd im Vergleich testen, iperf haben wir letztendlich NICHT auf den Geräten direkt selber benutzt, daher die Pakete dazu)
# mkdir /tmp/wg ; cd /tmp/wg; opkg update; opkg install --download-only wireguard-tools libmnl kmod-wireguard kmod-udptunnel4 kmod-udptunnel4 kmod-ipt-hashlimit kmod-ipt-core libpthread uclibcxx iperf kmod-l2tp
# cd /tmp/wg; opkg install *
# ls /tmp/wg
fastd_18-1_mips_34kc.ipk kmod-wireguard_4.4.15+0.0.20160722-1_mips_34kc.ipk
iperf_2.0.9-1_mips_34kc.ipk libmnl_1.0.3-2_mips_34kc.ipk
kmod-ipt-hashlimit_4.4.15-1_mips_34kc.ipk libpthread_1.1.15-1_mips_34kc.ipk
kmod-l2tp_4.4.15-1_mips_34kc.ipk librt_1.1.15-1_mips_34kc.ipk
kmod-tun_4.4.15-1_mips_34kc.ipk uclibcxx_0.2.4-3_mips_34kc.ipk
kmod-udptunnel4_4.4.15-1_mips_34kc.ipk wireguard-tools_0.0.20160722-1_mips_34kc.ipk
kmod-udptunnel6_4.4.15-1_mips_34kc.ipk
wireguard script und routing
natürlich auf dem 2. router angepasst
root@lede:/tmp# cat wg.sh
#!/bin/sh
IFACE=wg0
cat <<EOF > /tmp/wg_conf
[Interface]
ListenPort = 40000
[Peer]
# pubkey from other router
PublicKey = Z5ooa4tuBZVH3vOQUH22cjJIEXCUVoyagmXT6RC9QEE=
# on the other router this should be
# AllowedIPs = 10.10.0.1/32, 192.168.1.1/32, 192.168.1.23/32
# Endpoint = 10.0.0.1:40000
AllowedIPs = 10.10.0.2/32, 192.168.2.1/32, 192.168.2.23/32
Endpoint = 10.0.0.2:40000
EOF
# just one previous generated secret key ... the correct pubkey need to be in 2nd router
cat <<EOF > /tmp/privatekey
uGyzl5QPUpMkJlRvTPM7kMjX/s6olCVUyHFGCbTAY0k=
EOF
/sbin/ip link add dev $IFACE type wireguard
# on the other router should be
# /sbin/ip address add dev $IFACE 10.10.0.2 peer 10.10.0.1
/sbin/ip address add dev $IFACE 10.10.0.1 peer 10.10.0.2
/usr/bin/wg set $IFACE private-key /tmp/privatekey
/usr/bin/wg addconf $IFACE /tmp/wg_conf
# /sbin/ip link set $IFACE down
# /sbin/ip link del dev $IFACE
ifconfig wg0 up
blankes Routing - 93Mbs
###############
# plain routing through 2 841v11.1
root@K:/home/k/wiki/wg-lede# iperf3 -c 192.168.2.23 -p 4000 -t 20
Connecting to host 192.168.2.23, port 4000
[ 4] local 192.168.1.23 port 37940 connected to 192.168.2.23 port 4000
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 11.6 MBytes 96.9 Mbits/sec 0 127 KBytes
[ 4] 1.00-2.00 sec 11.4 MBytes 95.4 Mbits/sec 0 205 KBytes
[ 4] 2.00-3.00 sec 11.2 MBytes 93.8 Mbits/sec 1 165 KBytes
[ 4] 3.00-4.00 sec 11.1 MBytes 93.3 Mbits/sec 0 187 KBytes
[ 4] 4.00-5.00 sec 11.2 MBytes 94.4 Mbits/sec 0 187 KBytes
[ 4] 5.00-6.00 sec 11.2 MBytes 94.4 Mbits/sec 0 187 KBytes
[ 4] 6.00-7.00 sec 11.2 MBytes 93.8 Mbits/sec 0 187 KBytes
[ 4] 7.00-8.00 sec 11.1 MBytes 93.3 Mbits/sec 0 187 KBytes
[ 4] 8.00-9.00 sec 11.1 MBytes 93.3 Mbits/sec 2 146 KBytes
[ 4] 9.00-10.00 sec 11.2 MBytes 94.4 Mbits/sec 0 150 KBytes
[ 4] 10.00-11.00 sec 11.2 MBytes 93.8 Mbits/sec 0 150 KBytes
[ 4] 11.00-12.00 sec 11.1 MBytes 93.3 Mbits/sec 0 161 KBytes
[ 4] 12.00-13.00 sec 11.2 MBytes 93.8 Mbits/sec 0 167 KBytes
[ 4] 13.00-14.00 sec 11.2 MBytes 93.8 Mbits/sec 0 168 KBytes
[ 4] 14.00-15.00 sec 11.1 MBytes 93.3 Mbits/sec 0 173 KBytes
[ 4] 15.00-16.00 sec 11.1 MBytes 93.3 Mbits/sec 0 181 KBytes
[ 4] 16.00-17.00 sec 11.1 MBytes 93.3 Mbits/sec 2 120 KBytes
[ 4] 17.00-18.00 sec 11.2 MBytes 93.8 Mbits/sec 0 139 KBytes
[ 4] 18.00-19.00 sec 11.1 MBytes 92.8 Mbits/sec 1 151 KBytes
[ 4] 19.00-20.00 sec 11.2 MBytes 93.8 Mbits/sec 0 160 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-20.00 sec 224 MBytes 93.9 Mbits/sec 6 sender
[ 4] 0.00-20.00 sec 223 MBytes 93.7 Mbits/sec receiver
iperf Done.
# on lede router
CPU: 0% usr 6% sys 0% nic 42% idle 0% io 0% irq 51% sirq
CPU: 0% usr 6% sys 0% nic 38% idle 0% io 0% irq 53% sirq
Wireguard Routing - 15Mbs
##############
Testergebnis durch wireguard
# iperf3 -c 192.168.2.23 -p 4000 -t 20
Connecting to host 192.168.2.23, port 4000
[ 4] local 192.168.1.23 port 38526 connected to 192.168.2.23 port 4000
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 2.02 MBytes 17.0 Mbits/sec 70 8.03 KBytes
[ 4] 1.00-2.00 sec 1.79 MBytes 15.0 Mbits/sec 95 6.69 KBytes
[ 4] 2.00-3.00 sec 1.75 MBytes 14.7 Mbits/sec 82 6.69 KBytes
[ 4] 3.00-4.00 sec 1.82 MBytes 15.3 Mbits/sec 95 4.02 KBytes
[ 4] 4.00-5.00 sec 1.89 MBytes 15.9 Mbits/sec 84 8.03 KBytes
[ 4] 5.00-6.00 sec 1.86 MBytes 15.6 Mbits/sec 85 8.03 KBytes
[ 4] 6.00-7.00 sec 1.84 MBytes 15.4 Mbits/sec 86 6.69 KBytes
[ 4] 7.00-8.00 sec 1.82 MBytes 15.2 Mbits/sec 89 6.69 KBytes
[ 4] 8.00-9.00 sec 1.87 MBytes 15.7 Mbits/sec 86 6.69 KBytes
[ 4] 9.00-10.00 sec 1.94 MBytes 16.3 Mbits/sec 90 8.03 KBytes
[ 4] 10.00-11.00 sec 1.85 MBytes 15.5 Mbits/sec 79 8.03 KBytes
[ 4] 11.00-12.00 sec 1.84 MBytes 15.4 Mbits/sec 82 8.03 KBytes
[ 4] 12.00-13.00 sec 1.85 MBytes 15.5 Mbits/sec 84 6.69 KBytes
[ 4] 13.00-14.00 sec 1.87 MBytes 15.7 Mbits/sec 71 8.03 KBytes
[ 4] 14.00-15.00 sec 1.84 MBytes 15.5 Mbits/sec 75 6.69 KBytes
[ 4] 15.00-16.00 sec 1.78 MBytes 14.9 Mbits/sec 80 5.36 KBytes
[ 4] 16.00-17.00 sec 1.77 MBytes 14.9 Mbits/sec 89 8.03 KBytes
[ 4] 17.00-18.00 sec 1.85 MBytes 15.5 Mbits/sec 83 6.69 KBytes
[ 4] 18.00-19.00 sec 1.85 MBytes 15.5 Mbits/sec 86 5.36 KBytes
[ 4] 19.00-20.00 sec 1.80 MBytes 15.1 Mbits/sec 87 5.36 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-20.00 sec 36.9 MBytes 15.5 Mbits/sec 1678 sender
[ 4] 0.00-20.00 sec 36.8 MBytes 15.5 Mbits/sec receiver
Wireguard heavy load on Node
Load average: 2.36 0.61 0.20 1/38 1920
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
97 2 root SW 0 0% 0% [kworker/0:1]
1198 1 root S 1632 6% 0% /sbin/netifd
1 0 root S 1524 5% 0% /sbin/procd
690 1 root S 1348 5% 0% /usr/sbin/odhcpd
1896 1 root S 1224 4% 0% /sbin/logd -S 64
1897 1893 root S 1180 4% 0% -ash
1920 1897 root R 1180 4% 0% top
821 1 root S < 1176 4% 0% /usr/sbin/ntpd -n -N -S /usr/sbin/ntp
447 1 root S 1176 4% 0% /sbin/ubusd
1893 723 root S 1124 4% 0% /usr/sbin/dropbear -F -P /var/run/dro
723 1 root S 1056 4% 0% /usr/sbin/dropbear -F -P /var/run/dro
1305 1 dnsmasq S 1048 4% 0% /usr/sbin/dnsmasq -C /var/etc/dnsmasq
1915 1198 root S 916 3% 0% odhcp6c -s /lib/netifd/dhcpv6.script
448 1 root S 892 3% 0% /sbin/askfirst /usr/libexec/login.sh
3 2 root SW 0 0% 0% [ksoftirqd/0]
96 2 root SW 0 0% 0% [kswapd0]
98 2 root SW 0 0% 0% [kworker/u2:2]
7 2 root SW 0 0% 0% [kworker/u2:1]
192 2 root SW 0 0% 0% [spi0]
^C387 2 root SWN 0 0% 0% [jffs2_gcd_mtd3]
root@lede:~#
root@lede:~# uptime
02:22:38 up 1:12, load average: 2.16, 0.59, 0.20
routen hints
####### Config routen n3ph
default via 172.16.0.1 dev wlp2s0 proto static metric 600
10.0.0.0/24 via 192.168.2.1 dev enp0s25
10.10.0.0/24 via 192.168.2.1 dev enp0s25
127.0.0.0/8 dev lo scope host
172.16.0.0/16 dev wlp2s0 proto kernel scope link src 172.16.2.119 metric 600
192.168.1.0/24 via 192.168.2.1 dev enp0s25
192.168.2.0/24 dev enp0s25 proto kernel scope link src 192.168.2.23
####### config routen n3ph 841-11
10.0.0.0/24 dev eth1 src 10.0.0.2
10.10.0.1 dev wg0 src 10.10.0.2
192.168.1.0/24 via 10.10.0.1 dev wg0
192.168.2.0/24 dev br-lan src 192.168.2.1
####### config routen fuzzle 841-11
root@lede:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 * 255.255.255.0 U 0 0 0 eth1
10.10.0.2 * 255.255.255.255 UH 0 0 0 wg0
192.168.1.0 * 255.255.255.0 U 0 0 0 br-lan
192.168.2.0 10.10.0.2 255.255.255.0 UG 0 0 0 wg0
root@lede:~# ip route
10.0.0.0/24 dev eth1 src 10.0.0.1
10.10.0.2 dev wg0 src 10.10.0.1
192.168.1.0/24 dev br-lan src 192.168.1.1
192.168.2.0/24 via 10.10.0.2 dev wg0
####### config routen fuzzle
$ route
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 600 0 0 wlan0
10.0.0.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0
10.10.0.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0
10.60.0.0 0.0.0.0 255.255.0.0 U 600 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
192.168.2.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0
discourse limit
sollte mind im erklärbär höher liegen .!!