Kif tgħaddi proċess wieħed ta' Linux barra minn tunnel WireGuard
Agħti lil programm wieħed il-kuntest tan-netwerk tiegħu stess biex joħroġ minn host WireGuard b'tunnel sħiħ, imbagħad sewwi r-regoli tal-ġarr u tal-immarkar li jfixkluh.
Ma tistax teżenta programm minn host WireGuard b'tunnel sħiħ billi teditja r-rotot. Ir-rotot jagħżlu triq skont id-destinazzjoni, u dak li trid teżenta huwa proċess, għalhekk il-qalba m'għandha xejn x'qabbel. L-approċċ li jaħdem huwa li tagħti lil dak il-proċess il-kuntest tan-netwerk tiegħu stess: spazju tal-ismijiet b'interface tiegħu, bl-indirizzi tiegħu u bir-rotta default tiegħu, imqabbad mal-host permezz ta' par veth. Ġerrejt dan fuq Ubuntu 24.04 b'wireguard-tools 1.0.20210914, u l-ispazju tal-ismijiet qatt ma kien il-problema — il-problema kienet il-politika tal-ġarr tal-host u r-regoli tal-immarkar tat-tunnel.
L-ewwel agħżel it-tip ta' kuntest li għandek bżonn
Fil-prattika jidhru żewġ forom. Jekk il-host iħaddem tunnel sħiħ u programm wieħed irid joħroġ mit-triq tal-ISP, tibni t-tieni spazju tal-ismijiet, tqabbdu mal-host u tħalli lill-host iġorr u jittraduċi t-traffiku għalih. Jekk spazju tal-ismijiet diġà jġorr interface VPN u għandek bżonn biss kmand mibdi fih, dak huwa l-każ tas-soltu ta'ip netns exec u l-biċċa l-kbira tax-xogħol tar-routing diġà sar.
L-ebda forma ma tagħtik regola limitata għal ID wieħed ta' proċess. Netfilter iqabbel indirizzi, portijiet, marki u interfaces; m'hemmx tabella tar-routing għal kull proċess. L-immarkar jista' jwassal it-traffiku, imma l-marka trid titqiegħed fuq pakketti li diġà identifikajt, u din hija l-istess problema saff wieħed aktar 'l isfel. L-ispazju tal-ismijiet jifred il-munzell kollu għal dik is-siġra ta' proċessi, u għalhekk hija t-tweġiba tas-soltu.
Jekk il-ħtieġa hija tassew li xejn ma joħroġ mit-tunnel, waqqaf it-tunnel minflok. L-ispazju tal-ismijiet jeżisti għall-każ imħallat: programm wieħed 'il barra, kollox ieħor 'il ġewwa, fuq l-istess magna, fl-istess ħin.
Ibni t-tieni kuntest u qabbdu mal-host
Qafas illustrattiv: il-host għandu interface WireGuard li jġorr ir-rotta default, u spazju tal-ismijiet tan-netwerk imsejjaħ clearnet imqabbad mal-host permezz ta' par veth. L-indirizzi hawn taħt huma eżempji.
ip netns add clearnet
ip link add veth-clear-out type veth peer name veth-clear-in
ip addr add 192.168.100.1/24 dev veth-clear-out
ip link set veth-clear-out up
ip link set veth-clear-in netns clearnet
ip netns exec clearnet ip addr add 192.168.100.2/24 dev veth-clear-in
ip netns exec clearnet ip link set veth-clear-in up
ip netns exec clearnet ip route add default via 192.168.100.1
Dak l-ispazju tal-ismijiet issa jista' jilħaq il-host u xejn ieħor. Il-host irid iġorr it-traffiku u jerġa' jikteb l-indirizz tas-sors, għax 192.168.100.0/24 huwa privat u r-router ta' fuq m'għandux rotta lura fih:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o <wan-interface> -j MASQUERADE
Ikkonferma n-naħa tal-ispazju tal-ismijiet qabel ma tkompli.ip netns exec clearnet ip route għandu juri r-rotta veth u r-rotta default permezz ta' 192.168.100.1, u ping għal dak l-indirizz għandu jwieġeb. Jekk il-ping għall-indirizz tal-host ifalli, l-indirizzi jew l-istat tal-konnessjoni huma ħżiena u l-ebda regola tal-firewall mhi se tgħin.
Meta l-ismijiet jiġu solvuti imma xejn ma jerġa' lura, aqra FORWARD
Il-falliment klassiku jidher bħal bug tar-routing: l-ispazju tal-ismijiet isolvi isem, il-pakkett joħroġ, u qatt ma jasal tweġiba. Fuq hosts b'politika FORWARD ta' DROP — hekk jagħmlu diversi distribuzzjonijiet u l-biċċa l-kbira tad-deljiet imsaħħa — il-pakkett jiġi mwarrab fit-triq, u l-iżball li jistampa l-programm ma jgħid xejn dwar il-filtrazzjoni.
Aqra l-katina qabel ma żżid xejn:
iptables -S FORWARD
nft list chain inet filter forward
Imbagħad ħalli t-traffiku f'kull direzzjoni, b'counters, biex tkun taf jekk ir-regola qabblet qatt:
iptables -A FORWARD -i veth-clear-out -o <wan-interface> -j ACCEPT
iptables -A FORWARD -i <wan-interface> -o veth-clear-out -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
watch -n1 'iptables -L FORWARD -v -n'
Regola b'counter tal-pakketti ta' żero mhix fit-triq. Jew l-ismijiet tal-interfaces huma differenti minn dak li assumint, jew regola preċedenti fil-katina aċċettat, warrbet jew irritornat il-pakkett l-ewwel. Sewwi l-ordni, mhux it-test tar-regola.
It-traffiku tat-tweġiba huwa n-nofs li n-nies jinsu. Ir-regola tar-ritorn teħtieġ l-istess isem veth flimkien ma' qbil tal-istat tal-konnessjoni, jew aċċettazzjoni sempliċi tal-interface jekk iżżomm il-politika miftuħa. Żżidx biss ir-regola tal-ħruġ u s-sintomu oriġinali jerġa' lura, bir-regola l-ġdida tiegħek hemmhekk u tidher korretta.
Żomm ir-regoli tal-immarkar tat-tunnel 'il bogħod mit-triq il-ġdida
Dan il-pass ibiddel spazju tal-ismijiet li jaħdem f'wieħed li jnixxi. Is-setups ta' WireGuard normalment jinstallaw politika tal-marka tal-firewall flimkien mar-regoli tar-routing tagħhom u tabella dedikata, għalhekk il-pakketti bla marka jaqgħu lura fit-tabella prinċipali filwaqt li l-pakketti mmarkati jużaw it-tabella tat-tunnel. It-traffiku mgħoddi mill-ispazju tal-ismijiet jiġi evalwat kontra r-routing tal-politika meta joħroġ, u skont kif inkitbu dawk ir-regoli jista' jaqa' fit-tabella tat-tunnel.
Żewġ żidiet jifirdu t-toroq. Erġa' lura kmieni fil-katina mangle għas-subnet tal-ispazju tal-ismijiet, u żid regola bbażata fuq is-sors li tqiegħed dak is-subnet fit-tabella prinċipali:
iptables -t mangle -I PREROUTING -s 192.168.100.0/24 -j RETURN
ip rule add from 192.168.100.0/24 lookup main priority 100
Il-prijorità 100 tordna qabel ir-regoli tat-tunnel fuq il-host tiegħi, għalhekk it-tabella tas-soltu tiddeċiedi għal dak is-sors. Tikkupjax in-numru għama: il-prijoritajiet li wg-quick jinstalla huma differenti bejn verżjonijiet u bejn is-setups tal-IPv4 u tal-IPv6, għalhekk mexxi ip rule show u agħżel prijorità li taqa' quddiem ir-regoli tat-tunnel fuq il-magna tiegħek.
Ivverifika b'tfittxija speċifika għas-sors minflok ma tafda l-lista tar-regoli:
ip route get 1.1.1.1 from 192.168.100.2
ip netns exec clearnet ip route get 1.1.1.1
Jekk l-ewwel kmand jirrapporta l-interface WireGuard, ir-regola l-ġdida għadha mhix quddiem il-politika tat-tunnel. Jekk jirrapporta l-interface WAN filwaqt li t-tieni għadu juri r-rotta default veth, il-host u l-ispazju tal-ismijiet ma jaqblux u għandek terġa' taqra ż-żewġ tabelli tar-routing.
Ibda l-proċess li jiftaħ il-konnessjoni
Li tibda l-kmand hija linja waħda, imma ibda l-proċess li verament joħloq is-socket.ip netns exec clearnet curl -s https://ifconfig.me huwa l-iżgħar test onest: juri l-indirizz li l-ispazju tal-ismijiet jipperżenta lid-dinja, mhux dak li l-host juża.
Għal servizz, waħħal l-ispazju tal-ismijiet bit-triq biex il-proċess jibqa' fih ħajtu kollha:
[Service]
NetworkNamespacePath=/run/netns/clearnet
L-applikazzjonijiet grafiċi huma fejn l-approċċ ta' linja waħda ifalli bil-kwiet. Browser mibdi mill-menu spiss jagħti t-talba lil istanza li diġà qed taħdem barra mill-ispazju tal-ismijiet, għalhekk it-tieqa l-ġdida tidher u t-traffiku xorta joħroġ mit-tunnel. Agħtih profil separat biex istanza ġdida tassew tinħoloq, imbagħad iċċekkja l-kuntest tal-proċess minflok ma taħseb:
readlink /proc/$(pgrep -f clearnet-profile | head -1)/ns/net
readlink /run/netns/clearnet
Iż-żewġ outputs iridu jaqblu. L-istess verifika taħdem għal kull programm li jdum ħafna, u jiswa li tagħmilha darba għal kull applikazzjoni minflok ma tassumi li l-lancjar għamel dak li kellek f'moħħok.
Is-soluzzjoni tal-ismijiet teħtieġ id-deċiżjoni tagħha. Il-ħolqien ta' spazju tal-ismijiet ma jtihx konfigurazzjoni tar-resolver; fajls għal kull spazju tal-ismijiet huma appoġġjati permezz ta'/etc/netns/<name>/resolv.conf, u mingħajr wieħed tirret il-kondotta li faċli taqraha ħażin. IPv6 jeħtieġ l-istess trattament: jekk l-ispazju tal-ismijiet m'għandux rotta default v6 filwaqt li l-applikazzjoni tippreferi v6, it-talbiet jistgħu jieqfu qabel ma jerġgħu lura, u dan jidher bħal tunnel miksur.
Iċċekkja l-qafas, mhux biss l-indirizz tal-ħruġ
Indirizz pubbliku li jaħdem jipprova r-rotta, mhux il-ħtieġa kollha. Għaddi mill-bqija b'dan l-ordni:
ip netns exec clearnet ip route get 1.1.1.1juri r-rotta default veth, mhux l-interface WireGuard.- Il-counters tal-FORWARD fuq iż-żewġ regoli jiżdiedu waqt li tkun għaddejja talba.
- Il-proċess tal-applikazzjoni jirrapporta l-inode tal-ispazju tal-ismijiet li qed tistenna.
- Wara reboot l-ispazju tal-ismijiet jeżisti qabel ma jibda s-servizz; unit li jaħdem qabel ifalli jew, agħar minn hekk, jaħdem barra mill-ispazju tal-ismijiet.
Imbagħad iddeċiedi x'għandu jiġri meta t-tunnel jaqa'. L-ispazju tal-ismijiet jibqa' jaħdem, u dan huwa l-punt tal-eżerċizzju u wkoll ir-riskju: il-programm eżentat jibqa' konness filwaqt li kollox ieħor jieqaf. Irreġistra dan bħala għażla ta' politika u kun ċar dwar dak li l-eżenzjoni ma tkoprix — l-identità tal-kont, l-istat salvat tal-browser u l-fornitur tad-DNS tiegħek kollha jinsabu barra mill-ambitu ta' spazju tal-ismijiet tan-netwerk, u li tqis l-eżenzjoni bħala anonimità huwa l-iżball li jgħix itwal mill-konfigurazzjoni.