Sisäinen nimi ratkeaa yhä VPN-palvelimeen päivä tunnelin sulkeutumisen jälkeen, ja resolver-tiedosto palaa aina saman merkinnän kanssa. Siellä missä Debianin resolvconf omistaa tilan, tuo tiedosto kootaan toimittajien tietueista, ja yksi niistä on jäänne. Tietueen poistaminen kestää minuutin; sen todistaminen, että poisto on turvallista, on varsinainen työ. Nämä portit kulkevat järjestyksessä, ja epäonnistunut portti päättää menettelyn sen sijaan, että lähettäisi sinut seuraavaan vaiheeseen.

Vahvista, että resolvconf omistaa tilan

Tunnista ensin omistaja, koska sama oire systemd-resolvedin alla vaatii eri komennot ja erilaisen korjauksen. resolvconf-paketti pitää tietokantaa sijainnissa /run/resolvconf ja osoittaa /etc/resolv.conf tiedostoon, jonka se rakentaa tästä tietokannasta. Kaksi lukemaa ratkaisee kysymyksen: symbolisen linkin kohde ja se, onko paketti asennettu ja aktiivinen. Kohde sijainnissa /run/systemd/resolve tarkoittaa toista mallia, jossa mikään alla oleva ei päde.

dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service

Jos linkki osoittaa muualle tai paketti puuttuu, pysähdy tähän. Yhteensopivuuskääre, joka lainasi nimen ja jonka toinen resolver-hallinta toimittaa, ei omista tätä tietokantaa.

Tietokanta pitää syötteitä, ei vastausta

Tietokanta pitää syötteitä ja tiedosto on tuloste, joten syötteiden listaaminen on ainoa tapa nähdä, mikä ohjelma asensi sen merkinnän, jonka haluat pois. Tietueet ovat lyhyitä, ja niiden avaimet ovat kahvoja, joita tarvitset myöhemmin. Lue ne ennen kuin päätät, mikä on vanhentunut, sillä VPN-liitännäiseltä näyttävä nimi voi kuulua toiselle asiakkaalle. Pidä yksityiset osoitteet ja sisäiset hakudomainit poissa jaetusta diagnostiikasta; yleensä avain yksin tunnistaa tietueen.

sudo resolvconf --list
sudo resolvconf -i

Ensimmäinen komento tulostaa toimitetut tietueet niitä käsittelemättä, ja toinen listaa liitännäiset, jotka tällä hetkellä tarjoavat DNS-kokoonpanon. Avaimet rakennetaan yleensä liitännäisen nimestä ja toimittavasta ohjelmasta. resolvconfin käsikirja kuvaa tietokannan, johon nämä avaimet osoittavat.

Kopioi avain tulosteesta sen uudelleenrakentamisen sijaan. Merkintä ei ole nimeltään tun0 vain siksi, että vanha skripti käytti sitä nimeä.

Todista, että tietueella ei ole omistajaa

Tietue on turvallista poistaa, kun mikään elävä yhteys ei ole asentanut sitä. Yhdistä avain yhteyteen, joka sen loi, ja vahvista sitten, että se yhteys on poissa. Tämä korrelaatio on koko portti, ja se on vaihe, joka useimmin ohitetaan matkalla poistokomentoon. Jos todisteet ovat epäselviä, kohtele tietuetta elävänä ja pysähdy.

Prosessien nimet ovat heikko todiste. OpenConnect kutsuu komentoa vpnc-script, joten tarkistus prosessista vpnc ei kerro mitään siitä, mikä tietue on nykyinen. Uusi yhteys voi myös käyttää uudelleen liitännäisen nimeä, jonka vanha jätti, mikä saa avaimen näyttämään vanhemmalta kuin se on. Vertaa tietueen sisäistä palvelinosoitetta niiden tunnelien osoitteisiin, jotka ovat yhä pystyssä, ja pysähdy, jos ne täsmäävät.

Normaali katkaisu omistavan hallinnan kautta on ensimmäinen keino. Se vetää takaisin sen, minkä yhteys asensi, ja jättää muut toimittajat koskemattomiksi.

Tarkista poisto ja uudelleenkirjoitus

Kun tietue on vahvistettu vanhentuneeksi, poista se tarkalla avaimella ja lue sitten tulos sen olettamisen sijaan. Komento muuttaa resolverin tilaa jokaiselle koneen sovellukselle, joten aja se ikkunassa, jota hallitset. Laita avain lainausmerkkeihin, koska se sisältää merkkejä, joita kuori muuten laajentaisi. Lohkon paikkamerkki tarkoittaa avainta, jonka kopioit luettelosta, ei kirjaimellista merkkijonoa.

sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example

Poisto ajaa päivitysskriptit, kun päivitys on käytössä; päivitysten ollessa poissa käytöstä se lykkää päivitystä, joten poistettu tietue ja uudelleen kirjoitettu tiedosto ovat erillisiä tapahtumia. Lue luettelo uudelleen ja vahvista, että avain on poissa, ennen kuin katsot tiedostoa. Kysy sitten nimeä, jonka pitäisi yhä ratketa jäljellä olevien toimittajien kautta, ja julkista nimeä, ja vertaa molempia siihen, mitä näit ennen muutosta. Jos yksityinen nimi lakkaa kokonaan ratkeamasta, se tietue kantoi sitä yhä.

resolvconf -u ajaa vain niitä päivitysskriptejä. Se ei koskaan tunnista tai poista vanhentunutta tietuetta, ja uudelleenrakennus vanhentuneista syötteistä tuottaa saman ei-toivon tiedoston.

Tapettu katkaisukoukku jättää tietueen jälkeensä

Kertaluonteinen siivous palauttaa tämän päivän tilan, ja seuraava keskeytynyt sammutus laittaa tietueen takaisin. Käy läpi purkuväylä: asiakkaan katkaisukoukku, apuri, jonka koukku kutsuu, ja mitä tapahtuu, kun jompikumpi tapetaan. Keskeytynyt sammutus on tavallinen alkuperä, koska koukku ei ajanut lainkaan. Kirjaa koukun poistumistila kerran, niin tiedät, epäonnistuuko se hiljaa.

Pidä asennus ja siivous yhden omistajan alla. Toinen skripti, joka arvaa liitännäisten nimiä, poistaa lopulta toisen yhteyden tietueen, mikä on pahempaa kuin aloittamasi vanhentunut merkintä. Omistajan pitäisi myös päättää, milloin tietue on vanhentunut, koska se tietää, mikä yhteys sen asensi.

Harjoittele sitten elinkaari: yhdistä, katkaise, listaa tietueet uudelleen. Merkinnän katoaminen itsestään on ainoa todiste siitä, että korjaus pitää.

Aiheeseen liittyvät artikkelit