Kolmen asian on oltava yhtä mieltä ennen kuin Kerio-tunneli kuljettaa liikennettä: kvnet-rajapinnan osoite, arvo, jonka asiakas kirjasi lokiin, ja se, mitä palvelimen käytäntö tai DHCP odottaa. Kun ne eivät ole yhtä mieltä, tunneli todentaa silti ja nousee silti pystyyn, ja juuri se tekee viasta hämmentävän. Rajapinta luodaan yhteyttä kohden, joten käsin asetettu osoite kuuluu sille istunnolle eikä millekään muulle. Sellainen on ongelman muoto, ja ratkaisu on koukku eikä asetustiedosto. Loput on siitä, mistä arvo luetaan ja mihin se asetetaan.

Miksi osoite palaa aina takaisin

kvnet on virtuaalinen sovitin, jonka asiakas luo yhteyden alkaessa ja poistaa sen päättyessä. Manuaalinen ip link set säilyy siis täsmälleen niin kauan kuin istunto, johon se asetettiin, ja seuraava yhteys alkaa siitä, minkä asiakas määrittää. Koneessa, jossa asiakas ei saa odotettua osoitetta asetettua, jokainen uudelleenyhdistäminen tuo saman ristiriidan uudelleen, ja vuokra- tai käyttösääntö hylkää laitteen taas.

Tuo kaava on sinänsä diagnostinen. Tunneli, joka toimii yhden istunnon ja epäonnistuu seuraavassa, ei ole tunnistetietojen ongelma, koska tunnistetiedot eivät muutu yhteyksien välillä.

Lue arvo asiakkaalta, älä rajapinnalta

Linux-asiakas kirjoittaa neuvottelun yksityiskohdat virheenkorjauslokiinsa, ja osoite, jota se aikoo käyttää, näkyy siellä yhteysjakson viimeisenä osoitteen muotoisena merkkinä. Vertaa sitä siihen, mitä ydin todella pitää hallussaan, ja se on yhden readlinkin päässä: cat /sys/class/net/kvnet/address.

Jos ne kaksi eroavat, asiakas tiesi oikean arvon eikä saanut sitä asetettua, ja koukku, joka asettaa sen rajapinnan ilmestyttyä, sulkee tuon aukon. Jos lokissa ei ole lainkaan osoitetta, ongelma on varhaisempi ja kuuluu asiakasversioon tai palvelinprofiiliin eikä skriptiin.

Aseta se, kun rajapinta on olemassa

NetworkManagerin käyttäjät voivat pudottaa skriptin sen dispatcher-hakemistoon ja toimia vain, kun VPN-rajapinta nousee. systemd:n hallitsema asiakas vaatii enemmän huolellisuutta: palvelun käynnistyksessä ajettava drop-in aktivoituu yleensä ennen kuin sovitin on olemassa, joten koukun on odotettava rajapintaa sen sijaan, että se olettaisi sen. Aseta osoite silloin, ja jos ydin kieltäytyy, kun linkki on ylhäällä, ota se alas, aseta osoite ja nosta se takaisin ylös. Lue irrotettu merkki takaisin MAC-kaavan läpi ennen kuin annat sen ip link-komentolle, jotta odottamaton lokirivi ei voi muuttua argumentiksi.

Kaikki, mikä ajetaan rootina asiakkaan lokista, ansaitsee kapean omistajuuden: rootin omistama tiedosto, jota muut eivät voi kirjoittaa, eikä shell-interpolointia validoidun osoitteen lisäksi. Pidä kaavan tarkistus skriptin sisällä. Älä anna lokin sisällön päättää, mikä komento ajetaan.

Tarkista vuokra eikä linkkiä

ip -4 -o addr show dev kvnet pitäisi näyttää osoite odotetulla alueella, ip neigh show dev kvnet pitäisi näyttää yhdyskäytävä, ja yhden VPN:n takana olevan palvelun pitäisi vastata. Katkaise sitten yhteys ja yhdistä kerran uudelleen; jos osoite palaa, koukku laukeaa väärästä tapahtumasta tai ei laukea lainkaan.

Rajapinta, joka ilmestyy oikealla osoitteella eikä koskaan saa vuokraa, osoittaa palvelimen puolelle. Se on toinen tarkistus ja yleensä toinen tiimi. Vahvista, että tili on sallittu ja että poolissa on vielä osoite, ennen kuin muokkaat koukkua uudelleen.

Käy kiertotie uudelleen läpi päivityksen jälkeen

Asiakasversio, joka asettaa osoitteen oikein, jättää koukkusi käyttämään vanhentunutta arvoa, mikä on korjauksen tuoma uusi vika. Älä myöskään koskaan kopioi MAC-osoitetta toisesta koneesta tai foorumiviestistä; käytä arvoa, jonka tämä asiakas kirjaa tälle tilille, ja merkitse muistiin päivä, jolloin varmistit sen.

Pidä skripti niin lyhyenä, että sen lukee yhdellä istumalla. Lokit jäsentävät kiertotiet ovat luonteeltaan tilapäisiä. Ne, jotka säilyvät, ovat niitä, jotka tuleva lukija ymmärtää ilman alkuperäistä ketjua.

Aiheeseen liittyvät artikkelit