Pam mae rhybudd fflysio llwybr vpnc yn codi mewn cynhwysydd
Mae fflysio'r storfa llwybrau yn weddill o gnewyllyn nad yw'n cadw'r storfa honno mwyach; daw'r gwall darllen-yn-unig o osodiad y cynhwysydd, nid o'r tiwnel.
Mae logiau cynhwysydd newydd yn aml yn gorffen ar gwyn Read-only file system am /proc/sys/net/ipv4/route/flush, a beirniadir y llinell honno am diwnel a allai fod yn berffaith iach. Mae'r ysgrifennu y tu ôl iddi yn targedu cofnod cnewyllyn nad yw'n gwneud unrhyw beth defnyddiol mwyach bellach gan fod storfa llwybrau IPv4 wedi diflannu. Y tu mewn i gynhwysydd gosodir /proc/sys yn darllen-yn-unig, felly gwrthodir y cyfeirio cyn i unrhyw werth gyrraedd ac mae'r plisgyn yn argraffu'r gwrthodiad hwnnw. Gall tiwnel sy'n gweithio argraffu'r rhybudd hwn cyhyd ag y bo'r hen linell yn yr sgript, ac nid yw --privileged byth yn gwneud yr ysgrifennu'n ystyrlon.
Beth oedd y sgript yn ceisio ei fflysio
Roedd sgriptiau cysylltu hŷn yn gorffen gyda glanhau'r storfa: ysgrifennu gwerth i ffeil reoli cnewyllyn a gofyn i'r pentwr IPv4 ollwng ei storfa llwybro, fel y dewisid llwybr tiwnel newydd heb aros i gofnodion hen ffasiwn ddod i ben. Roedd y ffeil wedi'i chyfeirio o dan /proc/sys/net/ipv4/, a wnaeth y gweithrediad yn gyfeiriad plisgyn yn hytrach na gorchymyn llwybro. Tynnodd cnewyllyn 3.6 y storfa honno, a chyda hi y rheswm dros fodoli'r fflysio. Nid oes unrhyw beth yn llwybr y data ar hyn o bryd yn dibynnu ar yr ysgrifennu hwnnw.
Goroesodd y cofnod ei hun fel ffeil etifeddol ysgrifennu-yn-unig, felly mae sgript sy'n dal i ysgrifennu iddi yn cyrraedd llwybr go iawn a gwir archwiliad caniatâd. Ar westeiwr mae'r ysgrifennu yn dychwelyd llwyddiant ac yn newid dim. Mewn cynhwysydd mae'r un cyfeiriad yn taro /proc/sys darllen-yn-unig ac yn methu gyda EROFS, y mae'r plisgyn yn ei argraffu fel neges system ffeiliau darllen-yn-unig. Ar gnewyllwyr lle mae'r llwybr wirioneddol yn absennol daw'r geiriad yn No such file or directory, ac nid yw'r casgliad yn newid.
Mae'r ddau wall yn dweud pethau gwahanol, ac mae'n werth cadw'r gwahaniaeth yn glir. Read-only file system yw bod y cnewyllyn wedi cyrraedd cofnod ac wedi gwrthod yr ysgrifennu; No such file or directory yw bod y cofnod wedi mynd. Nid yw'r un neges yn adrodd ar y ddyfais tiwnel, y llwybrau na datrys enwau, felly ni all yr un ohonynt gyfiawnhau mwy o fraint.
Trefn sydd yn gwneud y neges i edrych yn achosol. Mae sgript gysylltu yn gosod llwybrau, yn newid cyflwr rhyngwyneb ac yn ailysgrifennu datrys enwau cyn cyrraedd y glanhau ar y diwedd, felly'r llinell olaf a argraffwyd yw'r llinell y mae pobl yn ei dyfynnu hyd yn oed pan fydd pob cam o bwys wedi dychwelyd llwyddiant. Mae tiwnel sy'n sefydlu ac yn cario traffig wrth argraffu'r rhybudd hwn yn cyd-fynd yn union â'r mecanwaith uchod.
Archwiliwch y gosodiad a'r llwybr cyn ychwanegu braint
Mae tair darlleniad yn gwahanu rhybudd cosmigol oddi wrth fethiant go iawn: a yw'r sgript a osodwyd yn dal i gario'r llinell, sut y gosodir /proc/sys, a ble mae traffig y cymhwysiad yn mynd mewn gwirionedd. Rhedwch hwy yn yr un gofod enw cynhwysydd neu ar y gwesteiwr lle cododd y rhybudd, gan fod archwiliad ar beiriant digyswllt yn ateb cwestiwn gwahanol.
grep -n 'ipv4/route/flush' /usr/share/vpnc-scripts/vpnc-script
findmnt -no OPTIONS /proc/sys
ip -4 route get 10.20.5.10Mae ateb grep yn wannach nag y mae'n edrych, oherwydd bod tocyn yn profi bod y llinell yn bresennol, nid ei bod yn rhedeg heb warchod; gall sgript a gynhelir gario'r ysgrifennu y tu mewn i warchodwr sy'n ei hepgor. Mae findmnt -no OPTIONS /proc/sys yn setlo'r gosodiad yn uniongyrchol, ac mae ro yn yr allbwn hwnnw yn golygu bod pob ysgrifennu o dan y pwynt hwnnw yn cael ei wrthod beth bynnag a wna'r sgript. Yna mae chwiliad llwybr yn dangos a yw'r gyrchfan sydd ei hangen ar y cymhwysiad yn datrys drwy ryngwyneb y tiwnel neu drwy giât ragosodedig y cynhwysydd. Mae chwiliad sy'n dewis y giât ragosodedig yn golygu bod y tiwnel wedi codi ac nad oes dim yn llwybro iddo, sy'n broblem llwybro ac nid yn broblem braint.
O ble y daw'r atgyweiriad mewn gwirionedd
Mae'r atgyweiriad a gynhelir yn byw yn y sgript yn hytrach na yn fflagiau'r cynhwysydd. Mae'r vpnc-script yr upstream wedi newid sut y mae'n trin y gweithrediad hwn, felly cymharwch y copi y tu mewn i'r ddelwedd â'r upstream cyfredol ac wedyn diweddarwch drwy'r pecyn neu'r adeiladwaith delwedd sy'n ei ddarparu. Nid yw ffeil a olygwyd â llaw y tu mewn i gynhwysydd rhedeg yn adolygadwy ac ni fydd yn goroesi'r adeiladwaith nesaf.
Nodir --privileged fel un sy'n rhoi pob gallu ynghyd â mynediad eang at ddyfeisiau, consesiwn mawr am neges nad yw'n newid dim, felly enwch y gallu coll yn lle hynny os yw un wir yn absennol. Ar ôl y diweddariad, ailadroddwch y chwiliad llwybr a gadewch i gymhwysiad ddefnyddio'r tiwnel, gan fod log tawel a chysylltiad sy'n gweithio yn ganlyniadau ar wahân.