Adresa VPN verzus DHCP prenájom v LAN: kto prideľuje IP tunela?
VPN klient zobrazuje adresu, ktorá sa nikdy neobjaví v súbore prenájmov LAN. Prečítajte klienta, konfiguračnú záťaž IKEv2 a pool na bráne, aby ste našli skutočného prideľovateľa.
Pripojte klienta a pozerajte sa na adaptér, nie na ikonu Wi-Fi. Adresa ako 10.80.0.14 môže sedieť na tuneli, hoci žiadny server DHCP v kancelárskej LAN ten prenájom nikdy nezaznamenal. Práve proces, ktorý číslo vybral, určuje, kde sa má začať riešenie problému.
Na klientovi všetko vyzerá rovnako: jedna adresa IPv4, jedna maska, niekedy predvolená brána. Rozdiel sa ukáže až vtedy, keď sa spýtate, kto za tú adresu odpovedá a kto o nej vedie záznam.
Prečítajte adresu tunela zo strany klienta
Windows rozdiel ukáže, ak prečítate celý blok a nie prvý riadok. ipconfig /all vypíše popis adaptéra, fyzickú adresu a riadok DHCP. Vytáčaný adaptér PPP alebo IKEv2 zvyčajne hlási DHCP ako vypnutý, pretože spojenie si adresu vyjednalo počas vytáčania, namiesto toho, aby si ju prenajalo zo servera v LAN. Tunelový adaptér s povoleným DHCP je nezvyčajný a zaslúži si samostatné vyšetrenie.
Linux delí tú istú informáciu medzi dva nástroje. ip -4 addr show dev tun0 dáva adresu a dĺžku prefixu. nmcli -f IP4 connection show work odhaľuje, či hodnota prišla z profilu pripojenia, z výmeny DHCP na linke alebo z pretlačenej konfigurácie. WireGuard je najjasnejší prípad, pretože wg-quick použije riadok Address z konfiguračného súboru, keď sa rozhranie objaví, a žiadny partner pri pripojení nič neprideľuje.
Prefix tiež niečo hovorí. /32 alebo maska 255.255.255.255 znamená, že brána očakáva smerovanie na jednu adresu hostiteľa, kým širšia maska naznačuje podsietu na linke niekde za tunelom.
Čo nesie konfiguračná záťaž IKEv2
IKEv2 má na túto úlohu vlastný mechanizmus. Konfiguračná záťaž opísaná v RFC 7296, časť 3.15.1 nesie atribúty ako INTERNAL_IP4_ADDRESS, INTERNAL_IP4_NETMASK, INTERNAL_IP4_DNS a ich náprotivky IPv6. Klient pošle atribút s hodnotou nulovej dĺžky, keď nemá preferenciu, a odpovedajúca strana vráti hodnotu, ktorú chce použiť. Táto výmena ide vnútri IKE_AUTH, už zašifrovaná, takže tunelom nikdy neprejde žiadne DHCP vysielanie.
Vyplývajú z toho dva dôsledky. Po prvé, adresu vyberá odpovedajúca strana alebo akýkoľvek autorizačný backend, ktorý konzultuje, preto pool môže žiť na bráne, v odpovedi RADIUS alebo v mapovaní poskytovateľa identity. Po druhé, atribút DNS je oddelený od atribútu adresy. Prijatie 10.80.0.14 nehovorí nič o tom, ktorý resolver sa vrátil, ani či sa vôbec nejaký vrátil.
Atribút sieťovej masky je v praxi voliteľný. Mnohé nasadenia vracajú len adresu a nechávajú klienta nainštalovať cestu k hostiteľovi, preto ten istý pool môže vyzerať ako /32 na jednom klientovi a /24 na inom.
Kde sa zrazí rozsah DHCP v LAN a pool VPN
Problémy začnú, keď obaja prideľovatelia mieria na ten istý rozsah. Server DHCP pre 10.20.30.0/24 nič nevie o poole VPN nakonfigurovanom pre 10.20.30.128/25, takže mu nič nebráni prenajať 10.20.30.140 tlačiarni, kým brána dáva tú istú adresu vzdialenému klientovi. Kolízia zostáva dni ticho a potom sa prejaví ako občasný duplikát.
Smerované riešenie od lokality k lokalite sa kolízii vyhýba už konštrukciou. Hostiteľ v pobočke si ponechá adresu, ktorú mu dal miestny server DHCP. Tunelové rozhrania na oboch bránach nesú vlastné adresy linky, a smerovacia tabuľka rozhoduje, ako pakety cestujú. Adresy klientov vzdialeného prístupu sú treťou kategóriou a nemajú sa miešať s adresami linky brány.
Premostenie tunela do LAN toto oddelenie ruší. Ak návrh naozaj potrebuje jednu vysielaciu doménu, koncový bod VPN musí participovať na tých istých rozhodnutiach o prideľovaní ako server DHCP, cez relé alebo spoločný autoritatívny zdroj, namiesto toho, aby adresy vydával sám.
Overte, ktorý proces adresu vlastní
Dokážte vlastníctvo, kým zmeníte rozsah. Na klientovi si poznačte adresu a prefix. V LAN prehľadajte databázu prenájmov. Na bráne vypíšte pooly, ktoré je nakonfigurovaná vydávať. Adresa nájdená v súbore prenájmov patrí serveru DHCP, čo znamená, že tunel je premostený alebo relayovaný; adresa nájdená len v poole brány patrí koncovému bodu tunela.
# client: address and prefix on the tunnel interface
ip -4 addr show dev tun0
# LAN DHCP server: is this address leased to anyone?
grep -c '10.80.0.14' /var/lib/dhcp/dhcpd.leases
# gateway: pools that remote-access clients draw from
sudo swanctl --list-pools
Zapíšte si štyri veci, keď je odpoveď jasná: ktorá komponenta prideľuje adresu klienta, ktorý rozsah je pre ňu rezervovaný, ako sa vratná prevádzka dostane do toho rozsahu a ktoré zdroje ju prijímajú. Tie štyri záznamy menia riadok virtuálneho adaptéra na prevádzkový fakt.
Zopakujte kontrolu pre atribút DNS, kým ste tam. Pool, ktorý vydáva adresy bez resolvera, necháva klienta na jeho miestnom DNS, čo je iná porucha ako pool, ktorý vydáva adresu, ktorú LAN už používa.