1 (edytowany przez Krukosz 2020-03-03 21:08:01)

Temat: Słaba wydajność VPN Wireguard

Mam u siebie w domu serwer NAS i chciałbym go udostępnić rodzinie po VPN.
Jakiś czas temu testowałem OpenVPN hostowany na moim routerze 1043ND, teraz router zmieniłem na Lenovo Newifi D2.

Mam zainstalowane tam OpenWrt 19 oraz skonfigurowanego teraz Wireguarda.
Problem w tym, że transfer pomiędzy sieciami (czyli de facto dostęp do NAS) odbywa się z prędkościami niewiele większymi od OpenVPN (było 1,3MB/s, teraz jest raptem 2MB/s).

Z racji tego, że lokalne transfery do/z NAS odbywają się z prędkością ponad 100MB/s taki spadek powoduje, że korzystanie z danych jest uciążliwe.

Czy ktoś z Was, forumowiczów udostępnia swoje zasoby używając VPN? Mógłbym zainwestować typowo w sprzęt (niekoniecznie router), który będzie serwerem VPN, ale czy warto? Czy będę w stanie się w jakikolwiek sposób zbliżyć do sensownych transferów? (10MB/s byłoby już ok, bo byłoby to ok. 1/3 wysycenia łącza światłowodowego, które są w obu miejscach).
Dodatkowy sprzęt to dodatkowe zużycie prądu oraz sam koszt zakupu.

2

Odp: Słaba wydajność VPN Wireguard

Tzn jak to testujesz? Jesteś w swoim lanie, połączyłeś się dodatkowo po wireguard i sprawdzasz jak masz prędkość? Czy robisz to z internetu?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Słaba wydajność VPN Wireguard

Robię to z internetu. NAS mam w jednej lokalizacji a testuje z drugiej.

4

Odp: Słaba wydajność VPN Wireguard

Jakie masz łącze? Bo chyba nie 100MB/s czyli 1Gbps? Openvpn jest bardzo słaby, przy wireguard powinieneś osiągnąć sporo więcej, choć oczywiście zależy to od możliwości procka. Zobacz np. https://lists.zx2c4.com/pipermail/wireg … 00333.html

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Słaba wydajność VPN Wireguard

W jednej i drugiej lokalizacji mam symetryczne 300MBit/s.
Pytanie czy po prostu mój router jest za słaby do dodatkowego uciągnięcia VPN, Mediatek w tym Lenovo jest lepszy od Atherosa z poprzedniego 1043ND, ale to nadal nie jest router z wyższej półki.

6

Odp: Słaba wydajność VPN Wireguard

Link który przytoczyłem był dla 841 który ma ten sam procek co w 1043 (no, powiedzmy, bo zaraz się ktoś przyczepi szczegółów). Siłą rzeczy potrzebujesz mocniejszego procka.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Słaba wydajność VPN Wireguard

co to za nas? postaw wireguarda na nasie jak sie da

Dom : router https://i.imgur.com/IuB6Zwy.png | TP-LINK T1700G-28TQ |Zyxel XGS-1210-12 | 6x Ruckus r310 unleashed  + Ruckus icx7150-c12p | Truenas scale 124TB 25Gb| Xpenology 12TB | apc smart ups 750 lcd smile 100Mb/s - 25Gb/s
Podróżne : GL.Inet MT3000  +1TB hdd
Działka : rb260gs 1j wdm 1Gb+ ruckus r310 + nb m5 + kilka kamer ip  + panel 285Wp + lifepo4 12v 60Ah .

8

Odp: Słaba wydajność VPN Wireguard

W międzyczasie uruchomiłem mój stary terminal t5730 i skonfigurowałem Wireguarda - jest lepiej, dochodzi do 4MB/s.
NAS to składak oparty o Xigmanas, mam tam AMD A8-5545, a więc najmocniejszy sprzęt z tych wszystkich.

Problem tylko w tym, że to jest system tak zrobiony, że nie da się łatwo czegokolwiek doinstalować.

9

Odp: Słaba wydajność VPN Wireguard

Od wczoraj trochę poszukałem, znalazłem kilka benchmarków i wynik jest taki, że najlepiej pójść w x86 zamiast ARM. Dodatkowo mój router oparty jest o Mediateka, o którym wszyscy wiemy, że ma problemy z otwartymi sterownikami w OpenWRT. Nie zawsze działa tutaj sprzętowe wsparcie szyfrowania.

Mając do dyspozycji budżet 200zł do wyboru mam (z tego co znalazłem):
- Raspberry Pi 4B 2GB RAM
- Kolejną maszynę w obudowie ITX opartą np. o Celerona J1800+4GB RAM
- Terminal HP T630 z AMD GX-217GA

Najmniejszy pobór prądu będzie miało Raspberry, ale znów Benchmarki mówią, że pobór prądu tego J1800 będzie niewiele większy (jakieś 3,5W vs ok. 5-6W).

Pytanie zatem co się lepiej sprawdzi w tej sytuacji. Sprzęt będzie wykorzystywany tylko i wyłącznie jako serwer VPN, pozostałe zadania w sieci spełniają albo router albo serwer NAS.

10

Odp: Słaba wydajność VPN Wireguard

Zawsze - jak najmocniejsza maszynka.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: Słaba wydajność VPN Wireguard

Sprawiłem sobie testowo płytę z Celeronem J1800 oraz 4GB RAM. Wydajność jest taka sama jak na Sempronie, a więc coś tu jest nie tak.

Czy winą może być to, że ISP blokuje pakiety UDP? (jak to sprawdzić?)

iperf na TCP dla Wireguarda postawionego na routerze przy standardowych ustawieniach daje 12 MBit/s

Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local xxxxx port 5001 connected with 10.19.92.10 port 37339
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.5 sec  16.0 MBytes  12.8 Mbits/sec

Natomiast na UDP po stronie serwera mam:

Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.19.92.1 port 5001 connected with 10.19.92.10 port 60239

A po stronie klienta po wysłaniu pakietu otrzymuję:

did not receive ack of last datagram after 10 tries

Do uruchomienia testów na kliencie wywołuję

dla TCP:

iperf -c adres.serwera

dla UDP:

iperf -c adres.serwera -b 100k

EDIT: doczytałem, że ostrzeżenie nt. acks pojawia się, ponieważ UDP tego nie obsługuje, a potrafi się to pojawić gdy jest coś nie tak z samym iperfem (testuje na androidzie). Tak czy inaczej po stronie serwera nie ma żadnego logu oprócz pierwszego połączenia się z siecią, żadnego podsumowania połączenia.

12

Odp: Słaba wydajność VPN Wireguard

a pokaz cfg Client i Server OVPN

13

Odp: Słaba wydajność VPN Wireguard

To jest wireguard. Konfiguracja to kropka w kropke przykładowa konfiguracja z tutoriala Cezarego

14

Odp: Słaba wydajność VPN Wireguard

celeron g1610 ogarnia kole 500mbps na wireguard wiec cos masz przyciete ze strony isp imho albo peering slaby

Dom : router https://i.imgur.com/IuB6Zwy.png | TP-LINK T1700G-28TQ |Zyxel XGS-1210-12 | 6x Ruckus r310 unleashed  + Ruckus icx7150-c12p | Truenas scale 124TB 25Gb| Xpenology 12TB | apc smart ups 750 lcd smile 100Mb/s - 25Gb/s
Podróżne : GL.Inet MT3000  +1TB hdd
Działka : rb260gs 1j wdm 1Gb+ ruckus r310 + nb m5 + kilka kamer ip  + panel 285Wp + lifepo4 12v 60Ah .

15

Odp: Słaba wydajność VPN Wireguard

Dla sprawdzenia  postawiłem maszynę VPS z DigitalOcean - najtańsza możliwa. Zainstalowałem CentOS 8 i tam iperf na UDP działa normalnie.

Ale przy okazji okazało się coś nowego, co nakierowuje mnie na moje problemy z firewallem. Jeżeli robię iperf używając IP routera z notacji lokalnej - wtedy UDP nie ma odpowiedzi, a jeżeli użyję notacji vpn to odpowiedź już mam.

Moja konfiguracja sieci to:
- sieć lokalna 10.21.92.1/24
-sieć vpn 10.19.92.1/24

adres routera to 10.19.92.1
adres klienta android to 10.19.92.10

config defaults
        option syn_flood '1'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'

config zone
        option name 'lan'
        list network 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'

config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option src_ip 'fc00::/6'
        option dest_ip 'fc00::/6'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-IPSec-ESP'
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'

config rule
        option name 'Allow-ISAKMP'
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'

config include
        option path '/etc/firewall.user'

config rule
        option src 'wan'
        option target 'ACCEPT'
        option dest_port '55055'
        option name 'wireguard'
        option proto 'tcp udp'

config zone
        option name 'wg'
        option input 'ACCEPT'
        option forward 'ACCEPT'
        option output 'ACCEPT'
        option network 'wg0'
        option masq '1'

config forwarding
        option src 'wg'
        option dest 'wan'

config forwarding
        option src 'wan'
        option dest 'wg'

config forwarding
        option src 'wg'
        option dest 'lan'

config forwarding
        option src 'lan'
        option dest 'wg'
root@POZROU1:~# cat /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd02:f46f:9733::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0.1'
        option proto 'static'
        option netmask '255.255.255.0'
        option ip6assign '60'
        list dns '208.67.222.222'
        list dns '208.67.220.220'
        option ipaddr '10.21.92.1'

config device 'lan_dev'
        option name 'eth0.1'
        option macaddr '20:76:93:4a:61:cf'

config interface 'wan'
        option ifname 'eth0.2'
        option proto 'dhcp'

config device 'wan_dev'
        option name 'eth0.2'
        option macaddr '20:76:93:4a:61:d0'

config interface 'wan6'
        option ifname 'eth0.2'
        option proto 'dhcpv6'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '0 1 2 3 6t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '4 6t'

config interface 'wg0'
        option proto 'wireguard'
        option private_key xxx
        option listen_port '55055'
        list addresses '10.19.92.1/24'

config wireguard_wg0
        option public_key xx
        option route_allowed_ips '1'
        list allowed_ips '0.0.0.0/0'
        option persistent_keepalive '25'
        option description 'lukasz_lg_g6'

wg:

interface: wg0
  public key: xxx
  private key: (hidden)
  listening port: 55055

peer: xxx
  endpoint: 37.30.21.195:1881
  allowed ips: 0.0.0.0/0
  latest handshake: 1 minute, 17 seconds ago
  transfer: 28.02 MiB received, 22.78 MiB sent
  persistent keepalive: every 25 seconds

16 (edytowany przez Krukosz 2020-03-05 19:08:43)

Odp: Słaba wydajność VPN Wireguard

Potestowałem trochę przez te dni i wnioski są takie:

- nie wygląda na to, aby winnym był dostawca internetu - normalny iperf po publicznych adresach IP pomiędzy VPS z digital ocean a moim routerem w praktyce wysyca oferowane łącze
- podczas iperf przez tunel vpn okazuje się, że gubienie pakietów jest na poziomie ponad 90%

Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.19.92.1 port 5001 connected with 10.19.92.10 port 52339
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-11.2 sec  8.25 MBytes  6.19 Mbits/sec   2.656 ms 70735/76621 (92%)

Zabawa z MTU (tj. zmiana na 1360 nie dała nic) - o co może chodzić?

17

Odp: Słaba wydajność VPN Wireguard

Czy macie jakies pomysły?

18 (edytowany przez batorencjusz 2020-03-09 01:07:01)

Odp: Słaba wydajność VPN Wireguard

Czy pakiety poza vpn lataja bez zadnych strat?

wygląda mi to na jakiś problem sprzętowy (przewód?) albo jakąś błędną konfiguracje firewalla (duplikacja przekierować albo coś w ten deseń).

Może problemem jest ipv6?

Spróbuj testowo uruchomić ten sam sprzęt na 18.06 z identycznym konfigiem

Zyxel T56 /|\ TL Wdr3600 /|\ TL wdr4300 /|\ MiR 3g /|\ ubi Rocket, nb, pb, ns, loco /|\ Netgear R6220 /|\ xiaomi AC2350 /|\ TL c6 v3 /|\ TL 1043 v1 v2 v4 /|\ dn2800mt , N100 /|\  TL DS-P-7001-04/08 /|\ TL SX3016F i kupa innego sprzętu

19

Odp: Słaba wydajność VPN Wireguard

Bez VPN strat pakietów nie ma w ogóle.

A co do ipv6 to co masz na myśli?

Testową konfigurację na 18.06 postaram się zrobić dzisiaj.

20

Odp: Słaba wydajność VPN Wireguard

Nie wiem,  czy mój przypadek będzie zbieżny, ale uruchomiłem wireguarda według poradnika Cezarego, skonfigurowałem klientów na Androidzie i i drugi na Windowsie i działało pięknie, szybko i w miarę wydajnie.
Po restarcie routera (chwilowy brak prądu) stanęło. Klienty się łączą, ale transmisja idzie bardzo powoli, prawie wcale. Żadnych zmian w konfigach.
W tej sytuacji trudni mi mieć zaufanie do wireguarda, ale zakładam, ze czegoś nie wiem i tu tkwi przyczyna.

21

Odp: Słaba wydajność VPN Wireguard

Jeżeli masz tak nadal - zrób stop i start samego wireguarda i zobacz czy coś to da.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

22

Odp: Słaba wydajność VPN Wireguard

Próbowałem nie zadać tego głupiego pytania i walczyłem dzielnie, ale poległem. Jak zrobić stop - start?

23

Odp: Słaba wydajność VPN Wireguard

ifdown wg0
ifup wg0

jeżeli tak nazwałeś sekcje w network.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

24

Odp: Słaba wydajność VPN Wireguard

Tak nazwałem.

Sprawdziłem, po down nie było wg, po up był. Nie ma żadnej różnicy, transmisja sączy się w bajtach.

peer: xyz
  endpoint: 37.47.xxx.xxx:7551
  allowed ips: (none)
  latest handshake: 1 minute, 5 seconds ago
  transfer: 540 B received, 756 B sent
  persistent keepalive: every 25 seconds

25

Odp: Słaba wydajność VPN Wireguard

W jaki sposób otworzyć port 5001 na firewallu tak abym mógł testować iperf po vpn?
Po WAN port otworzyłem i działa, ale po VPN nie mogę.

Zrobiłem konfiguracje z serwerem postawionym na VPS i podczas testów iperf pokazuje pełną prędkość łącza, teraz tą samą konfigurację stworzyłem na lokalnym sprzęcie i nie mogę tego przetestować.

Mam coś takiego:

config rule
        option dest_port '5001'
        option name 'iperf'
        option target 'ACCEPT'
        option proto 'tcp udp'
        option src '*'