Ní féidir leat clár a dhíolmhú ó óstach WireGuard le tollán iomlán trí róid a chur in eagar. Roghnaíonn róid cosán de réir ceann scríbe, agus is próiseas an rud a theastaíonn uait a dhíolmhú, mar sin níl aon rud ag an eithne le meaitseáil. Is é an cur chuige indéanta comhthéacs líonra féin a thabhairt don phróiseas sin: spás ainmneacha a bhfuil a chomhéadan, a sheoltaí agus a ród réamhshocraithe féin aige, ceangailte leis an óstach le péire veth. Rith mé é seo ar Ubuntu 24.04 le wireguard-tools 1.0.20210914, agus níorbh é an spás ainmneacha an fhadhb riamh — ba iad polasaí seolta an óstaigh agus rialacha marcála an tolláin an fhadhb.

Roghnaigh an cineál comhthéacs a theastaíonn uait ar dtús

Tagann dhá chruth chun cinn go praiticiúil. Má ritheann an t-óstach tollán iomlán agus má chaithfidh clár amháin imeacht ar chosán an ISP, tógann tú dara spás ainmneacha, ceanglaíonn tú leis an óstach é agus ligeann tú don óstach an trácht a sheoladh agus a aistriú dó. Má tá comhéadan VPN ag spás ainmneacha cheana féin agus nach dteastaíonn uait ach ordú a thosófaí istigh ann, sin an gnáthchás ip netns exec agus tá an chuid is mó den obair ródaithe déanta cheana féin.

Ní thugann ceachtar den dá chruth riail duit atá teoranta d'aitheantas próisis amháin. Meaitseálann Netfilter seoltaí, calafoirt, marcanna agus comhéadain; níl aon tábla ródaithe in aghaidh an phróisis. Is féidir le marcáil trácht a stiúradh, ach caithfear an mharc a chur ar phaicéid atá aitheanta agat cheana féin, agus sin an fhadhb chéanna leibhéal amháin níos ísle. Scarann spás ainmneacha an stac iomlán don chrann próiseas sin, agus is é sin an fáth gurb é an freagra is gnách é.

Más é an ceanglas i ndáiríre nach n-imeoidh aon rud as an tollán, stop an tollán ina ionad. Tá an spás ainmneacha ann don chás measctha: clár amháin amuigh, gach rud eile istigh, ar an meaisín céanna, ag an am céanna.

Tóg an dara comhthéacs agus ceangail leis an óstach é

Leagan amach léiritheach: tá comhéadan WireGuard ag an óstach a iompraíonn an ród réamhshocraithe, agus spás ainmneacha líonra darb ainm clearnet ceangailte leis an óstach le péire veth. Is samplaí iad na seoltaí thíos.

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

Is féidir leis an spás ainmneacha seo an t-óstach a shroicheadh anois agus aon rud eile. Caithfidh an t-óstach an trácht a sheoladh agus an seoladh foinse a athscríobh, mar tá 192.168.100.0/24 príobháideach agus níl aon ród ar ais isteach ann ag an ródaire lastuas:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o <wan-interface> -j MASQUERADE

Deimhnigh taobh an spáis ainmneacha sula dtéann tú níos faide.ip netns exec clearnet ip route ba chóir an ród veth agus an ród réamhshocraithe trí 192.168.100.1 a thaispeáint, agus ba chóir do phing chuig an seoladh sin freagra a thabhairt. Má theipeann ar phing chuig seoladh an óstaigh, tá na seoltaí nó staid an naisc mícheart agus ní chabhróidh aon riail balla dóiteáin.

Nuair a réitítear ainmneacha ach nach dtagann aon rud ar ais, léigh FORWARD

Breathnaíonn an mhainneacht chlasaiceach cosúil le fabht ródaithe: réitíonn an spás ainmneacha ainm, téann an paicéad amach, agus ní thagann aon fhreagra choíche. Ar óstaigh a bhfuil polasaí FORWARD de DROP acu — déanann roinnt dáileadh agus formhór na n-íomhánna cruaite amhlaidh — caitear an paicéad ar an mbealach, agus ní deir an earráid a phriontálann an feidhmchlár aon rud faoi scagadh.

Léigh an slabhra sula gcuireann tú aon rud leis:

iptables -S FORWARD
nft list chain inet filter forward

Ansin lig don trácht sa dá threo, le ráitéis, ionas go bhfeice tú ar mheaitseáil an riail riamh:

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'

Níl riail a bhfuil a ráiteas paicéad ag nialas ar an gcosán. Nó tá ainmneacha na gcomhéadan difriúil ón méid a ghlac tú leis, nó ghlac riail níos luaithe sa slabhra leis an bpaicéad, chaith sé é nó d'fhill sé é ar dtús. Deisigh an t-ord, ní téacs na rialach.

Is é trácht freagartha an leath a dhéanann daoine dearmad air. Teastaíonn an ainm veth céanna ón riail fillte móide meaitseáil staid naisc, nó glacadh comhéadain shimplí má choinníonn tú an polasaí oscailte. Cuir an riail amach amháin leis agus tagann an bhunsymptom ar ais, agus do riail nua ina sheasamh ansin agus í ag breathnú ceart.

Coinnigh rialacha marcála an tolláin amach ón gcosán nua

Casann an chéim seo spás ainmneacha atá ag obair ina cheann a ligeann sceitheadh. Suiteálann socruithe WireGuard polasaí marcála balla dóiteáin de ghnáth mar aon lena rialacha ródaithe féin agus tábla tiomnaithe, ionas go dtiteann paicéid neamhmharcáilte ar ais go dtí an príomhthábla agus úsáideann paicéid mharcáilte tábla an tolláin. Déantar trácht seolta ón spás ainmneacha a mheasúnú i gcoinne ródaithe polasaí ar a bhealach amach, agus ag brath ar conas a scríobhadh na rialacha sin, féadfaidh sé titim isteach i dtábla an tolláin.

Scarann dhá bhreiseán na cosáin. Fill go luath sa slabhra mangle don fholíonra spáis ainmneacha, agus cuir riail bunaithe ar fhoinse leis a chuireann an folíonra sin sa phríomhthábla:

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

Sórtáiltear tosaíocht 100 chun tosaigh ar rialacha an tolláin ar mo óstach, mar sin cinneann an gnáth-thábla don fhoinse sin. Ná déan cóip den uimhir go dall: na tosaíochtaí a wg-quick shuiteálann sé, tá siad difriúil idir leaganacha agus idir na socruithe IPv4 agus IPv6, mar sin rith ip rule show agus roghnaigh tosaíocht a thagann chun tosaigh ar rialacha an tolláin ar do mheaisín.

Fíoraigh le cuardach a bhaineann go sonrach le foinse seachas a bheith ag brath ar an liosta rialacha:

ip route get 1.1.1.1 from 192.168.100.2
ip netns exec clearnet ip route get 1.1.1.1

Má thuairiscíonn an chéad ordú comhéadan WireGuard, níl an riail nua chun tosaigh ar pholasaí an tolláin fós. Má thuairiscíonn sé comhéadan WAN agus an dara ceann fós ag taispeáint ród réamhshocraithe veth, níl an t-óstach agus an spás ainmneacha ag aontú agus ba chóir duit an dá thábla ródaithe a athléamh.

Tosaigh an próiseas a osclaíonn an nasc

Is líne amháin é an t-ordú a thosú, ach tosaigh an próiseas a chruthaíonn an soicéad i ndáiríre.ip netns exec clearnet curl -s https://ifconfig.me an tástáil onórach is lú: taispeánann sé an seoladh a chuireann an spás ainmneacha i láthair an domhain, ní an ceann a d'úsáidfeadh an t-óstach.

Le seirbhís, ceangail an spás ainmneacha de réir cosáin ionas go bhfanann an próiseas ann ar feadh a shaoil:

[Service]
NetworkNamespacePath=/run/netns/clearnet

Is i bhfeidhmchláir ghrafacha a theipeann an cur chuige aonlíne go ciúin. Is minic a thugann brabhsálaí a sheoltar ó roghchlár an t-iarratas do chás atá ag rith lasmuigh den spás ainmneacha cheana féin, mar sin tagann an fhuinneog nua chun solais agus téann an trácht amach tríd an tollán fós. Tabhair próifíl ar leith dó ionas go gcruthófar cás nua i ndáiríre, ansin seiceáil comhthéacs an phróisis seachas buille faoi thuairim a thabhairt:

readlink /proc/$(pgrep -f clearnet-profile | head -1)/ns/net
readlink /run/netns/clearnet

Caithfidh an dá aschur teacht le chéile. Oibríonn an tseiceáil chéanna d'aon chlár fadtréimhseach, agus is fiú í a dhéanamh uair amháin in aghaidh an fheidhmchláir seachas glacadh leis go ndearna an tosaitheoir an rud a bhí i gceist agat.

Teastaíonn a chinneadh féin ó réiteach ainmneacha. Ní thugann cruthú spáis ainmneacha cumraíocht réiteora dó; tacaítear le comhaid in aghaidh an spáis ainmneacha trí /etc/netns/<name>/resolv.conf agus gan ceann faigheann tú iompar atá éasca a léamh go mícheart. Teastaíonn an chóireáil chéanna ó IPv6: mura bhfuil aon ród réamhshocraithe v6 ag an spás ainmneacha agus an feidhmchlár ag roghnú v6, féadfaidh iarratais stopadh sula dtéann siad siar, rud a fhéachann cosúil le tollán briste.

Seiceáil an fráma, ní hamháin an seoladh amach

Cruthaíonn seoladh poiblí atá ag obair an ród, ní an ceanglas iomlán. Siúil an chuid eile san ord seo:

  • ip netns exec clearnet ip route get 1.1.1.1 taispeánann sé ród réamhshocraithe veth, ní comhéadan WireGuard.
  • Méadaíonn ráitéis FORWARD ar an dá riail agus iarratas ag rith.
  • Tuairiscíonn próiseas an fheidhmchláir an inode spáis ainmneacha a bhfuil tú ag súil leis.
  • Tar éis atosaigh tá an spás ainmneacha ann sula dtosaíonn an tseirbhís; teipeann ar aonad a ritheann níos luaithe nó, níos measa, ritheann sé lasmuigh den spás ainmneacha.

Ansin socraigh cad ba chóir a tharlú nuair a thiteann an tollán. Leanann an spás ainmneacha ag obair, agus sin pointe an chleachtaidh agus an riosca freisin: fanann an clár díolmhaithe ceangailte agus stopann gach rud eile. Taifead é sin mar rogha polasaí, agus bí soiléir faoin méid nach gclúdaíonn an díolúine — tá féiniúlacht an chuntais, staid an bhrabhsálaí a shábháiltear agus do sholáthraí DNS go léir lasmuigh de raon spáis ainmneacha líonra, agus is é an botún a mhaireann níos faide ná an chumraíocht an díolúine a mheas mar anaithnideacht.

Ailt ghaolmhara