Yhteyden katkaisun skripti epäonnistuu yleensä yhdestä syystä: se puhuttelee väärää omistajaa. Yhteisön OpenVPN GUI:n hallitsema tunneli kuuluu kyseisen GUI:n istunnolle, Windows-palvelun käynnistämä tunneli kuuluu palvelulle, eikä OpenVPN Connect kuulu kummallekaan. Käy nämä tarkistukset järjestyksessä läpi ja pysähdy, kun omistaja on epäselvä. Kill-komennon lähettäminen siksi, että omistaja oli epäselvä, on juuri se tapa, jolla yhden profiilin katkaisusta tulee koko kohteen katkos.

GUI:n hallitsemalle yhteydelle hyödyllinen komento on viesti GUI:lle, ei signaali openvpn.exe:lle.

Selvitä ensin omistaja

Katso, mikä ohjelma todella näyttää yhdistetyn tilan, ennen kuin kirjoitat mitään. Ilmaisinalueen kuvake tarkoittaa, että GUI-istunto omistaa sen. Palvelumerkintä tarkoittaa, että palvelu omistaa sen. Erillinen sovellusikkuna omalla profiililistallaan ei tarkoita kumpaakaan, ja siihen sovelletaan sen omaa versiokohtaista käyttöliittymää.

Tarkista myös tili ja työpöytäistunto. Ajastettua tehtävää, joka suoritetaan toisena käyttäjänä tai ei-interaktiivisessa istunnossa, ei pidä olettaa kirjautuneen henkilön näkemän GUI:n ohjaajaksi. Tämä epäsuhta tuottaa komennon, joka päättyy siististi eikä muuta mitään, ja se on kallein virhetyyppi lokista selvitettäväksi.

Lähetä sitten omistajan oma katkaisu

Kun GUI on asennettu esimerkin polkuun ja profiili nimeltä office on olemassa, koko komento on yksi rivi:

"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect office

Korvaa se todellisella asennuspolullasi ja konfiguraation tarkalla nimellä, mukaan lukien isot ja pienet kirjaimet sellaisina kuin GUI ne näyttää. Projektin komentodokumentaatio luettelee tuetut GUI-ohjaimet, ja tämä esimerkki kuuluu vain OpenVPN GUI:lle — se ei ole komento jokaiselle sovellukselle, jonka nimessä on OpenVPN.

Palvelun omistamalle tunnelille oikea ohjain on palvelu, ei GUI:n binääri. Tarkastele asennettua palvelua ja sen hallitsemia profiileja ennen kuin pysäytät mitään, sillä pysäytys voi kaataa useita tunneleita kerralla etkä saa tulosta profiilikohtaisesti.

Tarkista, ettei mitään muuta kaadu

GUI dokumentoi myös disconnect_all-komennon, ja juuri sen laajuus tekee siitä väärän työkalun skriptille, jonka on pysäytettävä vain office. Jos yksinkertaisuus houkuttaa käyttämään sitä, kysy, mitä muuta kyseisessä koneessa on yhdistettynä ja miten käyttäjä sen huomaa.

taskkill /F /IM openvpn.exe on kahdella tavalla huonompi. Se valitsee prosessit suoritettavan tiedoston nimen perusteella ja pakottaa lopetuksen, joten se ei ilmaise profiilin nimeä eikä omistajan normaalia katkaisujärjestystä. Sen kutsuminen siistiksi sammutukseksi piilottaa molemmat ongelmat yhden paluukoodin taakse.

Minkä tahansa polun valitsetkin, varmista vaikutuksen laajuus ennen muutosta: listaa yhdistetyt profiilit, merkitse mitkä niistä pitäisi säilyttää ja tarkista ne uudelleen jälkeenpäin.

Vahvista tila, älä paluukoodia

Kun olet pyytänyt katkaisua, lue nimetyn yhteyden tila sen omistajan kautta sen sijaan että luottaisit komennon paluuarvoon. Jos seuraava vaihe tarvitsee verkon purkamisen jälkeen, odota kyseistä tilanmuutosta nimenomaisella aikakatkaisulla sen sijaan että olettaisit siivouksen päättyneen prosessin palatessa. Skripti, joka kilpailee purkamisen kanssa, epäonnistuu ajoittain ja syy vieritetään VPN:n niskaan.

Jos tila ei koskaan muutu, omistaja ei todennäköisesti ole se, jota puhuttelit. Tarkista istunto ja tili uudelleen ennen kuin siirryt vahvempaan komentoon.

Mitä lokiin kirjataan

Kirjaa profiilin nimi, puhuteltu omistaja ja käynnistyskonteksti sekä syntynyt tila. Älä kaada täydellistä määritystä tai tunnistetietoja tehtävän lokiin äläkä kirjaa komentoriviä, jos se sisältää polun tiedostoon, jossa on salaisuuksia.

Virheilmoitus, joka nimeää profiilin ja kontekstin, riittää siihen, että seuraava henkilö toistaa ongelman. Loki, joka tallentaa vain yleisen paluukoodin, lähettää heidät takaisin alkuun, ja juuri siitä arvailu alkaa uudelleen.

Aiheeseen liittyvät artikkelit