1 (edytowany przez adreskontaktowy 2022-11-21 13:20:58)

Temat: Wireguard - dostęp do kamery

Cześć, mam pewien problem z konfiguracją Wireguard pod najnowszym Gargoyle PL 1.13.0.2.

Uruchomiłem standardowo serwer Wireguard pod TP-Linkiem A7 (192.168.1.1, 10.64.0.1), oczywiście IP zewnętrzne jest.
Klientem jest TP-Link TL-WR842N (192.168.2.1, 10.64.0.2) z kamerą (192.168.2.160).

Otóż, mamy możliwość zdefiniowania z GUI na kliencie dwóch opcji (poprzez definicję peer'a na sewerze):

A) cały ruch z klienta do serwera przechodzi przez tunel (AllowedIPs = 0.0.0.0/0)
- wtedy jest połączenia z PC 192.168.1.101 z panelem WWW kamery 192.168.2.160
- do podglądu z kamery można się dostać także za pośrednictwem serwera producenta kamery (aplikacja Android)
- przy wyłączeniu serwera Wireguard (lub problemu z łącznością) kamera z PC przez tunel nie działa i nie działa także za pośrednictwem serwera producenta (przez aplikację Android)

B) tylko ruch lokalny jest puszczany przez tunel (AllowedIPs = 192.168.1.0/24)
- brak jest połączenia z PC 192.168.1.101 z panelem WWW kamery 192.168.2.160
- do poglądu kamery można się dostać za pośrednictwem serwera producenta kamery (aplikacja Android)
- przy wyłączeniu serwera wireguard (lub problemu z łącznością) podgląd kamery nadal działa tylko za pośrednictwem serwera producenta kamery (aplikacja Android)

Jak zrobić, aby mieć dostęp przez WWW do panelu kamery z sieci 192.168.1.*, ale także po wyłączeniu serwera Wireguard był podgląd za pośrednictwem serwera producenta kamery.

Przez Wireguard mogę mieć jedno lub drugie, a chcę mieć obie opcje.
Przez OpenVPN to mi działa znakomicie na tym samym routerze.

2

Odp: Wireguard - dostęp do kamery

Pewnie w openvpn miałeś dodane dodatkowe trasy do podsieci a tu tego nie robisz. Tak?

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

3 (edytowany przez adreskontaktowy 2022-11-21 13:27:53)

Odp: Wireguard - dostęp do kamery

Używam od lat OpenVPN z Gargoyle PL,
bo mi działa to "z pudełka", niczego nie muszę definiować z linii komend (tras itd.), wszystko konfiguruję z GUI bez żadnego kombinowania i w kilka chwil (OpenWrt mnie przerosło, choć próbowałem kilka razy, dlatego używam Gargoyle, bo wszystko w tym zakresie działało od ręki z GIU).

Z Wireguard, poprzez GUI, mogę zdefiniować, że
- albo będzie wszystko przez tunel, ale przy braku serwera nic nie działa (nawet internet na kliencie)
- albo będzie przez tunel tylko ruch lokalny, ale wtedy nie mam dostępu do panelu WWW kamery.

Chciałem to zrobić jedynie przez GUI.

4

Odp: Wireguard - dostęp do kamery

Jeżeli gui czegoś nie przewiduje i ci nie działa to nie zrobisz z gui, bo proste...

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

Odp: Wireguard - dostęp do kamery

Oczywiście kombinowałem takie coś:
AllowedIPs = 192.168.1.0/24,192.168.2.0/24,10.64.0.1/32,10.64.0.2/32
Niestety nic takiego nie działa.

Jeszcze czytałem, że można ustawić: AllowedIPs = 128.0.0.0/1, ale jeszcze nie próbowałem.

6

Odp: Wireguard - dostęp do kamery

Masz jeszcze konfigurację tego OpenVPN?

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

7 (edytowany przez adreskontaktowy 2022-11-21 14:22:52)

Odp: Wireguard - dostęp do kamery

To są trasy na serwerze (klienty OpenVPN i Wireguard są na dwóch różnych routerach TP-Link WR842N z modemami LTE przez USB - sieci komórkowe bez zewnętrznego IP):

Kernel IP routing table
Destination     Gateway         Genmask           Flags Metric Ref    Use  Iface
default         host-81-abc-de- 0.0.0.0               UG       0      0        0  eth0.2
10.8.0.0          *                   255.255.255.0     U        0      0        0   tun0              OpenVPN      (wszystko super)
10.64.0.0         *                  255.255.255.0     U         0      0        0  wg0               Wireguard     (nie łączy z WWW klienta 10.64.0.2:80)
10.64.0.2         *                  255.255.255.255 UH       0      0        0  wg0               Wireguard klient (nie łączy z WWW klienta)
81.abc.de.0      *                  255.255.240.0     U         0      0        0  eth0.2
192.168.1.0     *                  255.255.255.0     U         0      0        0  br-lan
192.168.2.0     *                  255.255.255.0     U         0      0        0  wg0               Wireguard    (nie łączy z WWW kamery 192.168.2.160)
192.168.4.0     10.8.0.4        255.255.255.0     UG      0      0        0  tun0               OpenVPN     (wszystko super)

Podejrzewam jednak, że to raczej kwestia konfiguracji na kliencie Wireguard.

8 (edytowany przez adreskontaktowy 2022-11-21 14:26:45)

Odp: Wireguard - dostęp do kamery

Od strony klienta Wireguard wygląda to tak:

Kernel IP routing table
Destination     Gateway         Genmask               Flags     Metric Ref    Use Iface
default            10.64.64.64       0.0.0.0                   UG     0      0        0 3g-wan
10.64.64.64     *                      255.255.255.255    UH     0      0        0 3g-wan
81.abc.de.255   10.64.64.64     255.255.255.255    UGH  0      0        0 3g-wan
192.168.1.0     *                      255.255.255.0        U      0      0        0 wg0           to chyba za mało, aby połączyć
192.168.2.0     *                      255.255.255.0        U      0      0        0 br-lan

Przy konfiguracji całego ruchu przez tunel, trasa 'default' jest przez 'wg0' i wtedy działa, ale to jest jasne, lecz bez serwera wtedy nie ma niczego.

9 (edytowany przez adreskontaktowy 2022-11-21 15:14:28)

Odp: Wireguard - dostęp do kamery

Plik wireguard_gargoyle z klienta Wireguard:

config client 'client'
    option allow_nonwg_traffic 'true'
    option server_host 'moj_serwer_dns'
    option server_port '51820'
    option ip '10.64.0.2'
    option server_public_key 'aaa'
    option allowed_ips '192.168.1.0/24'
    option private_key 'bbb'
    option public_key 'ccc'
    option enabled '1'

Tu nawet nie chodzi o kamerę, ale o to, że mam zestawiony tunel do łączenia LAN'ów, ale nie mogę się przez niego połączyć nawet od strony sieci lokalnej serwera do panelu konfiguracyjny WWW klienta (od trony sieci lokalnej klienta do sieci lokalnej serwera działa).
To dziwne, jak dla mnie.

10 (edytowany przez adreskontaktowy 2022-11-22 03:56:52)

Odp: Wireguard - dostęp do kamery

Znalazłem kilka przyczyn braku działania połączenia od strony sieci lokalnej serwera do klienta przy włączonym jedynie tunelowaniu transmisji lokalnej.

1. Jest błąd w GUI Gargoyle PL, bo przy Zapisie zmian (nawet bez naniesionych zmian) konfiguracji klienta na kliencie w pliku Network jest zapisywane/nadpisywane:
        list allowed_ips '192.168.1.0/24'
zamiast:    
        list allowed_ips '192.168.1.0/24'
        list allowed_ips '10.64.0.1/32'

Ten drugi zapis (stworzenie trasy) powoduje, że da się łączyć od strony serwera do klienta po obu adresach 192.168.2.1 oraz 10.64.0.2 (przy jednym wpisie nawet łączenie na 192.168.2.1 nie działa).

2. Klient Wireguard nie odświeża adresu IP serwera z DDNS i transmisja na stałe ustaje po zmianie IP serwera (OpenVPN odświeża/pobiera co jakiś czas IP z DDNS i sam przywraca komunikację).

3. Podobnie, serwer Wireguard, jeśli trzyma połącznie ze starym adresem IP klienta Wireguard, to już nie da się przywrócić transmisji po zmianie adresu IP klienta.

4. Aby zapoczątkować/wystartować w ogóle możliwość połączenia od strony sieci lokalnej serwera do klienta niezbędne jest np. połączenie się z Androida z podglądem kamery (podsieć klienta Wireguard) za pomocą połączenia przez serwer kamery. Wtedy dopiero inicjuje się połączenie i transmisja działa w obie strony.

Czemu klient Wireguard sam nie rozpoczyna/inicjuje transmisji? Bez tego, nie może nastąpić żadna transmisja z zewnątrz.
Czytałem, że to może być cecha protokołu Wireguard, ale w taki sposób ten protokół nie nadaje się do takich typowych celów, jak mój.

11

Odp: Wireguard - dostęp do kamery

Oczywiście że klient wireguard sam rozpoczyna transmisję. Klient zestawia połączenie i możesz normalnie z niego korzystać, czy to od strony serwera czy klienta. Nie Ty pierwszy używasz wireguarda przecież...

Klient wireguarda nigdy nie odświeży adresu DDNS. On przecież nie ma z tym nic wspólnego, wireguard robi tunel pomiędzy dwoma peerami a nie jest fizycznym interfejsem z publicznym adresem IP żeby jakiegoś ddnsa odświeżał. Coś chyba za bardzo zapędziłeś się w planach. A może pomyliłeś ddns z dns? Co i tak się nie zgadza bo wireguard ma na stałe przypisane adresy. Więc co ma odświeżać?

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

12 (edytowany przez adreskontaktowy 2022-11-22 14:03:30)

Odp: Wireguard - dostęp do kamery

Z tego co czytałem, to Wireguard to protokół bezpołączeniowy, czyli tworzy tunel tylko na czas transmisji.

Transmisję zawsze rozpoczyna klient, więc jeśli klient niczego pierwszy nie prześle (pakietu danych, a nie pakietu organizacyjnego), to serwer niczego do klienta nie może przesłać (brak tunelu).
To tłumaczy, czemu po restarcie nie mogę się połączyć z serwera do klienta.

To tym, jak połączę się do podglądu kamery przez protokół p2p producenta kamery (koniecznie od strony sieci lokalną serwera), to już komunikacja dwukierunkowa działa, bo kamera jest on-line poprzez internet klienta (nie tunel), ale po wysłaniu żądania przesłania obrazu, przesyła dane do sieci lokalnej, bo tam jest bliżej do programu Android do kamery) i tym samym sam klient zapoczątkowuje transmisję poprzez tunel (tworzy go).

Czemu inni nie mają takich problemów z Wireguard'em?
Bo używają zazwyczaj całej transmisji przez tunel (allowed_ips '0.0.0.0/0'), a przy pełnej transmisji zawsze coś jest do przesłania do serwera i tak się inicjuje transmisja i działa już praktycznie od restartu.

Zapewne Wireguard powstał, aby łączyć klientów z serwerem i to działa, bo sam klient rozpoczyna komunikację. A jak kończy przesyłać, to teoretycznie tunel ginie, co zapewnia większe bezpieczeństwo.

Tym różni się od OpenVPN, który tworzy tunel i jest on utrzymywany cały czas (i transmisja dwukierunkowa działa zawsze pomimo selektywnego tunelu), więc raczej OpenVPN nie zostanie wyparty przez Wireguard, bo służy do trochę innych celów.

PS.: Oczywiście można utworzyć zadanie i wykonywać co jakiś czas transmisję z klienta do serwera (co otworzy kanał), ale to jedynie obejście.

13

Odp: Wireguard - dostęp do kamery

Nie wiem jakie źródła czytasz ale mylisz się. Klient nawiązuje połączenie i już możesz się z serwera dostać do klienta, nawet jak to jest tylko zestawienie tunelu bez przewalania całego ruchu przez tunel. Sam zrób sobie taką konfigurację i sprawdź, nie musisz ufać w to co piszę.

Wireguard też ma swoje keepalive tunelu do jego podtrzymania.

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

14

Odp: Wireguard - dostęp do kamery

Napisałeś "Klient nawiązuje połączenie", czyli jest jak napisałem.
A czemu klient z kamerą ma rozpocząć transmisję, jeśli nie ma niczego do przesłania (do sieci lokalnej)?

Ja chcę jedynie się połączyć z kamerą przez jej panel WWW od strony sieci lokalnej serwera i to jest niemożliwe (bez inicjacji transmisji przez samego klienta).

No właśnie zrobiłem opisywany przypadek i jest tak jak opisałem.
Keepalive utrzymuje tunel przez dany czas i go zwalnia i znowu KLIENT MUSI rozpocząć transmisję, aby tunel się utworzył.

Jeśli jest inaczej, to podpowiedź mi jak zrobić działającą konfigurację, aby bez inicjacji tunelu przez samego klienta, można było się połączyć od strony serwera?
Jakiego parametru użyć, aby klient sam rozpoczął transmisję po restarcie i ją utrzymywał?

15 (edytowany przez Cezary 2022-11-22 14:39:25)

Odp: Wireguard - dostęp do kamery

No a kto ma nawiązać połączenie? Przecież serwer nie połączy sie do klienta, bo klient jest za natem. To klient zestawia połączenie do serwera i "nawiązując połączenie" mówię o zestwieniu tunelu a nie wysłaniu do serwera czegokolwiek po tym tunelu. Najpierw trzeba go zestawić żeby był, nie?

I nie, klient cały czas trzyma tunel. Nie trzeba robić nic po stronie klienta, tunel raz zestawiony jest, po prostu jest i nie trzeba nic z nim robić (o ile nie zostanie zerwany z jakiegoś powodu).

Klient musi zestawić tunel. To właśnie robi klient. Bez tunelu nie połączysz się od strony sewera, to chyba logicznie, prawda?

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

16 (edytowany przez adreskontaktowy 2022-11-22 14:59:29)

Odp: Wireguard - dostęp do kamery

To co ustawić, aby klient zestawił połączenie, bo po restarcie serwera i klienta (LTE), żadne połączenie nie jest zestawiane?

Piszę oczywiście o tunelu jedynie dla transmisji lokalnej, gdzie Gargoyle przy konfiguracji ustawia: list allowed_ips '192.168.1.0/24'.

17

Odp: Wireguard - dostęp do kamery

No taka: https://eko.one.pl/?p=openwrt-wireguard#openwrt z dokładnością do innego allowedips.

Dość standardowa, samo się podnosi wraz z uruchomieniem systemu.

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

18 (edytowany przez adreskontaktowy 2022-11-22 15:32:36)

Odp: Wireguard - dostęp do kamery

No ale w przykładzie jest tunel na całość ruchu, a tego nie chcę:

# uci add_list network.@wireguard_wg0[-1].allowed_ips="0.0.0.0/0"

PS.: Sprawdziłem i tunel nie jest utrzymywany (co jest sensowne, bo Keepalive=25), bo pomimo tego, że serwer (błędnie?) pokazuje połączenie Wireguard (od kilku godzin), to połączyć się nie da (od strony serwera). Uruchomienie podglądu kamery, czyli ponowienie transmisji od strony klienta (obejściem), przywraca łączność dwukierunkową.

19

Odp: Wireguard - dostęp do kamery

Napisałem - z dokładnością do innego allowedips. Przykład jest ogólny, nie dokładnie taki jak ty byś chciał.

Ja też sprawdziłem i mam w ten sposób połączonych kilkadziesiąt różnych klientów do swojego serwera, od wielu miesięcy. I w każdej chwili mogę z serwera się do nich dostać, a połączenie używane jest tylko do zarządzenia klientem, sam klient przez wireguarda nic nie wysyła.

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

20 (edytowany przez adreskontaktowy 2022-11-22 15:13:48)

Odp: Wireguard - dostęp do kamery

Oczywiście, gdy ustawię: AllowedIPs = 0.0.0.0/0 , to nie ma żadnego problemu.
Jestem przekonany, że w pliku Network na klientach masz AllowedIPs = 0.0.0.0/0.

PS.: No chyba, że piszesz o OpenWrt, gdzie może nie ma błędów występujących w Gargoyle.

21

Odp: Wireguard - dostęp do kamery

Nie, nie mam. Pisałem już że mam do zarządzania tunel i nie przyrzucam całego ruchu przez wireguard.

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

22 (edytowany przez adreskontaktowy 2022-11-22 15:31:28)

Odp: Wireguard - dostęp do kamery

Nie jest możliwe utrzymywanie tunelu, bo przecież sam pisałeś, że jest ustawione Keepalive, a po tym czasie tunel jest zamykany.
Musisz mieć coś niewielkiego, co z klienta cały czas wysyła do serwera przez sieć lokalną i utrzymuje otwarty tunel lokalny.

Mój plik 'Network' z kleinta:

config interface 'wg0'
    option proto 'wireguard'
    option private_key ''
    option listen_port '51820'
    list addresses '10.64.0.2/32'

config wireguard_wg0 'wgserver'
    option public_key ''
    option route_allowed_ips '1'
    option endpoint_host 'zewnetrzny_adres_serwera_wireguard'
    option endpoint_port '51820'
    list allowed_ips '192.168.1.0/24'
    list allowed_ips '10.64.0.1/32'

23

Odp: Wireguard - dostęp do kamery

Gdzie wyczytałeś ze keepalive służy do zamykania tunelu? Służy właśnie do podtrzymywania tunelu, liczba po nim to czas w sekundach jakim cyklicznie jest tunel "pingowany".

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

24 (edytowany przez adreskontaktowy 2022-11-22 16:05:53)

Odp: Wireguard - dostęp do kamery

No to może to jest rozwiązanie, bo nie mam Keepalive w konfiguracji?

Chociaż w tworzonym przez serwer Gargoyle pliku konfiguracji klienta jest 'PersistentKeepalive = 25', ale nie jest to najwidoczniej przenoszone do klienta przy imporcie.

25

Odp: Wireguard - dostęp do kamery

Ja zauważyłem że nie bardzo mi chcą działać tunele na wireguard bez keepalive dlatego na serwerze zawsze ustawiam 25 i na klientach to samo.