Mac VPN se poveže jednom, zatim istekne: očistite IKE demon
Mac koji se poveže jednom po podizanju drži zastarjelu IKE asocijaciju. Nađite demon koji drži UDP 500, ponovo pokrenite njegov posao i provjerite prozor na serveru.
Prva veza nakon ponovnog podizanja radi. Svaki pokušaj poslije toga visi u fazi povezivanja i na kraju istekne, a jedini pouzdan lijek je još jedno podizanje. Taj obrazac nije problem profila i nije problem akreditiva. Nešto u pozadini još drži stanje iz prethodnog pokušaja, a sljedeći pokušaj se sudara s tim.
Na macOS-u to nešto je obično IKE demon.
Obrazac: jedna veza, zatim istek
Veza koja radi tačno jednom po podizanju ukazuje na stanje koje preživi prekid veze ali ne i ponovno podizanje. Profili prežive oboje, pa profil nije promjenljiva. Akreditivi takođe prežive oboje, osim ako server zaključa račun. Ono što se mijenja pri podizanju jest skup pokrenutih demona i utičnica koje drže.
To sužava istragu prije nego što otvorite i jedan log. Pitanje postaje koji proces drži IKE port i šta misli da radi.
Dva demona, jedan port
Sistem pokreće racoon kada veza govori IKE verziju 1. Trenutna izdanja donose i iked za IKEv2 i noviji IPsec stek. Oba mogu vezati UDP 500 i UDP 4500, i oba mogu zadržati poluotvorenu sigurnosnu asocijaciju nakon što je pokušaj veze otkazan na upitu za lozinku ili prekinut promjenom mreže.
Kada se to dogodi, sljedeći pokušaj ne počinje čisto. Pokušava pregovarati dok stara asocijacija još zauzima stanje partnera, a razmjena se zaglavi umjesto da ne uspije s jasnom greškom. Korisnik vidi vrtuljak, zatim istek.
Nađite vlasnika prije nego što ubijete bilo šta, jer odgovor određuje koju uslugu ponovo pokrećete i koji log čitate sljedeći.
sudo lsof -i :500 -i :4500
ps -ef | grep -E "racoon|iked"Čitajte izlaz kao dvije činjenice: koji proces drži port i postoji li više od jednog. Dva IKE demona koji se takmiče za istu utičnicu objašnjavaju mnogo isprekidanog ponašanja koje izgleda kao nestabilan server.
Ponovo pokrenite posao, a ne proces
Na starijim sistemima dovoljno je ubiti proces i pustiti sljedeću vezu da ga ponovo pokrene. U trenutnim izdanjima demonom upravlja launchd, a samo signaliziranje procesa može ostaviti posao u stanju u kojem ni ne radi ni nije zakazan za pokretanje. Umjesto toga zaustavite i pokrenite posao.
sudo launchctl stop com.apple.racoon
sudo launchctl start com.apple.racoonAko launchd nema zapis o poslu, ubijanje procesa po imenu ipak prisiljava novo pregovaranje pri sljedećem pokušaju. Test je isti u oba slučaja: nijedan proces ne bi trebao držati port kada ponovo pokušate da se povežete. Potvrdite to istom komandom lsof umjesto da pretpostavite da je ponovno pokretanje uspjelo.
Zatim se povežite jednom i pročitajte klijentski log od početka. Pregovaranje koje prođe fazu 1 i zatim prijavi grešku prijenosa ponavlja lokalni problem s utičnicom; pregovaranje koje partner odbije je sasvim druga karta.
Kada server jeste taj koji odbija
Ne neuspijeva svaka druga veza lokalno. Server može odbiti novu prijavu za fiksni prozor nakon prekida veze, a klijentski istek izgleda identično zaglavljenom demonu. Razlikovanje je jeftino: ako ponovno pokretanje demona ne pomogne, ali se drugi račun odmah poveže, prozor je na strani servera i Mac nikada nije bio problem.
Politika podijeljenog tunela stvara isti oblik iz drugog smjera. Server koji zahtijeva sav saobraćaj u tunelu odbacit će klijenta konfigurisanog za podijeljeni tunel tokom pregovaranja, a klijent prijavi istek umjesto odbijanja politike. Promjena profila da sve ide kroz tunel može ga povezati, ali to je odluka o politici koju treba donijeti s vlasnikom mreže, a ne popravka koju treba tiho primijeniti.
Pročitajte partnerov log prije nego što ponovo mijenjate klijenta. Odbijanje, neusklađenost politike i tiho odbacivanje tri su različita uzroka koji svi izgledaju kao “povezivanje” na Mac ekranu.
Stariji klijenti i 64-bitno jezgro
Naslijeđeni Cisco IPSec klijent učitava ekstenziju jezgra napravljenu za 32-bitne i PowerPC sisteme. Na Macu podignutom u 64-bitno jezgro ta ekstenzija ne može se učitati, a klijent rano ne uspije s greškom 51 jer uopšte ne može doći do VPN podsistema. Nijedna količina ponovnog pokretanja demona ne popravlja ekstenziju jezgra koja je pogrešne arhitekture.
Ponovno učitavanje ekstenzije može raditi neko vrijeme, a zatim opet ne uspjeti pri sljedećem podizanju. Trajni odgovori su pokrenuti starije jezgro gdje je to još podržano ili preći na ugrađeni klijent koji dolazi sa sistemom. Provjerite arhitekturu prije nego što provedete veče na klijentu treće strane koji se ne može učitati.
- Reprodukujte jednom, zatim provjerite koji demon drži UDP 500 prije nego što dirnete profil.
- Pročitajte prvi neuspjeh nakon faze 1: greška prijenosa ukazuje na lokalnu utičnicu.
- Ponovo pokrenite launchd posao, ne samo proces, i potvrdite da je port slobodan.
- Isprobajte drugi račun da odvojite prozor ponovne autentifikacije na strani servera od kvara klijenta.
- Zabilježite arhitekturu jezgra prije nego što okrivite klijenta.
VPN koji radi tačno jednom je problem stanja dok se ne dokaže suprotno. Čišćenje demona je brže od ponovnog podizanja i čuva dokaze iz logova koje bi podizanje odbacilo.