De heak wurket de earste kear, en nei trije nije ferbiningen hâldt de keatling trije kopyen fan deselde regel. Neat mislearre lûd; it skript die by elke útfiering gewoan wat him sein wie. In VPN-heak is in konfiguraasjeoperaasje dy't mear as ien kear rinne kin, dêrom hat er in eigner, in winske tastân en in serialisearre feroaring nedich. Gean yn dy folchoarder te wurk, en de duplikaten stopje.

Jou de regels in eigner foardatst ien skriuwst

Beslis hokker keatling of tabel dizze yntegraasje besit foardatst ien regel skriuwst. In aparte keatling dy't de heak makket en leechmet is de dúdlikste foarm fan eigendom, want opromming kin dy keatling dan fuortsmite sûnder immen oars syn belied oan te reitsjen. Asst regels by in dielde keatling foegje moatst, markearje se mei in kommentaar sadat in lettere syktocht krekt dyn regels fynt. Eigendom is wat de ôfbraak feilich makket, en de ôfbraak is it part dat stil misbakket.

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

In kommentaar is hjir gjin fersiering. It is it ferskil tusken dyn regel fuortsmite en in regel fuortsmite dy't tafallich gelyk liket, en it oerlibbet yn ’e bewarre regelset. Skriuw de kommentaar ien kear yn in fariabele en brûk deselde tekst yn elk kommando dat tafoeget, test of fuortsmyt.

Test de winske tastân ynstee fan wer ta te foegjen

Skriuw op wat der wêze moat wylst de tunnel omheech is: hokker ynterfaces, hokker boarne en bestimming, hokker protokol en hokker poarte. Druk dan elke regel út as in test folge troch in ynfoeging, sadat in twadde útfiering de regel fynt en neat docht. It kontrôlekommando einiget mei nul as de regel bestiet, en dat is krekt it sinjaal dat it skript nedich hat. De iptables-referinsje dokumintearret de hjir brûkte foarmen foar kontrôle, tafoegjen en ynfoegje.

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

Wês foarsichtich mei de posysje. In regel kontrolearje en boppe-oan ynfoegje kin in talitting foar in bewuste wegering skowe dy’t earder earst kaam, dat de twadde útfiering feroaret it gedrach sels sûnder wat ta te foegjen. Foegje efteroan binnen dyn eigen keatling ta en stjoer de folchoarder troch wêr’t de sprong nei dy keatling sit. As de folchoarder binnen de keatling fan belang is, bou de keatling dan opnij út in bekende list ynstee fan him regel foar regel te lapjen.

Stop as de regel dy’tsto nedich hast net as in stabile test útdrukt wurde kin. Dat betsjut meast dat de winske tastân noch ûndúdlik is.

Serialisearje de feroaring ynstee fan te hoopjen dat it hâldt

Twa oanroppen fan de heak kinne oerlaapje, en beide kinne in ôfwêzige regel sjen foardat ien fan beiden him tafoeget. De wachtopje fan xtables lit in kommando op it slot wachtsje, mar it makket in kontrolearje-en-tafoegje-sekwinsje net atomêr oer twa kommando’s. Serialisearje de hiele operaasje mei dyn eigen slot, of brûk in behearder dy’t in oankundige bondel as ien transaksje tapast. nftables kin it lêste, wat ien reden is om it te ferkiezen op hosts dêr’t it beskikber is.

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

Hokker meganisme asto ek kiest, hâld de krityske seksje koart en meitsje him wer-ynfierber: in heak dy’t healwei misbakket moat feilich wêze om wer te rinnen. Log it resultaat sadat in werhelle útfiering yn it journaal sichtber is ynstee fan út in regeloantal ôflaat te wurden. As twa ferskillende tafersjochhâlders de heak oanroppe kinne, reparearje dat earst; gjin slot reparearret twa eigners.

Breek allinnich ôf wat fan dy is

De ôfbraak moat in ferfangende ferbining ûnderskiede fan dejinge dy’t er ôftanke hat, en it moat in barren oerlibje dat nea in skoandere opromming krijt. Wiskje mei deselde identifikatoaren dy’tsto brûkt hast om ta te foegjen, en meitsje nea in dielde keatling leech om de opromming ienfâldich te meitsjen. Nei in hurde stop, rin by de folgjende start in byinoar-pasjen troch ynstee fan oan te nimmen dat de delheak rûn hat.

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

De libbensdoer fan it ynterface heart ek by it ûntwerp. In nije ferbining kin in apparaat mei in oare namme meitsje, dat in regel dy’t de namme fan de twadde tunnel hurd kodearret ferâldet wylst er noch jildich liket. Foarkies de identiteit dy’t de ferbining sels sjen lit, en lês dy by elke útfiering op ’e nij. Test de trije barrens apart: in werhelle ferbining, in ferfangende ferbining en in ôfsluting. It talitte ferkear moat alle trije oerlibje sûnder duplikaten, en net besibbe tsjinsten moatte ûnoanrekke bliuwe.

De rûnlieding einiget as de heak in eigner, in test foar elke regel dy’t er tafoeget, ien serialisearre paad en in ôfbraak hat dy’t allinnich syn eigen tastân fuortsmyt. In heak dy’t feilich twa kear rint is mear wurdich as in heak dy’t ien kear tûk is.

Relatearre artikelen