'Virtueel' lokaal IP voor OpenVPN client

Pagina: 1
Acties:

Acties:
  • +1 Henk 'm!

  • RoL0
  • Registratie: Oktober 2010
  • Laatst online: 11-10 08:56
Ivm de verhuizing van een server wil ik graag een tijdelijke oplossing voor een ip probleempje:

De situatie ziet er als volgt uit: Twee netwerken die elk aan het internet hangen, maar een ander lokaal subnet gebruiken. Bij router 1 is dit 192.168.1.0/24, bij router 2 is dit 192.168.2.0/24. Router 1 (DD-WRT) draait een OpenVPN server en geeft clients die verbinden een ip in de 192.168.0.0/24 range.

Afbeeldingslocatie: https://tweakers.net/i/UOtfe89mK1Oyw0Ko1UdIvIRFcL8=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/xqdzWZwcBpo8Xry3QnBzcVbd.png?f=user_large

De server achter router 2 verbindt met de OpenVPN-server op router 1, en ontvang het ip 192.168.0.2. De client achter router 1 (192.168.1.1) kan nu communiceren met de server door dit ip (192.168.0.2) te gebruiken.

Nu mijn vraag: Is het mogelijk om middels iptables op router 1 een 'virtueel' ip te maken voor de server, zodat de client deze kan bereiken via een 192.168.1.0/24 adres? Oftewel, een soort NAT rule die lokaal LAN verkeer naar een specifiek adres (bijv. 192.168.1.2) dat niet gebruikt wordt omschrijft naar een OpenVPN ip (192.168.0.2).

Waarom zou ik dit willen? Er draait ergens een embedded systeempje ('client') dat met een harcoded ip ('server', die eerst achter router 1 zat en nu achter router 2 zit) wil verbinden, en gezien de huidige omstandigheden kan ik niet even langs om de firmware te updaten.


Oplossing:
192.168.0.2 is het adres van de server dat het van OpenVPN krijgt, 192.168.1.33 is het adres waarop ik deze server bereikbaar wil maken.

1. Maak NAT rules aan op router 1 dmv iptables:
code:
1
2
3
iptables -t nat -I PREROUTING -d 192.168.1.33 -j DNAT --to 192.168.0.2
iptables -t nat -I POSTROUTING -s 192.168.0.2 -j SNAT --to 192.168.1.33
iptables -I FORWARD -d 192.168.0.2 -p tcp --dport 80 -j ACCEPT


2. Zorg dat de clients weten dat verkeer voor dit nieuwe adres naar router 1 moet, door dit als extra ip toe te voegen in router 1 (hier ging het fout!):
code:
1
ifconfig br0:1 192.168.1.33 255.255.255.0


Thx GlowMouse!

[ Voor 20% gewijzigd door RoL0 op 25-04-2020 00:49 . Reden: oplossing toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Je kunt in je OpenVPN server config gewoon een push route voor 192.168.1.0/24 toevoegen zodat al het verkeer voor dat subnet over de VPN-verbindig gaat.

https://unix.stackexchang...-with-a-different-gateway

edit:
Nee, wacht...
Pfff, ik zit je post nog steeds te ontcijferen, geloof ik. Je wilt dus dat "een embedded systeem" op zijn eigen IP-adres (192.168.2.x/24) bereikbaar wordt voor de clients die verbonden zijn met de VPN-server? Ik vrees dat je die route niet gaat kunnen maken, zonder extra router.

Ik weet niet wat er op Server 2 draait, maar wellicht dat je, via VPN, met zijn remote interface (SSH of RDP) kan verbinden om vanaf daar de connectie naar het lokale embedded systeem te verbinden?

[ Voor 50% gewijzigd door Room42 op 24-04-2020 23:51 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Wat je wilt op router 1 staat hier beschreven onder SNAT/DNAT, alleen 'PUBLIC IP' moet een intern ip-adres zijn die client kan bereiken:
https://wiki.dd-wrt.com/wiki/index.php/One-to-one_NAT

[ Voor 11% gewijzigd door GlowMouse op 24-04-2020 23:51 ]


Acties:
  • 0 Henk 'm!

  • RoL0
  • Registratie: Oktober 2010
  • Laatst online: 11-10 08:56
Room42 schreef op vrijdag 24 april 2020 @ 23:44:
Je kunt in je OpenVPN server config gewoon een push route voor 192.168.1.0/24 toevoegen zodat al het verkeer voor dat subnet over de VPN-verbindig gaat.

https://unix.stackexchang...-with-a-different-gateway
Die staat er al in, en daarmee kan ik vanaf 'Server' op 192.168.2.1/192.168.0.2 ook verbinding maken met de client, Ik wil nu echter dat de client de server op een 'lokaal' adres kan bereiken, zoals 192.168.1.2.

Ik kan mijn server op de OpenVPN adapter een extra IP toekennen, maar router 1 zal dit IP nooit over de OpenVPN gooien, omdat dit een lokaal adres is.

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
RoL0 schreef op vrijdag 24 april 2020 @ 23:51:
[...]


Die staat er al in, en daarmee kan ik vanaf 'Server' op 192.168.2.1/192.168.0.2 ook verbinding maken met de client, Ik wil nu echter dat de client de server op een 'lokaal' adres kan bereiken, zoals 192.168.1.2.

Ik kan mijn server op de OpenVPN adapter een extra IP toekennen, maar router 1 zal dit IP nooit over de OpenVPN gooien, omdat dit een lokaal adres is.
Post eens een route print vanaf de machine waarop je het embedded systeem wilt bereiken?

En geef het embedded systeem ook even een naampje en IP-adres, dat refereert wat makkelijker. ;)
Of nog beter: verwerk dat systeem in je tekening. :z

[ Voor 10% gewijzigd door Room42 op 24-04-2020 23:58 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • RoL0
  • Registratie: Oktober 2010
  • Laatst online: 11-10 08:56
Het 'embedded systeem' is een esp32 = 'client'. Deze zit zonder VPN verbinding gewoon achter router 1.

'client' wil nu 'server' bereiken alsof deze nog gewoon achter router 1 zit. Echter, deze zit achter router 2 en is met een VPN verbonden met router 1, waardoor deze wel bereikbaar is maar een ander adres gekregen heeft.
'Client' probeert echter nog steeds met het oude adres te verbinden. Omdat ik dit niet kan aanpassen, zou ik graag de 'Server' ook op zijn oude adres bereikbaar maken.

De relevante routes in 'Server' zijn nu:
code:
1
2
3
4
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0   192.168.2.254      192.168.2.10     25
      192.168.1.0  255.255.255.128      192.168.0.1      192.168.0.2    291
    192.168.1.128  255.255.255.128      192.168.0.1      192.168.0.2    291
GlowMouse schreef op vrijdag 24 april 2020 @ 23:50:
Wat je wilt op router 1 staat hier beschreven onder SNAT/DNAT, alleen 'PUBLIC IP' moet een intern ip-adres zijn die client kan bereiken:
https://wiki.dd-wrt.com/wiki/index.php/One-to-one_NAT
Ik heb het volgende toegevoegd aan de iptables van router 1.

code:
1
2
3
iptables -t nat -I PREROUTING -d 192.168.1.33 -j DNAT --to 192.168.0.2
iptables -t nat -I POSTROUTING -s 192.168.0.2 -j SNAT --to 192.168.1.33
iptables -I FORWARD -d 192.168.0.2 -p tcp --dport 80 -j ACCEPT


Ik kan vanaf een client achter router 1 wél een webpagina openen op 192.168.0.2:80, maar niet op 192.168.1.33:80

code:
1
iptables -t nat -L -n -v
geeft:
code:
1
2
3
4
5
6
7
8
9
Chain PREROUTING (policy ACCEPT 250K packets, 30M bytes)
 pkts bytes target     prot opt in     out     source               destination
---
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.1.33        to:192.168.0.2

Chain POSTROUTING (policy ACCEPT 161K packets, 17M bytes)
 pkts bytes target     prot opt in     out     source               destination
    9   502 SNAT       0    --  *      *       192.168.0.2          0.0.0.0/0           to:192.168.1.33
---

[ Voor 42% gewijzigd door RoL0 op 21-02-2021 16:58 . Reden: typo in ipconfig 'show rules' command ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Heb je 192.168.1.33 wel toegevoegd als ip-adres op router 1?

Acties:
  • 0 Henk 'm!

  • RoL0
  • Registratie: Oktober 2010
  • Laatst online: 11-10 08:56
GlowMouse schreef op zaterdag 25 april 2020 @ 00:26:
Heb je 192.168.1.33 wel toegevoegd als ip-adres op router 1?
Toegevoegd? Op welke manier?
Ik heb nu alleen bovenstaande iptables commando's uitgevoerd.

Acties:
  • +2 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Dan weet de client niet dat verkeer voor 192.168.1.33 naar router 1 moet. Dat ip-adres bevindt zich in het subnet van de client, dus daar moet een arp-response voor komen. De makkelijkste manier is om dat ip-adres toe te voegen aan router 1.

Acties:
  • 0 Henk 'm!

  • RoL0
  • Registratie: Oktober 2010
  • Laatst online: 11-10 08:56
Ah, de client ziet natuurlijk dat het in zijn subnet zit, dus stuurt het in dit geval juist níet naar de gateway (=router1).

Ik heb het ip nu toegevoegd met
code:
1
ifconfig br0:1 192.168.1.33 255.255.255.0


Op de client zie ik in de arp table (arp -a) nu inderdaad een entry for 192.168.1.33 naar het MAC-address van router1, waarmee pakketten dus op de router aankomen.

En inderdaad, ik kan nu ineens mijn machine achter router 2 met een "router 1 subnet" (192.168.1.33) bereiken. Het toevoegen van de arp entry was dus inderdaad het issue, bedankt!
Pagina: 1