Symud gweinydd VPN i IP gyhoeddus newydd: beth i’w wirio gyntaf
Mae cyfnewidiad yn y man a thoriad cyfochrog yn torri mewn gwahanol leoedd. Archwiliwch ffurfweddiadau, NAT a thystysgrifau, yna gwiriwch sut mae pob cleient yn datrys yr enw.
Mae ailddyrannu cyfeiriad yn cymryd munud. Yr wythnos wedyn yw’r man lle mae’r symudiad yn torri, ac yn anaml y man y mae consol y darparwr yn ei awgrymu. Cyfeirir at IP gyhoeddus newydd mewn pedwar lle: y soced y mae’r daemon yn gwrando arno, yr angor ymddiriedaeth y mae cleientiaid yn ei wirio, pob rheol sy’n enwi’r hen gyfeiriad, a’r cofnod DNS sy’n eu clymu. Mae dau symudiad yn edrych yn unfath o banel rheoli ond yn ymddwyn yn hollol wahanol: ailddyrannu’r cyfeiriad ar y peiriant rydych yn ei redeg, neu godi ail endpoint a symud cleientiaid iddo. Mae’r gwiriadau isod yn rhoi’r methiannau rhad yn gyntaf, ac mae pob adran yn enwi i ba symudiad y mae’n berthnasol.
Mae cyfnewidiad yn y man a thoriad cyfochrog yn swyddi gwahanol
Mae cyfnewidiad yn y man yn cadw’r gwesteiwr, yr allweddi, y tabl llwybro a’r rhestr defnyddwyr; dim ond y cyfeiriad sy’n newid. Dyna a wna ailddyrannu IP arnofiol, ac ar sawl darparwr ni sylwa’r gwestai o gwbl, oherwydd mae’r cyfieithu’n digwydd o flaen y gweinydd. Mae ailadeiladu neu ailddyrannu gan y darparwr yn galetach: mae’r gwestai’n gweld y newid, ac mae popeth a oedd wedi cacheio’r hen werth yn ei ddysgu ar yr un eiliad.
Mae endpoint cyfochrog yn ail westeiwr sy’n gwneud yr un gwaith. Adeiladwch ef, profwch ef ag un proffil, a gadewch yr hen un yn ateb nes bod yr un newydd yn profi ei hun dros lwybr go iawn. Y pris yw cyflwr. Heb gofnodion peer a rennir, dirymiadau a logio, mae gennych ddau rwydwaith sy’n digwydd rhannu enw.
| Question | In-place swap | Parallel endpoint |
|---|---|---|
| Rollback in one step? | Only if you can get the old address back | Point DNS back; old host still up |
| Blast radius | Every client at once | Only the clients you moved |
| Best when | The address is yours to reassign | The old address is gone for good |
Dewch o hyd i bob lle mae’r hen gyfeiriad wedi’i ysgrifennu
Dechreuwch ag ysgubiad testun, oherwydd y ffeiliau ffurfweddu yw’r hanner hawdd. Chwiliwch ffurfweddiad y daemon, darnau firewall, targedau monitro ac unrhyw fwndel cleient a gynhyrchwyd ar y disg. Cynhwyswch y cyfeiriad IPv6 os ydych yn cyhoeddi un; mae symudiad sy’n dilyn y cofnod A yn unig yn gadael cleientiaid deu-stac ar yr hen lwybr.
OLD=203.0.113.10
grep -RIn -- "$OLD" /etc /root
ss -lunpt | grep -F "$OLD"
nft list ruleset | grep -F "$OLD"
iptables-save | grep -F "$OLD"
wg show all endpoints
Yna ysgubwch y cnewyllyn, oherwydd mae system sy’n rhedeg yn dal y cyfeiriad mewn lleoedd nad yw unrhyw ffeil yn sôn amdanynt. Mae rheol NAT ffynhonnell statig, cofnod ipset, cyfeiriad bind a chofnod conntrack yn byw’n hirach na’r golygiad ffurfweddu a’u dileodd, ac mae rhai yn byw’n hirach na ailgychwyn oherwydd iddynt ddod yn ôl o set rheolau a gadwyd. Un haen yn uwch, nid yw grwpiau diogelwch y darparwr, targedau’r balansydd llwyth a gwiriadau monitro ar eich system ffeiliau o gwbl.
Ysgrifennwch y rhestr eiddo cyn newid unrhyw beth; mae hefyd yn gweithredu fel sgript dadwneud.
Mae cleientiaid enw gwesteiwr yn gwella; mae cleientiaid IP llythrennol yn tewi
Os yw cleientiaid yn cyrraedd y gweinydd drwy enw gwesteiwr, problem DNS yw’r toriad gan mwyaf, a’r TTL a osodwyd gennych ddoe sy’n penderfynu pa mor ddrwg y bydd. Mae datryswyr yn cacheio, mae datryswyr stub yn cacheio eto, ac mae llawer o gleientiaid yn chwilio’r enw dim ond ar gysylltiad newydd, felly mae twnnel sefydledig yn cadw ei gyfeiriad cychwynnol.
Os yw’r endpoint yn gyfeiriad llythrennol, nid oes dim yn ailddatrys ac nid oes dim yn cofnodi cwyn. Mae WireGuard yn storio cyfeiriad soced wedi’i ddatrys: mae Endpoint = vpn.example.net:51820 yn dod yn IP ar yr eiliad y mae wg-quick up yn rhedeg ac yn aros yn yr IP hwnnw nes i chi ei newid. Mae OpenVPN yn fwy goddefgar: mae’n datrys enw gwesteiwr remote ar adeg cysylltu ac, gyda resolv-retry infinite, yn ceisio DNS eto wrth ailgysylltu. Gyda IP llythrennol, mae’r ddau yn parhau i ddeialu peiriant nad yw’n bodoli mwyach.
Yr hyn sy’n twyllo pobl yw’r ddelwedd nythaid. Mae cleient sydd eisoes wedi’i bwyntio at y cyfeiriad newydd, tra bo’r hen wrandäwr yn dal i ateb, yn pasio pob prawf a redwch o’ch desg eich hun. Rwyf wedi cael fy nhwyllo felly: cododd yr endpoint newydd ar ffôn ar y cynnig cyntaf, a dim ond pan ddiffoddwyd yr hen wrandäwr lawer yn ddiweddarach y daeth cleient â phroffil hen yn wyneb.
Nid yw ymddiriedaeth yn symud gyda’r cyfeiriad
Mae WireGuard yn gwahanu hunaniaeth oddi wrth gyrhaeddadwyedd, sy’n gwneud symudiad cyfeiriad bron yn rhad ac am ddim. Adnabyddir peerau drwy allwedd gyhoeddus, a’r endpoint yw’r lle y mae’r pecynnau’n mynd iddo ar hyn o bryd yn unig; mae gwesteiwr yn diweddaru endpoint peer o gyfeiriad ffynhonnell y pecyn dilys diweddaraf. Mae angen rheswm ar peer segur o hyd i siarad â’r lle newydd, ac mae’n dysgu’r cyfeiriad dim ond pan fydd ei sesiwn yn heneiddio a’r ymgeisiadau handshake’n methu yn rhywle gweladwy. Mae dechrau cyflym WireGuard yn ymdrin â’r maes endpoint.
Mae gweinyddwyr TLS yn yr achos gwrthwyneb. Mae’r dystysgrif wedi’i chlymu i enw, ac mae cleient sy’n deialu cyfeiriad yn cymharu’r hyn y gwnaeth ei ddeialu â’r enwau amgen pwnc. Cysylltwch drwy IP â thystysgrif sy’n cario SAN DNS yn unig ac mae’r gwiriad yn methu: nid yw’r enw a ddefnyddiodd y cleient yn y dystysgrif. Mae ailddyroddi gyda SAN IP yn trwsio’r un cysylltiad hwnnw ac yn gwneud y symudiad nesaf yn waeth. Mae cadw enw gwesteiwr yn y proffil a gadael verify-x509-name yn ei le yn cadw’r gwiriad yn llym tra bo’r cyfeiriad oddi tano’n newid.
Yna gwiriwch wrth beth mae’r daemon wedi’i rwymo; mae soced wedi’i hoelio i’r hen gyfeiriad yn methu’n dawel. Mae gweinydd OpenVPN a gychwynnwyd gyda local 203.0.113.10 yn gwrthod codi unwaith y bydd y cyfeiriad hwnnw wedi mynd, tra bo gwrandäwr ar 0.0.0.0 yn dilyn y newid am ddim. Mae NAT yn hollti’r un ffordd: mae MASQUERADE yn dilyn pa bynnag gyfeiriad sydd gan y blwch nawr, ac mae SNAT --to-source 203.0.113.10 statig yn parhau i ailysgrifennu i gyfeiriad nad ydych yn berchen arno mwyach, felly mae traffig dychwelyd yn diflannu. Os daw’r cyfeiriad newydd â phorth upstream gwahanol, gwiriwch rp_filter: mae hidlo llwybr gwrthdro yn gollwng traffig dychwelyd sy’n cyrraedd rhyngwyneb nad oedd y cnewyllyn yn ei ddisgwyl.
Trefn y toriad a’r dystiolaeth iddo weithio
Gostyngwch y TTL ddiwrnod ymlaen llaw, codwch y gwrandäwr newydd, a’i brofi â phroffil sydd gennych chi’n unig. Nid yw prawf o du mewn i’r un rhwydwaith yn profi bron ddim, felly defnyddiwch ffôn ar seliwlar a phrofwch rywbeth y dylai’r twnnel ei gario yn hytrach na phing i’r endpoint.
Gwyliwch y ddau gyfeiriad drwy’r ffenestr. Mae wg show all latest-handshakes ar y gwesteiwr newydd, neu’r ffeil statws OpenVPN, yn dweud wrthych faint o beeriaid sydd wedi symud mewn gwirionedd. Pan fo gan yr endpoint newydd y peerau rydych yn eu disgwyl a’r hen un yn ddim ond y rhai sy’n llusgo ar ôl, ymddeolwch â’r hen wrandäwr, tynnwch y rheol NAT hen a thynnwch y cyfeiriad o firewall y darparwr. Tynnu’r hen wrandäwr yw’r cam y heuir drosodd, ac mae’n cau’r bwlch lle mae proffil hen yn dal i gyrraedd yr hen rwydwaith.
Gosodwch y sbardun dadwneud yn ysgrifenedig cyn dechrau: os nad yw’r endpoint newydd wedi cael handshake gan un cleient go iawn ar ôl y ffenestr y cytunwyd arni, adferwch yr hen gyfeiriad a stopiwch ddosbarthu proffiliau. Ailredwch yr ysgubiad wedyn a chadarnhewch nad oes gwrandäwr wedi’i rwymo i gyfeiriad sydd wedi ymddeol. Mae dau beth yn mynd ymlaen i’r symudiad nesaf: enw gwesteiwr yn y proffil cleient fel bod y newid nesaf yn olygiad DNS, a’r rhestr eiddo wedi’i storio wrth nodiadau adfer y gweinydd.