Mae’r bachyn yn gweithio’r tro cyntaf, ac ar ôl tair ailgysylltiad mae’r gadwyn yn dal tair copi o’r un rheol. Ni fethodd unrhyw beth yn uchel; gwnaeth y sgript yn syml yr hyn a ddywedwyd wrthi bob tro y rhedodd. Mae bachyn VPN yn weithrediad cyfluniad a all redeg fwy nag unwaith, felly mae angen perchennog, cyflwr dymunol ac un newid dilyniant arno. Cerddwch yn y drefn honno, a bydd y dyblygiadau’n stopio.

Rhowch berchennog i’r rheolau cyn ysgrifennu unrhyw un

Penderfynwch pa gadwyn neu daflen sy’n eiddo i’r integreiddiad hwn cyn i chi ysgrifennu unrhyw reol. Cadwyn bwrpasol y mae’r bachyn yn ei chreu ac yn ei gwacáu yw’r ffurf gliriaf ar berchnogaeth, oherwydd gall glanhau wedyn ddileu’r gadwyn honno heb gyffwrdd â pholisi unrhyw un arall. Os oes rhaid i chi ychwanegu rheolau at gadwyn a rennir, tagiwch hwy â sylw fel y gall chwiliad diweddarach ddod o hyd i’r rhai sy’n eiddo i chi yn union. Perchnogaeth sy’n gwneud dadelfeniad yn ddiogel, a dadelfeniad yw’r rhan sy’n methu’n dawel.

iptables -N VPN_HOOK 2>/dev/null || true
iptables -C INPUT -j VPN_HOOK 2>/dev/null || iptables -I INPUT -j VPN_HOOK
iptables -S VPN_HOOK

Nid addurn yw sylw yma. Dyma’r gwahaniaeth rhwng dileu eich rheol a dileu rheol sy’n digwydd edrych yn debyg, ac mae’n goroesi yn y set rheolau a gadwyd. Ysgrifennwch y sylw unwaith mewn newidyn a defnyddiwch yr un llinyn ym mhob gorchymyn sy’n ychwanegu, yn profi neu’n dileu.

Profwch y cyflwr dymunol yn lle ychwanegu eto

Ysgrifennwch beth ddylai fodoli tra bo’r tiwnel i fyny: pa ryngwynebau, pa ffynhonnell a chyrchfan, pa brotocol a pha borth. Yna mynegwch bob rheol fel prawf wedi’i ddilyn gan fewnosodiad, fel bod ail rediad yn dod o hyd i’r rheol ac yn gwneud dim. Mae’r gorchymyn gwirio yn gorffen gyda sero pan fo’r rheol yn bodoli, a dyna’n union y signal sydd ei angen ar y sgript. Mae cyfeirlyfr iptables yn dogfennu’r ffurfiau gwirio, atodi a mewnosod a ddefnyddir yma.

iptables -C VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT ||
  iptables -A VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT

Byddwch yn ofalus gyda safle. Gall gwirio rheol a’i mewnosod ar y brig symud caniatâd o flaen gwadiad bwriadol a arferai ddod yn gyntaf, felly mae’r ail rediad yn newid ymddygiad hyd yn oed heb ychwanegu dim. Atodwch y tu mewn i’ch cadwyn eich hun, a rheolwch y drefn trwy ble mae’r naid i’r gadwyn honno. Os yw trefn o fewn y gadwyn yn bwysig, ailadeiladwch y gadwyn o restr hysbys yn lle ei chlytio reol wrth reol.

Stopiwch os na ellir mynegi’r rheol sydd ei hangen fel prawf sefydlog. Mae hynny fel arfer yn golygu bod y cyflwr dymunol yn dal yn annelwig.

Dilyniantwch y newid yn lle gobeithio iddo ddal

Gall dau alwad i’r bachyn orgyffwrdd, a gall y ddau weld rheol absennol cyn i’r naill na’r llall ei hychwanegu. Mae opsiwn aros xtables yn gwneud gorchymyn yn aros am y clo, ond nid yw’n gwneud dilyniant gwirio-ac-ychwanegu yn atomig ar draws dau orchymyn. Dilyniantwch y weithrediad gyfan gyda’ch clo eich hun, neu defnyddiwch reolwr sy’n cymhwyso swp datganedig fel un trafodiad. Gall nftables wneud yr olaf, ac mae hynny’n un rheswm dros ei ffafrio ar westeiwyr lle mae ar gael.

flock /run/vpn-hook.lock /usr/local/sbin/vpn-firewall-apply
nft -f /etc/nftables/vpn-hook.nft

Pa bynnag fecanwaith a ddewiswch, cadwch yr adran feirniadol yn fyr a gwnewch hi’n aildroi: dylai bachyn sy’n methu hanner ffordd fod yn ddiogel i’w redeg eto. Cofnodwch y canlyniad fel bod rhediad dro ar ôl tro yn weladwy yn y journal yn hytrach na chael ei gasglu o gyfrif rheolau. Os gall dau oruchwyliwr gwahanol alw’r bachyn, trwsiwch hynny gyntaf; nid yw unrhyw glo yn trwsio dau berchennog.

Dymchwelwch yn unig yr hyn sy’n eiddo i chi

Rhaid i ddadelfeniad wahaniaethu cysylltiad amnewid oddi wrth yr un y gwnaeth ei ymddeol, a rhaid iddo oroesi digwyddiad nad yw byth yn cael glanhau graslon. Dilëwch gan ddefnyddio’r un dynodwyr a ddefnyddiwyd gennych i ychwanegu, ac na wacëwch gadwyn a rennir byth i symleiddio glanhau. Ar ôl stop caled, rhedwch bas cymodi yn y cychwyn nesaf yn lle tybio bod y bachyn i lawr wedi rhedeg.

iptables -D VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT
iptables -F VPN_HOOK
ip -brief link show type tun

Mae oes y rhyngwyneb yn perthyn i’r dyluniad hefyd. Gall ailgysylltiad greu dyfais ag enw gwahanol, felly mae rheol sy’n caledu enw’r ail diwnel yn mynd yn hen tra’n dal i edrych yn ddilys. Ffafriwch yr hunaniaeth y mae’r cysylltiad ei hun yn ei datgelu, a’i hail-ddarllen ar bob rhediad. Profwch y tri digwyddiad ar wahân: ailgysylltiad, cysylltiad amnewid a chau i lawr. Dylai’r traffig a ganiateir oroesi’r tri heb ddyblygiadau, a dylai gwasanaethau anghysylltiedig aros heb eu cyffwrdd.

Mae’r daith gerdded yn gorffen pan fo gan y bachyn berchennog, prawf ar gyfer pob rheol y mae’n ei hychwanegu, un llwybr dilyniant, a dadelfeniad sy’n tynnu dim ond ei gyflwr ei hun. Mae bachyn sy’n ddiogel i’w redeg ddwywaith yn werth mwy na bachyn sy’n glyfar unwaith.

Erthyglau cysylltiedig