Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: vpn22 15. 02. 2022, 19:52:35
-
Ahoj,
řeším problém s WireGuardem s připojením více než dvou peerů.
Na MikroTiku s veřejnou IP jsem nastavil WireGuard VPN. Dále jsem WireGuard nastavil na telefonu s Adroidem a vše fungovalo jak má. Poté jsem nastavil WireGuard na počítači s Windows a zde začaly problémy. Buď funguje WG pouze s telefonem a nebo pouze s počítačem (podle toho, který peer byl na MikroTiku naposledy editován).
Konfigurace adres na MikroTiku:
/ip address
add address=10.0.0.1/24 comment="LAN" interface=bridge1 network=10.0.0.0
add address=10.0.20.1/24 comment="WireGuard" interface=wg1 network=10.0.20.0
Konfigurace WireGuardu na MikroTiku:
add listen-port=51234 mtu=1420 name=vpn1
/interface wireguard peers
add allowed-address=10.0.20.2/32,10.0.0.2/32 comment="Android-TEL" interface=wg1 public-key="ANDROID-PUB-KEY"
add allowed-address=10.0.20.3/32,10.0.0.3/32 comment="Windows-PC" interface=wg1 public-key="WINDOWS-PUB-KEY"
Konfigurace na telefonu:
[Interface]
PrivateKey = ANDROID-PRIVATE-KEY
Address = 10.0.20.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = MIKROTIK-PUBLIC-KEY
AllowedIPs = 10.0.20.0/24, 10.0.0.0/24
Endpoint = vpn.example.com:51234
Konfigurace na PC:
[Interface]
PrivateKey = WINDOWS-PRIVATE-KEY
Address = 10.0.20.3/24
DNS = 8.8.8.8
[Peer]
PublicKey = MIKROTIK-PUBLIC-KEY
AllowedIPs = 10.0.20.0/24, 10.0.0.0/24
Endpoint = vpn.example.com:51234
V čem může být problém?
Díky za pomoc.
-
Proč máte na tom Mikrotiku i ty allowed-address 10.0.0.2/32 a 10.0.0.3/32, když klienti mají IP z 10.0.20.0/24? To bych odebral.
-
U klientu by mela byt nastavena adresa takto: Address = 10.0.20.2/32
-
@David
Dobrý připomínka. Asi to bylo kvůli tomu, aby telefon mohl komunikovat se zařízeními ze sítě 10.0.0.0/24. Každopádně, dal jsem to pryč z AllowedIPs, ale nepomohlo to.
@sosy
Změnil jsem prefixy na telefonu a na PC na /32, ale je to pořád stejné.
-
No a co to dělá? Co nefunguje?
@David
Dobrý připomínka. Asi to bylo kvůli tomu, aby telefon mohl komunikovat se zařízeními ze sítě 10.0.0.0/24. Každopádně, dal jsem to pryč z AllowedIPs, ale nepomohlo to.
Pokud je 10.0.0.0/24 na tom Mikrotiku, předpokládám, že jde o LAN rozsah, tak by to mohlo fungovat i bez tohoto v AllowedIPs (na Mikrotiku). Je to router, zná obě sítě. Pochopitelně ale záleží, jak je to dále nastavené.
-
Na routeri:
add allowed-address=10.0.20.2/32 comment="Android-TEL" interface=wg1 public-key="ANDROID-PUB-KEY"
add allowed-address=10.0.20.3/32 comment="Windows-PC" interface=wg1 public-key="WINDOWS-PUB-KEY"
vo wireguarde je tunel definovany ip adresou a verejnym klucom; allowed-address definuje tu ip adresu - preto /32 - a public-key definuje ten kluc.
na telefone:
[Interface]
...
Address = 10.0.20.2/24
...
[Peer]
...
AllowedIPs = 10.0.0.0/24
...
a na pc:
[Interface]
...
Address = 10.0.20.3/24
...
[Peer]
...
AllowedIPs = 10.0.0.0/24
...
Na peerovi je 'Address' ip adresa na wg rozhrani, vratane subnetu; 'AllowedIPs' je cisto informacia pre klienta, ako nastavit routovaciu tabulku. Subnet, v ktorom je jeho wg interface tam uvadzat netreba.
Samozrejme, takto sa dostanes iba po wg rozhranie na routeri. Pokial chces ist dalej, treba bud nastavit forward do sieti, kam sa wg klienti maju dostat, alebo prihodit wg rozhranie do interface listu, ktory to uz ma nastavene. Na domace ucely, pridaj interface wireguard1 do interface listu LAN:
/interface/list
add interface=wireguard1 list=LAN
-
Resil jsem neco podobnyho a nakonec mi pomohl TCP dump a nejaky clanek na netu. WG funguje dobre i za NATem, ale nektere veci proste nezvladne. Muj WG nemel verejnou IP adresu a tak jsem nakonec musel pro druhy peer pouzit jine cislo portu.
Pokud je vice stran za NATem a ani samotny WG server nema verejnou IP adreasu, tak je nutne rozlisit VPNky jinym cislem portu.
-
@GPU
Jak jsem psal v úvodním příspěvku, PC a telefon nefungují souběžně.
Vždy funguje pouze ten peer, jehož konfigurace byla na MikroTiku naposledy editována (stačí disable a enable).
Pokud dám disable+enable na MK u peera telefonu, tak telefon ve VPN funguje. Připojím se na webconfig MK přes adresu jeho wg1 rozhraní (10.0.20.1), připojím se například na NAS ze sítě 10.0.0.0/24... Ale PC nekomunikuje.
Když pak zákážu a zase povolím peera PC, tak funguje PC. Připojím se přes Winbox na MikroTik přes adresu jeho wg1 rozhraní, dostanu se na NAS ze subnetu 10.0.0.0/24, ale odříznu si zase telefon.
@Ivan Březina
Veřejnou adresu mám přímo na MK a WireGuard mám nastavený jediný.
-
1: WG funguje dobre i za NATem, ale nektere veci proste nezvladne.
Pokud je vice stran za NATem a ani samotny WG server nema verejnou IP adreasu, tak je nutne rozlisit VPNky jinym cislem portu.
Můžeš to rozvést nebo napsat, kdejsto četl. Docela bymětozajímalo.
Zkusil bych ponechat výchozí porty. A pak hloupá otázka na překonrolování - jsou ty veřejné a privátní klíče všech zařízení opravdu unikátní?
Já myslím že zakopaný pes by mohl být v tom endpoint. Protože se často omílá, že peeři když spolu chtějí komunikovat , tak odešlou paket na tu adresu, ze které protistrana komunikovala naposledy... A mám pocit, že ten počítač a telefon, jestli jsou ve stejné síti, že to tam asi může dělat problém. Zkusil bych třeba ještě se připojit přes mobilní data... Nemá router MASQ nastaven nebo hairpinning?
Viz zde článek na root.cz o wireguard (poslední díl letošní, předchozí 3 díly asi během 2 let)
-
@mikesznovu
Každé zařízení zkouším z jiné sítě.
Klíče jsem kontroloval několikrát. Pokud by byly špatně nastavené, tak by peer nefungoval nikdy. Jenomže on funguje, ale v jednu dobu vždy jen jeden jediný.
-
Taky sem řešil a je to až neuvěřitelně snadné, i když trošku zmatené.
v nastavení peer na routeru je třeba mít např. endpoint 10.0.200.100 a allow IPs 10.0.200.100/32
paradoxně v nastavení IP/address je třeba mít 10.0.200.0/24
další peer pak už 101 atd. a jede to bezproblémů.
-
Taky sem řešil a je to až neuvěřitelně snadné, i když trošku zmatené.
v nastavení peer na routeru je třeba mít např. endpoint 10.0.200.100 a allow IPs 10.0.200.100/32
paradoxně v nastavení IP/address je třeba mít 10.0.200.0/24
další peer pak už 101 atd. a jede to bezproblémů.
Presne to som pisal v komentari vyssie ;-) Aj s vysvetlenim, preco, a ze to nie je zmatene.
-
Ale vždyť jsi ten konfigurační soubor nijak neupravil kromě odstranění 10.0.0.x
A mám pocit, že je ty nastaven /24 vs /32 jsou naopak než na https://ondrej-sika.cz/blog/wireguard/ (Tam nevím jaký je důvod proč firemní počítač má adresu .100/32 když i mac i apple mají .101,.201/24)
[Interface]
PrivateKey = Priv/Office=
Address = 10.10.0.100/32
DNS = 1.1.1.1
Nicméně pokud je někde problém, první co bych vyzkoušel, je redukovat allowedIPs na /32....
Vypozoroval jsem, že pokud se překrývají, tak pakety sice dorazí od protistrany, ale daný pc je neodešle.
-
Prosímtě neraď, když netušíš, o čem píšeš.
Adresa toho clienta v interface musí být /24, to je dobře, jinak by se ten peer izoloval od ostatních pc v subnetu. To allowed je prakticky routing, routovat traffic chceš určitě do celého /24 subnetu, ne k jednomu konkrétnímu PC, takže neměnit.
Ale vždyť jsi ten konfigurační soubor nijak neupravil kromě odstranění 10.0.0.x
A mám pocit, že je ty nastaven /24 vs /32 jsou naopak než na https://ondrej-sika.cz/blog/wireguard/ (Tam nevím jaký je důvod proč firemní počítač má adresu .100/32 když i mac i apple mají .101,.201/24)
[Interface]
PrivateKey = Priv/Office=
Address = 10.10.0.100/32
DNS = 1.1.1.1
Nicméně pokud je někde problém, první co bych vyzkoušel, je redukovat allowedIPs na /32....
Vypozoroval jsem, že pokud se překrývají, tak pakety sice dorazí od protistrany, ale daný pc je neodešle.
-
Ale já neradím, já se ptám, protože mi to přišlo že ja. napsal to samé co tazatel a působilo to na mně, že se tady radí to udělat opačně, ale přitom stejně.
Ale to co říkáš, že Inteface -Address má být /24 to není ve sporu s tím co si myslím. Mimochodem příkaz wg parametr Interface-Address neukazuje, což i souhlasí s tím, že Interface-Address je jen parametr, který wireguard sám nešteluje, ale předává ho linuxovému ip addr add & ip route add - Ano tudiž defacto nastavení adresy a routing.
Ten výstřižek byl nešťastný příklad - na té stránce u ostatních (Mac & Iphone) je Address=/24. Bylo mi divné že zrovna u KlientVFirmě tam bylo /32.
2) A Moje praktická zkušenost, že jakmile se AllowedIps začnou překrývat, najednou začnou problémy, že někde se budou ztrácet pakety. A konkrétně jsem lokalizoval i kde: Ten u koho se překrývají, je zdroj problémů - neposílá pakety zpět. (patrně ani se nedostanou aplikaci, která naslouchá na portu). Což obvykle není vpn klient, který má jednoho peera( VPN server) ale VPN server, který má víc peerů a tudíž víc AllowerdIPs S Vědomím že VPN klient může být i router (v případě multiSites-to-Server * VPN, pak allowed IPS na serveru je třeba 10.0.1.0/24 10.0.2.0/24 10.0.3./24 apod, ), routery pak mají mají v allowed IPS 10.0.0.0/16 (Dodatek: InterfaceAddress bude taky /16)
* multiSites-to-Server : mé unikátní označení, že ty routery peerují jen s hlavním master serverem. Přišlo mi to názorější než site-to-site
-
Ale já neradím, já se ptám, protože mi to přišlo že ja. napsal to samé co tazatel a působilo to na mně, že se tady radí to udělat opačně, ale přitom stejně.
v mnoha navodech pisi /32 misto /24. Nedava mi to smysl ale pokud vim, kdyz jsem tam nekdy mel /24, tak to nejelo. Zbezne koukam, jak to mam nastaveny ted a mam tam skutecne /32, ale nevim, jestli by to nejelo i s /24