1 (edytowany przez hejduk 2021-10-18 20:45:07)

Temat: Garygoyle + OpenVPN

Witajcie,
od dawna korzystam na kilku routerach z OpenVPN'a oraz OpenWrt (Luci, Garygoyle)
- Archer C7 (OpenWRT - Cezarego)
- teltoniki rut 240,955 i itp
- oraz stary poczciwy D-Link DWR 921.

Problem mam następujący, niektóre urządzenia które podłączam do sieci lan, nie są dostępne z poziomu połączenia zdalnego.
Zazwyczaj pełna konfiguracja(lub je poprawa) tj. adres, maska, brama - rozwiązuje problem. Aktualnie walczę z pewnym chińskim wynalazkiem, który pomimo prawidłowej parametryzacji, nie chce odpowiedzieć przy połączeniu zdalnym.

Teraz schemat wygląda następująco:

Klient VPN (polaczenie zdalne) --->Router (DWR 921 Garygoyle 1.13 + OpenVPN) <- klient 1 LAN
                                                                                                     <- klient 2 LAN (brak komunikacji).


Bedąc podłączonym do VPN (zdalnie) jestem w stanie spingować klienta 1 Lan natomiast klient 2 Lan - nie działa. Jestem w stanie wejść na strone www routera, klienta 1 ale na klienta 2 już nie.
Wszyscy klienci LAN maja takie same ustawienia - brama, maska, adres ip.

Router po podłaczeniu po ssh, jest w stanie spingować oba podłączone urządzenia do LAN.

Konbfiguracja Routera D-Link - świeża instalacja Garygoyla, podstawowe parametry LAN (np. 10.10.1.1), domyślne wyklikiwalne ustawienia OpenVPN'a (wiem, poszedłem na łatwiznę ;) ).

Jakie informacje sa Wam potrzebne?

2

Odp: Garygoyle + OpenVPN

Zwykle oznacza to tylko jedno - źle ustawiony gateway. Sprawdź ponownie.

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

3 (edytowany przez hejduk 2021-10-18 21:07:34)

Odp: Garygoyle + OpenVPN

Niestety tutaj wszystko jest ustawione jak ma być. Niestety bramka do układu VRF (klimatyzacja w budynku)trąci mocno chińszczyzną. Czy jest jakis sposób na ominięcie tego problemu?

4

Odp: Garygoyle + OpenVPN

Podłącz ją do lanu innego routera, zrób na routerze nat i przekierowanie wymaganych portów wanu. I taki router podłącz do swojej sieci zamiast bezpośrednio tej bramki. Zobacz czy tak będzie działać.

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

5

Odp: Garygoyle + OpenVPN

hejduk napisał/a:

...
Wszyscy klienci LAN maja takie same ustawienia - brama, maska, adres ip.

Router po podłaczeniu po ssh, jest w stanie spingować oba podłączone urządzenia do LAN.

Skoro router może pingować oba urządzenia tzn że napewno klient 2 dostał adres.

A jaką masz pewność że klient 2 przyjął adres bramy?
Skoro to jest "chiński" moduł to może przyjmuje tylko sam adres LAN i tylko na adresy z tej sieci umie odpowiadać.
Routing na routerze chyba masz dobrze skoro zdalnie odpowiada inny host.

Spróbuj wykorzystać SNAT żeby podmieniać adresy źródłowe tunelu na adres routera.

* WNDR 4300v2 * ||  * Xiaomi Miwifi Mini * || Netgear R6220 *
* DVBT2 - T230C *

6

Odp: Garygoyle + OpenVPN

Nie jestem pewien, teoretycznie w gui ma ustawiony adres, bramę, maske.

SNAT - maskarada? Mógłbym prosić jakaś podpwiedź?:)

7 (edytowany przez mar_w 2021-10-22 22:26:07)

Odp: Garygoyle + OpenVPN

Mogę pokazać jak to wygląda na urządzeniach Openwrt. Będzie dłuuuugo, ale po kolei pokażę co jak leci smile
Schemat wygląda następująco:

Klient VPN 10.8.0.2(polaczenie zdalne) --->Router (192.168.2.1 + OpenVPN 10.8.0.1) <- klient LAN po DHCP 192.168.2.178

Na kliencie LAN mamy na początek coś takiego:

# ip a | grep br-lan
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-lan state UP qlen 1000
5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    inet 192.168.2.178/24 brd 192.168.2.255 scope global br-lan

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 br-lan
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan

puszczamy ping ze zdalnego klienta Openvpn 10.8.0.2 na adres tego klienta w sieci LAN za serwerem OpenVPN i słuchamy co odbierze ten klient:

# tcpdump -i br-lan icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), capture size 262144 bytes
22:55:20.549554 IP 10.8.0.2 > 192.168.2.178: ICMP echo request, id 7589, seq 0, length 64
22:55:20.549648 IP 192.168.2.178 > 10.8.0.2: ICMP echo reply, id 7589, seq 0, length 64

Dostał pinga z adresem źródłowym 10.8.0.2
Ponieważ odpowiedzi na adres 10.8.0.2 wg domyślnej trasy routingu ma pchać przez bramę 192.168.2.1 a więc to robi i umie odpowiedzieć, bo wie gdzie smile a dalej to już brama czyli router pcha odpowiedź w tunel.

symulacja, gdy skasujemy trasę domyślną na tym kliencie w sieci LAN:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan

puszczamy ping ze zdalnego klienta Openvpn 10.8.0.2 na adres tego klienta i słuchamy:

# tcpdump -i br-lan icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), capture size 262144 bytes
22:57:38.096541 IP 10.8.0.2 > 192.168.2.178: ICMP echo request, id 7865, seq 0, length 64

Dostał pinga z adresem źródłowym 10.8.0.2.
Nie umie odpowiedzieć na adres 10.8.0.2, bo nie wie gdzie odesłać odpowiedź.

U Ciebie może być to samo.
Klima być może nie umie dopisać sobie trasy domyślnej mimo ustawionego gateway-a lub jakiś wewnętrzny firewall odrzuca inne adresy, niż ten co jest ustawiony na wewnętrznej karcie.

Router z serwerem Openvpn:

# ip a | grep -e tun0 -e br-lan
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-lan state UP qlen 1000
6: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    inet 192.168.2.1/24 brd 192.168.2.255 scope global br-lan
7: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN qlen 500
    inet 10.8.0.1/24 scope global tun0

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.4.2        0.0.0.0         UG    0      0        0 eth2
10.0.4.0        0.0.0.0         255.255.255.0   U     0      0        0 eth2
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan

dodaję regułę na routerze - serwerze OpenVPN:

# iptables -t nat -I POSTROUTING -s 10.8.0.2 -d 192.168.2.178 -j SNAT --to-source 192.168.2.1

objaśnienie: We wszystkim co leci od zdalnego klienta VPN z adresem źródłowym 10.8.0.2, do klienta sieci LAN o adresie 192.168.2.178 ma zostać zamieniony adres źródłowy, na IP routera 192.168.2.1.

Wracamy do klienta sieci LAN 192.168.2.178
puszczamy ping ze zdalnego klienta Openvpn 10.8.0.2 na adres LAN tego klienta i słuchamy....

# tcpdump -i br-lan icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), capture size 262144 bytes
23:20:50.200739 IP 192.168.2.1 > 192.168.2.178: ICMP echo request, id 10946, seq 0, length 64
23:20:50.200816 IP 192.168.2.178 > 192.168.2.1: ICMP echo reply, id 10946, seq 0, length 64

Ping był wysłany z adresu 10.8.0.2 a nie z routera!
Klient LAN odebrał pinga, jakby jego własna brama chciała się dowiedzieć czy on jeszcze żyje.
Ponieważ zna swoją bramę (2.1) to jej odpowiedział, a dalej brama przekazała odpowiedź ponieważ miała zapis w tablicy połączeń.

A co widzi zdalny klient OpenVPN:

# tcpdump -i tun0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
03:29:50.812678 IP 10.8.0.2 > 192.168.2.178: ICMP echo request, id 12134, seq 0, length 64
03:29:50.815651 IP 192.168.2.178 > 10.8.0.2: ICMP echo reply, id 12134, seq 0, length 64

Chciałem pokazać analizę ruchu sieciowego oraz  mechanizm podmiany adresu źródłowego i jaki z tego może być pożytek przy problematycznych i nietypowych hostach, (pod warunkiem, że ogólny firewall na routerze jest prawidłowy i zezwala na odpowiedni forward)

Maskarada też mogłaby być od biedy, ale wtedy zamieniałaby adresy od wszystkich klientów VPN do wszystkich hostów w LAN.
Skoro inne hosty odpowiadają, to czy naprawdę potrzebujesz takiej armaty skoro musisz celować tylko w jednego "małego króliczka"?
Decyzja należy do Ciebie.

* WNDR 4300v2 * ||  * Xiaomi Miwifi Mini * || Netgear R6220 *
* DVBT2 - T230C *