Pi:n vaihtaminen Wi-Fi:stä kaapeliin näyttää viiden minuutin työltä, ja se pysyy sellaisena vain, jos käsittelet siirtoa neljänä erillisenä asetuksena yhden sijaan. Päätepisteen nimi, johon asiakkaasi soittavat, voi pysyä täsmälleen samana, vaikka sen alla oleva osoite muuttuu. Mikä todella hajoaa, on vanhaan osoitteeseen kiinnitetty kuuntelija, portin edelleenohjaus, joka osoittaa yhä langattomaan leaseen, tai paluureitti, joka lähtee liitännäisestä, jonka luulit poistaneesi käytöstä. Tämä opas pitää palautuspolun avoinna joka vaiheessa, joten epäonnistunut siirto maksaa vain uudelleenkäynnistyksen.

Kirjoita neljä vastuullista muistiin ennen kuin irrotat mitään

Neljä asetusta ratkaisevat, selviääkö siirto: Pi:n osoite, sidontaosoite OpenVPN, reitittimen uudelleenohjauksen kohde ja polku, jota vastaukset kulkevat. Kirjoita kaikki neljä muistiin ennen kaapelin koskettamista, sillä kun langaton lease katoaa, et voi enää lukea vanhoja arvoja koneesta. Kaapeliliitäntä ei peri langatonta profiilia, ja Bookwormissa osoite asuu NetworkManagerissa, kun taas Bullseye pitää sitä dhcpcd.conf. Varaus, joka kiinnitti langattoman MAC-osoitteen, ei kerro mitään osoitteesta eth0. Kohtele uutta osoitetta uutena määrityksenä, joka tarvitsee oman todisteensa.

Old wireless lease:   10.42.7.24/24 on wlan0
New wired address:    10.42.7.31/24 on eth0
Client endpoint:      vpn.lab.example:1194/udp

Kuuntelija on toinen vastuullinen. Jos palvelu käynnistettiin tietyllä sidontaosoitteella, socket kuolee vanhan liitännäisen mukana; jos se sitoo kaikki osoitteet, socket säilyy ja reitittimen sääntö jää ainoaksi korjattavaksi.

Uudelleenohjauksen kohde ja paluureitti ovat ne vastuulliset, jotka ihmiset ohittavat. Edelleenohjaus, joka osoittaa yhä 10.42.7.24:ään, lähettää saapuvat kättelyt osoitteeseen, jota Pi:llä ei enää ole, joten asiakkaat päättyvät aikakatkaisuun ilman yhtäkään lokiriviä palvelimen puolella. Paluureitti on tärkeä, kun molemmat linkit ovat hetken aktiivisia, koska Pi vastaa liitännäisestä, jota reititystaulu suosii, eikä se ole aina se, jota pitkin paketti saapui. Alla oleva reittihaku näyttää, minkä lähteen ydin valitsee.

Lue todellinen socket ennen kuin luotat uuteen osoitteeseen

Asetustiedostot kuvaavat aikomuksen ja socket kuvaa todellisuuden. Kysy käynnissä olevalta palvelulta, mihin se on sidottu, sen sijaan että luottaisit muistamaasi asetukseen. OpenVPN 2.6 -käsikirja määrittelee --local sidonnaksi yhteen osoitteeseen ja huomauttaa, että sen pois jättäminen sitoo jokaisen liitännäisen.

sudo systemctl cat openvpn-server@server | grep -n -- '--local'
sudo ss -lunp '( sport = :1194 )'

Lue paikallisen osoitteen sarake tilasarakkeen sijaan. Rivi, joka näyttää 10.42.7.24:1194 tarkoittaa, että socket on kiinnitetty osoitteeseen, jonka aiot juuri poistaa, kun taas 0.0.0.0:1194 tai *:1194 tarkoittaa, että taustaprosessi seuraa liitännäisen muutosta itse. Jos osoite on kiinnitetty, muokkaa profiilia ja käynnistä yksikkö uudelleen sen sijaan että kirjoittaisit elävän socketin käsin uudelleen, ja varmista sitten, että palvelu tavoittaa yhä sertifikaatti- ja avaintiedostonsa.

Tee siirto järjestyksessä, joka pitää sinut tavoitettavana

Järjestys on tässä tärkeämpi kuin nopeus. Nosta kaapelilinkki, kun langaton vielä toimii, vahvista uusi osoite ja paluureitti ja poista vasta sitten langaton profiili käytöstä. Tämä järjestys pitää toimivan istunnon avoinna, kunnes korvaaja on todistettu.

ip -br addr show eth0
ip route get 203.0.113.10
nmcli -g ipv4.method,ipv4.addresses con show "Wired connection 1"

Ensimmäinen komento vastaa, saiko eth0 sen osoitteen, jonka tarkoitit, ja toinen tulostaa lähdeosoitteen, jota ydin käyttäisi ulkoiseen kohteeseen, joten aja se ennen muutosta ja sen jälkeen. Jos tuo lähde on yhä langaton osoite, kaapelilinkki ei ole vielä ensisijainen polku ja ulkokoe epäonnistuu syystä, jolla ei ole mitään tekemistä OpenVPN:n kanssa. Korjaa reitityksen ensisijaisuus ennen kuin kosket edelleenohjausta.

Kun molemmat linkit ovat aktiivisia, Pi voi suosia langatonta oletusreittiä, koska se asennettiin ensin tai koska kaapelilinkillä on korkeampi metriikka. Bookwormissa tuettu asetus on ipv4.route-metric yhteydessä, ja Bullseyssa vastine on liitäntäkohtainen metric rivi dhcpcd.conf tiedostossa. Laske langattoman linkin painoarvoa sen poiskytkemisen sijaan, jotta palautuspolku pysyy yhden komennon päässä.

Todista tunneli ulkopuolelta, älä LAN:ista

VPN-yhteys, joka toimii sohvalta, todistaa vähemmän kuin miltä näyttää. Liikenne LAN:in sisältä julkiseen osoitteeseen kulkee hairpin- tai heijastussääntöjen läpi, jotka reitittimet toteuttavat epäjohdonmukaisesti, joten onnistunut LAN-koe voi olla olemassa samaan aikaan rikkoutuneen ulkoisen polun kanssa. Käytä hyväksyntäkokeeseen matkapuhelinta mobiilidatalla tai mitä tahansa verkoston ulkopuolista hostia. Pidä LAN-yritys erillisenä valinnaisena diagnostiikkana.

Lue sitten loki siinä järjestyksessä, jossa paketit saapuvat. Ei yhtään mitään tarkoittaa, että kättely ei koskaan saavuttanut Pi:tä, joten uudelleenohjauksen kohde tai isäntäkoneen palomuuri on väärin. Kättely, joka alkaa ja jää jumiin, viittaa avaimiin, sertifikaatteihin tai MTU:hun. Istunto, joka valmistuu ja putoaa, tarkoittaa yleensä paluureittiä tai toista oletusreittiä, ja asiakkaan lokirivi Initialization Sequence Completed kertoo, että itse tunneli nousi.

sudo journalctl -u openvpn-server@server -n 40 --no-pager
sudo tcpdump -ni any udp port 1194 -c 20

Jos palvelimen lokiin ei ilmesty mitään asiakkaan yrittäessä uudelleen, lopeta OpenVPN-asetusten lukeminen ja palaa uudelleenohjauksen kohteeseen. Kaappaus vastaa saapumiskysymykseen sekunneissa, ja vastauksetta saapuvat paketit rajaavat ongelman reittiin.

Säilytä yhden askeleen palautus ja poista langaton profiili käytöstä

Jätä langaton profiili asennetuksi, kunnes kaapeliratkaisu on selvinnyt uudelleenkäynnistyksestä. nmcli con show luettelee tarvitsemasi profiilinimet, ja poistettu profiili on rakennettava uudelleen muistista pahimmalla hetkellä. Kirjoita liitännäisen nimi, osoitusmenetelmä ja metriikka muiden neljän arvon viereen. Palautus, jonka voit kirjoittaa muistiinpanosta, on arvokkaampi kuin se, joka sinun on rakennettava uudelleen.

Langattomasta riippuvuudesta luopuminen on ominaisuuden muutos, ei poisto. Asettamalla connection.autoconnect no tunnistetiedot ja osoitehistoria pysyvät ehjinä, samalla kun Pi estetään liittymästä uudelleen verkkoon, josta muutit pois.

nmcli con show
sudo nmcli con up "Wired connection 1"
sudo nmcli con mod "previously-used-wifi" connection.autoconnect no

Ennen kuin julistat työn valmiiksi, vahvista neljä asiaa: uudelleenohjauksen kohde vastaa kaapeliosoitetta, kuuntelija selvisi uudelleenkäynnistyksestä, ulkopuolinen asiakas suorittaa kättelyn loppuun ja Pi vastaa yhä kaapeliosoitteessa uudelleenkäynnistyksen jälkeen. Uudelleenkäynnistys on halvin tapa napata määritys, joka oli olemassa vain käynnissä olevassa ytimessä. Jos jokin neljästä epäonnistuu, nosta langaton profiili takaisin komennolla sudo nmcli con up ja vertaa kirjattuja arvoja aktiivisiin.

Aiheeseen liittyvät artikkelit