Wireguarg a propojení 2 NAT LAN přes veřejný server

Vilith

  • *****
  • 662
    • Zobrazit profil
Experimentuji s wireguardem a nalezl jsem článek https://www.zahradnik.io/wireguard-a-vpn-with-real-world-usage-in-mind a zkouším podle něj propojit 2 LAN za NAT přes server s veřejnou IP

Server je Debian 10, v obou lokalitách běží OpenWRT routery. Orientační schéma je v příloze

Nejlepší varianta, kterou se mi podařilo rozchodit, je, že se ze serveru dostanu do obou lokalit na zařízení v jednotlivých LAN, ale už se mi nedaří komunikovat přes server mezi zařízeními v LAN

Stále tápu, jak nastavit AllowedIPs na jednotlivých zařízeních, případně routing (kde a jaký)

Neměl by někdo funkční řešení mého problému?

Konfugurace wireguardu na serveru:

Kód: [Vybrat]
~ # cat /etc/wireguard/wg0.conf
[Interface]
Address = 192.168.222.1/24
Address = fd00:db80:0:222::1/64
SaveConfig = true
ListenPort = 51194
PrivateKey = xxx=

[Peer]
PublicKey = zzz=
AllowedIPs = 192.168.222.10/32, fd00:db80:0:222::10/128, 192.168.10.0/24, fd00:db80:0:10::/64
Endpoint = a.b.c.d:35681

[Peer]
PublicKey = yyy=
AllowedIPs = 192.168.222.20/32, fd00:db80:0:222::20/128, 192.168.20.0/24, fd00:db80:0:20::/64
Endpoint = e.f.g.h:46475


ja.

  • ****
  • 334
    • Zobrazit profil
    • E-mail
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #1 kdy: 19. 01. 2021, 16:26:54 »
AllowedIP je v podstate zoznam subnetov, routovanych cez dany wg interface. 0.0.0.0/0 znamena default gateway.

T.j. na gw v LAN A potrebujes mat v AllowedIP subnet  preLAN B a naopak.

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #2 kdy: 19. 01. 2021, 16:56:30 »
AllowedIP je v podstate zoznam subnetov, routovanych cez dany wg interface. 0.0.0.0/0 znamena default gateway.

T.j. na gw v LAN A potrebujes mat v AllowedIP subnet  preLAN B a naopak.

Bohužel, tohle mi neprojde, wireguard nedovolí ma serveru ve "středu" zadat stejné AllowedIP na obou peerech

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #3 kdy: 19. 01. 2021, 20:40:55 »
Toto nastavení mi nepomohlo:

Kód: [Vybrat]
peer A:
  allowed ips: 192.168.10.0/24, fd00:db80:0:10::/64, 192.168.222.10/32, fd00:db80:0:222::10/128, 192.168.222.1/32, fd00:db80:0:222::1/128, 192.168.222.20/32, fd00:db80:0:222::20/128, 192.168.20.0/24, fd00:db80:0:20::/64

Kód: [Vybrat]
peer B:
  allowed ips: 192.168.20.0/24, fd00:db80:0:20::/64, 192.168.222.20/32, fd00:db80:0:222::20/128, 192.168.222.1/32, fd00:db80:0:222::1/128, 192.168.222.10/32, fd00:db80:0:222::10/128, 192.168.10.0/24, fd00:db80:0:10::/64

a na serveru ve středu:

Kód: [Vybrat]
peer A:
  allowed ips: 192.168.222.10/32, fd00:db80:0:222::10/128, 192.168.10.0/24, fd00:db80:0:10::/64

peer B:
  allowed ips: 192.168.222.20/32, fd00:db80:0:222::20/128, 192.168.20.0/24, fd00:db80:0:20::/64

ja.

  • ****
  • 334
    • Zobrazit profil
    • E-mail
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #4 kdy: 19. 01. 2021, 20:47:20 »
Na server "v strede" to nedavat, tam dat do allowedip iba /32, ktoru ma peer alokovanu. Stred bude routovat podla svojej normalnej routovacej tabulky.


Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #5 kdy: 19. 01. 2021, 20:56:52 »
Na server "v strede" to nedavat, tam dat do allowedip iba /32, ktoru ma peer alokovanu. Stred bude routovat podla svojej normalnej routovacej tabulky.

Upraven střed na:

Kód: [Vybrat]
peer A:
  allowed ips: 192.168.10.0/24, fd00:db80:0:10::/64

peer B:
  allowed ips: 192.168.20.0/24, fd00:db80:0:20::/64

ale stále to není ono :(
Už si ze středu nepingnu na 192.168.222.10 ani na 192.168.222.20

Ještě to zkusím obráceně...

Kód: [Vybrat]
peer A:
  allowed ips: 192.168.222.10/32, fd00:db80:0:222::10/128

peer B:
  allowed ips: 192.168.222.20/32, fd00:db80:0:222::20/128

a potom zase nepingnu ze středu na 192.168.10.1 nebo 192.168.20.1
« Poslední změna: 19. 01. 2021, 21:03:28 od Vilith »

Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #6 kdy: 19. 01. 2021, 22:19:49 »
Tipnul bych si že problém bude ve špatně nastaveném routování.
Na peer A by mělo být:
ip route add 162.168.20.1/24 via 192.168.222.10 dev wg0
Na peer B:
ip route add 192.168.10.1/24 via 192.168.222.20 dev wg0

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #7 kdy: 19. 01. 2021, 22:35:31 »
na
   ip route add 162.168.20.1/24 via 192.168.222.10 dev wg0
hlásí invalid prefix

   ip route add 162.168.20.1/32 via 192.168.222.10 dev wg0
nepomohlo, stejně jako nepomohlo
   ip route add 162.168.20.0/24 via 192.168.222.10 dev wg0 

Dík za snahu, ale tudy cesta nevede... :(

Nebo už se zase někde motám zase v kruhu...

Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #8 kdy: 19. 01. 2021, 22:57:11 »
Ale jo. Tudy cesta určitě vede.
Dělal jsem něco obdobného pomocí OpenVPN na propojení 5ti lokalit.
Musím říct že nastavení routování byl právě ten největší masakr.
Všiml jsem si že jsem v tom příkazu zadal špatnou IP.
Místo 162.168.20.1/24 mělo být 192.168.20.1/24 tak zkus ještě to.
Ještě otázka. Je peer A i B befault gateway pro každou lokalitu?

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #9 kdy: 19. 01. 2021, 23:02:59 »
Pod OpenVPN mi to chodí (nebylo to až tak těžké - hlavně to je jinde popsané), jen jsem chtěl vyzkoušet něco nového, co nikde není pořádně popsané, jen naznačené :D

Každá lokalita má svou def. GW a jde na internet svou cestou - nechci veškerý provoz z LAN pouštět do tunelů. Jedná se jen o vzájemné propojení jejich LAN sítí

Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #10 kdy: 19. 01. 2021, 23:03:57 »
Ještě jedna důležitá věc ohledně peerů za NATem.
https://www.wireguard.com/quickstart/
Přeci si sekci "NAT and Firewall Traversal Persistence"
Na peerech je třeba nastavit parametr PersistentKeepalive=...
« Poslední změna: 19. 01. 2021, 23:07:00 od Ondřej Vaniš »

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #11 kdy: 19. 01. 2021, 23:48:06 »
Ještě jedna důležitá věc ohledně peerů za NATem.
https://www.wireguard.com/quickstart/
Přeci si sekci "NAT and Firewall Traversal Persistence"
Na peerech je třeba nastavit parametr PersistentKeepalive=...

PersistentKeepalive je samozřejmě nastavené - v tom problém není

Trápil jsem Google, ale nenašel jsem pořádnou ucelenou funkční radu, jak zrealizovat dané řešení. Proto se prám zde, zda to někdo nemá funkční

Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #12 kdy: 19. 01. 2021, 23:50:53 »
Pošli tedy konfiguráky wireguard na jednotlivých nodech a jejich routovací tabulky.
Ať tu nemusíme věštit z křišťálové koule. Jinak se dále nepohneme,

Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #13 kdy: 20. 01. 2021, 10:01:20 »
To co požaduješ provozuju a funguje to. Používám jen protokol IPV4.
Vycházel jsem z článku https://www.stavros.io/posts/how-to-configure-wireguard/ .
Konfigurace v OpenWRT https://danrl.com/writing/luci-proto-wireguard/ , https://doc.turris.cz/doc/en/public/wireguard.

Můj konfig předpokládá server s aktivními IPTABLES (používám CentOS).
Musí být povolený IP forwarding
Kód: [Vybrat]
sudo sysctl -w net.ipv4.ip_forward=1
This would enable IP forwarding immediately, but after a reboot it will revert back to default.
To permanently enable IP forwarding you would need to edit the /etc/sysctl.conf configuration file
(with superuser privileges or as root).

Použité adresní rozsahy - abych jednoduše rozlišil co je kde
10.10.10.x - adresy jednotlivých Wireguard uzlů
172.20.x.x - adresní rozsahy použité na routrech

Pro konfiguraci na serveru používám nástroj wg-quick, tj. reload konfigurace pak vypadá takto
Kód: [Vybrat]
sudo wg-quick down wg0&&sleep 1&&wg-quick up wg0
Konfigurace serveru pro wg-quick (/etc/wireguard/wg0.conf)
Kód: [Vybrat]
# Server file
[Interface]
# Which networks does my interface belong to? Notice: /24 and /64
# 255.255.255.0 => 24
Address = 10.10.10.1/24
PrivateKey = AGF.....
ListenPort = yyyyy
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = DomA.....
# Which source IPs can I expect from that peer? Notice: /32 and /128
AllowedIps = 10.10.10.100/32,172.20.100.0/24

[Peer]
PublicKey = MIcH.....
# Which source IPs can I expect from that peer? Notice: /32 and /128
AllowedIps = 10.10.10.130/32

[Peer]
PublicKey = tcHy.....
# Which source IPs can I expect from that peer? Notice: /32 and /128
AllowedIps = 10.10.10.150/32,172.20.150.0/24

AllowedIps - první adresa /32 je adresa konce tunelu, tj. adresa routru. Ta další adresa /24 je provoz který má tím tunelem jít.
Síťová karta má na serveru označení eth0.

Na serveru pak mám routování - nastaví si wg-quick sám
Kód: [Vybrat]
[~]$ ip route
default via 80.x.x.x dev eth0
10.10.10.0/24 dev wg0 proto kernel scope link src 10.10.10.1
80.x.x.x/24 dev eth0 proto kernel scope link src 80.x.x.x
172.20.100.0/24 dev wg0 scope link
172.20.150.0/24 dev wg0 scope link
...

Konfigurace klienta pro PC - kompletní provoz přes server
Kód: [Vybrat]
[Interface]
Address = 10.10.10.130/24
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = GI......

# Server
[Peer]
PublicKey = SERV.....
AllowedIPs = 0.0.0.0/0
Endpoint = 80.x.x.x:yyyyy
PersistentKeepalive = 25

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Wireguarg a propojení 2 NAT LAN přes veřejný server
« Odpověď #14 kdy: 20. 01. 2021, 18:11:34 »
Děkuji všem za pomoc

Konfiguraci jsem se pokusil stručně shrnout do přiloženého PDF souboru.
Snad to bude inspirací i pro ostatní

Chyběly mi PostUp a PostDown scripty na serveru, statické routy na nodech a správně zadat AllowedIP