SSD Nodes Learn 🎉 VPS kutoka $5.50/mwezi
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-13

Jinsi ya kutumia VPS kama Tailscale exit node

Badilisha VPS yako kuwa Tailscale exit node kwa kufuata hatua hizi za usanidi wa IP forwarding na utangazaji wa njia. Jifunze jinsi ya kuepuka makosa ya IPv6 na DNS.

Kazi ya Tailscale exit node

Tailscale exit node ni mashine kwenye tailnet yako inayobeba trafiki yote ya internet kwa ajili ya vifaa vyako vingine, na VPS (virtual private server) inafaa sana kwa kazi hii kwa sababu ina anwani ya umma isiyobadilika na inabaki mtandaoni. Kuweka exit node huchukua hatua tano: sakinisha Tailscale kwenye seva, tangaza exit node, washa IP forwarding, idhinisha njia (route) kwenye admin console, kisha chagua node hiyo kwenye laptop yako. Hatua ya nne ni kitufe cha kuwasha kwenye ukurasa wa wavuti na si amri ya terminal, na hapo ndipo watu wengi hukwama.

Mara inapowashwa, laptop yako husimba pakiti zote na kuzituma kwenye VPS. VPS hutumia source NAT (network address translation) na kutuma pakiti hiyo mbele kwa kutumia anwani yake ya IP ya umma. Tovuti huiona VPS. Wi-Fi ya mkahawa huona mtiririko mmoja wa UDP uliosimbwa kuelekea VPS na hakuna kingine.

Tailscale ni WireGuard kwa ajili ya njia ya data pamoja na seva ya uratibu inayosambaza funguo na kusaidia mashine mbili kupata kila moja kupitia NAT. Seva hiyo ya uratibu ndiyo sababu hakuna nakala ya funguo inayohitajika hapa chini. Kwa ajili ya mambo ya kuzingatia yaliyoelezwa vizuri, soma jinsi Tailscale na WireGuard ya kawaida yanavyolinganishwa. Ikiwa ungependa kumiliki kila sehemu ya tunnel mwenyewe, jiwekee mwenyewe WireGuard VPN ya kawaida kwenye VPS yako badala yake.

Hatua zilizo hapa chini zinadhani kuwa Tailscale tayari inafanya kazi kwenye laptop yako, na kwamba mashine zote mbili zimeingia kwenye tailnet moja. Tailnet ni mtandao wako binafsi wa Tailscale, na kila kifaa ndani yake hupata anwani thabiti ndani ya 100.64.0.0/10.

Sakinisha Tailscale kwenye VPS yako

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

Hati ya usakinishaji huchagua hazina ya vifurushi (package repository) kwa ajili ya mfumo wako na kusakinisha daemon ya tailscaled. Kisha tailscale up huchapisha URL ya uthibitishaji. Ifungue kwenye kivinjari na uingie kwa kutumia akaunti ileile inayotumiwa na kompyuta yako ndogo, kwa sababu VPS iliyoingia kwenye tailnet tofauti haiwezi kuhudumia kompyuta yako hata kidogo.

tailscale status
tailscale ip -4

tailscale status inapaswa sasa kuorodhesha mashine zote mbili. tailscale ip -4 huchapisha anwani ya tailnet ya VPS, ambayo ndiyo unayopaswa kumpa mteja baadaye.

Tailscale inahitaji kifaa cha TUN ili kujenga handaki (tunnel). Kwenye VPS ya KVM kifaa hicho kipo. Kwenye mipango iliyojengwa kwa kutumia uboreshaji wa kontena (container virtualization) inayoshiriki kernel ya seva mwenyeji, /dev/net/tun wakati mwingine haipo, na tailscaled haiwezi kuunda kiolesura cha tailscale0. Tekeleza ls -l /dev/net/tun kabla ya kuendelea zaidi.

Washa IP forwarding, la sivyo VPS itakata kila pakiti

Mashine ya Linux hukataa pakiti yoyote ambayo haijaelekezwa kwake, kwa sababu net.ipv4.ip_forward huwa 0 kwa chaguomsingi. Nodi ya kutoka (exit node) itakubali trafiki yako, itaisimbua, kisha itaitupa. Andika mpangilio huu kwenye faili ili uendelee kufanya kazi baada ya reboot.

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

tee -a huongeza maandishi mwishoni mwa faili, kwa hivyo kuendesha mistari hii mara ya pili kutaandika mipangilio yote mara mbili. Matokeo yataendelea kufanya kazi, lakini cat /etc/sysctl.d/99-tailscale.conf itaonekana isiyo ya kawaida. Thibitisha thamani inayotumika sasa badala ya kuamini faili:

sysctl net.ipv4.ip_forward

Lazima ichapishe net.ipv4.ip_forward = 1. Ukiruka hatua hii na kutumia tailscale up --advertise-exit-node, mteja atakuambia:

Warning: IP forwarding is disabled, subnet routing/exit nodes will not work.

tailscale set --advertise-exit-node haiendeshi ukaguzi huo, kwa hivyo ukimya kutoka kwa set si uthibitisho kwamba forwarding imewashwa. Soma thamani ya sysctl wewe mwenyewe.

Huna haja ya kuandika sheria ya masquerade kwa mkono. tailscaled husakinisha minyororo yake ya firewall, inayoitwa ts-input, ts-forward na ts-postrouting, na sheria ya NAT kwa ajili ya trafiki ya exit node hukaa ndani ya ts-postrouting. Iangalie kwa kutumia sudo iptables-save | grep ts-, au sudo nft list ruleset kwenye mfumo wa nftables.

Tangaza VPS kama exit node

sudo tailscale set --advertise-exit-node

tailscale set hubadilisha upendeleo mmoja na kuacha mingine kama ilivyo. tailscale up --advertise-exit-node hutangaza node hiyo pia, na ina athari ya kando: up huchukulia flag zilizopo kwenye mstari wake wa amri kama seti kamili ya mipangilio isiyo ya kawaida, kwa hivyo sudo tailscale up tupu inayofuata hukataa kufanya kazi na kuchapisha

changing settings via 'tailscale up' requires mentioning all
non-default flags. To proceed, either re-run your command with --reset or
use the command below to explicitly mention the current value of
all non-default settings:

Tumia set kwa mabadiliko ya mara kwa mara na hutakutana na ujumbe huo kamwe.

Kutangaza ni ofa. VPS sasa inauambia seva ya uratibu kwamba iko tayari kuwa exit node. Hakuna mteja anayeweza kuitumia bado.

Idhinisha Tailscale exit node katika dashibodi ya admin

Hii ni hatua isiyohitaji amri yoyote. Fungua ukurasa wa Machines katika dashibodi ya admin, tafuta VPS hiyo, fungua menyu ya vitone vitatu mwishoni mwa mstari wake, chagua Edit route settings, kisha uwashe Use as exit node.

Mpaka swichi hiyo iwashwe, control plane inashikilia ofa hiyo na haimpe mtu yeyote. tailscale exit-node list kwenye laptop yako haionyeshi kitu, na trafiki yako inaendelea kufuata njia yake ya kawaida. Hakuna ujumbe wa hitilafu kwenye mashine yoyote kati ya hizo mbili. Exit node haionekani kabisa.

Unaweza kuidhinisha exit nodes kiotomatiki kwa kuweka ingizo katika faili ya sera ya tailnet:

"autoApprovers": {
  "exitNode": ["tag:exit"],
}

Kifaa kilichowashwa kwa kutumia --advertise-tags=tag:exit kinakuwa kimeidhinishwa chenyewe, mradi tu tag:exit imefafanuliwa chini ya tagOwners katika faili hiyo hiyo ya sera. Kuweka tag hubadilisha umiliki: kifaa chenye tag ni mali ya tailnet badala ya kuwa mali ya akaunti yako ya mtumiaji, na sheria za ufikiaji zinazokihusu hubadilika kulingana na hilo. Kwa VPS moja, kutumia swichi ni njia rahisi zaidi.

Chagua exit node kwenye laptop yako

Kwenye client ya Linux:

tailscale exit-node list
sudo tailscale set --exit-node=vps.your-tailnet.ts.net

exit-node list huorodhesha exit nodes zilizoidhinishwa kwenye tailnet yako pamoja na anwani zake. Orodha tupu inamaanisha hatua ya kuidhinisha haikufanyika. Kwenye macOS, Windows, iOS na Android, chaguo hilo ni kipengee cha menyu chini ya Exit Node katika programu ya Tailscale.

Thibitisha kutoka kwa client, kamwe usifanye hivyo kutoka kwa seva:

curl -4 https://ifconfig.me

Iendeshe mara moja kabla ya kuchagua exit node na mara moja baada ya hapo. Anwani lazima ibadilike kutoka ile ya kwako ya ndani kwenda kwenye IP ya umma ya VPS. Ili kuacha kutumia exit node:

sudo tailscale set --exit-node=

Kuna flag nyingine moja muhimu siku ya kwanza. Ukiwa umechagua exit node, client hutuma kila kitu kwenye tunnel, ikiwemo pakiti zinazoelekezwa kwenye 192.168.1.50, kwa hivyo printa yako na hifadhi ya mtandao (network storage) huacha kujibu. Weka mtandao wa ndani kwenye njia ya ndani (local route):

sudo tailscale set --exit-node=<name> --exit-node-allow-lan-access=true

Kwa nini DNS yako hubadilika pindi exit node inapowashwa

Kwa chaguomsingi, kifaa kinachotumia exit node pia hutumia exit node hiyo kama resolver ya DNS (domain name system) kwa kila domain, na hii hupuuza nameservers za kimataifa na zilizogawanywa zilizosanidiwa kwa ajili ya tailnet yako. Tabia hii imekusudiwa. Ikiwa maombi yangeendelea kwenda kwa resolver ya mtandao wa ndani, router ya mkahawa ingeweza kuona jina la kila tovuti unayotembelea wakati trafiki yenyewe ikiwa ya faragha. Majina na pakiti vinapaswa kuondoka kutoka sehemu moja.

Matokeo moja yanayowaathiri watu wanaoendesha resolver ya ndani ni kwamba nameserver ya tailnet unayoitegemea huacha kutumika wakati exit node ikiwa imewashwa. Washa Use with exit node kwa nameserver hiyo kwenye ukurasa wa DNS wa admin console ili kuirejesha.

Majina ya MagicDNS yanaendelea kufanya kazi, kwa sababu mteja wa Tailscale huyajibu ndani ya kifaa kwenye 100.100.100.100 kabla ya kitu chochote kufika kwenye exit node. Iangalie kwa dig @100.100.100.100 your-vps.your-tailnet.ts.net, au kwenye mteja wa systemd-resolved kwa resolvectl status, ambapo interface ya Tailscale huorodhesha 100.100.100.100 kama seva yake ya DNS.

Ukizima usimamizi wa DNS wa Tailscale kwa --accept-dns=false, mteja huhifadhi resolver aliyoipata kutoka kwenye mtandao wa ndani. Trafiki hupitishwa kwenye tunnel lakini maombi hayapitishwi, jambo ambalo ni uvujaji uleule wa DNS unaokumba tunnels za WireGuard zilizojengwa kwa mikono. Acha --accept-dns kama ilivyo isipokuwa kama una sababu maalum ya kuibadilisha.

IPv6 kupitia exit node

Exit node hutangaza njia za default, 0.0.0.0/0 na ::/0. Ikiwa VPS haina njia ya IPv6 inayofanya kazi kuelekea Internet, pakiti za IPv6 hufika kupitia tunnel na kuishia hapo. Fanya majaribio kwenye VPS kabla ya kuiamini:

ip -6 addr show
curl -6 https://ifconfig.me

Ombi lililofeli linamaanisha kuwa VPS haina IPv6 upstream. Tovuti zenye dual stack kwa kawaida bado hupakia, kwa sababu mteja huacha kutumia IPv6 na kujaribu tena kupitia IPv4, ingawa jaribio hilo huongeza ucheleweshaji kwenye muunganisho wa kwanza kwa kila tovuti. Maeneo ya IPv6-only hubaki hayawezi kufikika.

Nusu nyingine ni forwarding. net.ipv4.ip_forward = 1 ikiwa na net.ipv6.conf.all.forwarding iliyoachwa kwenye 0 hukupa njia ya IPv4 inayofanya kazi na shimo jeusi (black hole) kwa IPv6, jambo ambalo msomaji huliona kama "tovuti fulani ni za polepole" badala ya hitilafu ambayo mtu yeyote anaweza kuitafutia ufumbuzi. Mistari yote miwili inapaswa kuwepo kwenye faili ya sysctl.

Je, VPS inapaswa kutangaza njia za subnet pia?

Exit node hubeba trafiki yote ya Internet. Njia ya subnet hubeba masafa moja ya anwani za ndani (private range) yaliyo nyuma ya mashine inayotangaza njia hiyo. Hizi ni vipengele tofauti vyenye idhini tofauti, na mashine moja inaweza kufanya yote mawili.

sudo tailscale set --advertise-routes=10.0.0.0/24

Tangaza subnet wakati VPS inashiriki mtandao wa ndani na seva nyingine unazotaka kuzifikia kupitia anwani zao za ndani. Iidhinishe katika paneli ileile ya Edit route settings, kwenye kitufe chake cha pekee.

Chagua masafa hayo kwa uangalifu. Njia iliyotangazwa ina kipaumbele zaidi kuliko njia ya kawaida (default route) ya kompyuta yako, kwa hivyo kutangaza 192.168.1.0/24 kutoka kwenye VPS kutachukua nafasi ya anwani za mtandao wa nyumbani unaotumia masafa hayo hayo, na vifaa vilivyo mezani pako vitapoteza muunganisho. Tumia masafa uliyochagua wewe mwenyewe, si yale ambayo router yako ya nyumbani imekuchagulia.

Fanya exit node iwe na kasi kwa kutumia UDP GRO forwarding

Tailscale 1.54 na matoleo mapya zaidi, kwenye kernel ya Linux 6.2 au mpya zaidi, inaweza kutumia receive offload inayoongeza throughput kwa trafiki inayopitishwa. GRO (generic receive offload) huunganisha pakiti zinazoingia kabla ya kernel kuzichakata moja baada ya nyingine. Kufikia Agosti 2026, hatua hii bado inafanywa kwa mikono kwenye exit node.

sudo apt install -y ethtool
NETDEV=$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")
sudo ethtool -K $NETDEV rx-udp-gro-forwarding on rx-gro-list off

ip -o route get 8.8.8.8 huripoti interface inayofika kwenye internet, kwa hivyo huhitaji kubahatisha kati ya eth0, ens3 na enp1s0. Thibitisha kwa ethtool -k $NETDEV | grep udp-gro-forwarding, ambayo sasa inapaswa kusoma on.

Mpangilio huu hupotea wakati wa reboot. Kwenye mfumo unaotumia networkd-dispatcher, ifanye iwe ya kiotomatiki:

printf '#!/bin/sh\n\nethtool -K %s rx-udp-gro-forwarding on rx-gro-list off \n' "$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")" | sudo tee /etc/networkd-dispatcher/routable.d/50-tailscale
sudo chmod 755 /etc/networkd-dispatcher/routable.d/50-tailscale

Hakikisha kuwa /etc/networkd-dispatcher/routable.d/ ipo kwanza. Ikiwa haipo, mashine haitumii networkd-dispatcher, na systemd unit ndogo inayotekeleza mstari wa ethtool wakati wa boot itafanya kazi hiyo hiyo.

Maana ya sera ya matumizi yanayokubalika ya mtoa huduma wako kwa trafiki ya kutoka (exit traffic)

Kila pakiti (packet) ambayo mteja anaituma kupitia nodi ya kutoka (exit node) huondoka ikiwa na anwani ya IP ya umma ya VPS, kwa hivyo inahusishwa na akaunti yako. Ripoti za matumizi mabaya hufika kwenye kikasha chako: notisi za hakimiliki, malalamiko ya uchunguzi wa bandari (port scan). Soma sera ya matumizi yanayokubalika (AUP - acceptable use policy) ya mtoa huduma wako kabla ya kuelekeza trafiki ya kaya au timu kupitia seva moja, na usifungue nodi ya kutoka kwa watu ambao huwezi kuwadhamini.

Bandwidth huhesabiwa mara mbili. Trafiki hufika kwenye VPS kupitia handaki (tunnel) na kisha kuondoka tena kuelekea kwenye Internet, na pande zote mbili kwa kawaida huhesabiwa dhidi ya posho ya uhamisho (transfer allowance) iliyo kwenye mpango wako. Mtiririko wa video (video stream) unaotazamwa kupitia nodi ya kutoka ni kitu kikubwa zaidi kuliko watu wengi wanavyotarajia.

Masafa ya anwani za kituo cha data (datacenter) pia hubeba sifa fulani. Tovuti zingine huonyesha CAPTCHA nyingi zaidi kwa anwani hizo, na huduma zingine za utiririshaji (streaming services) huzikataa moja kwa moja. Hakuna kitu katika usanidi wako kinachobadilisha hilo, kwa sababu ni sifa ya kizuizi cha anwani (address block) ambacho mtoa huduma wako anamiliki.

Kwa nini trafiki bado inapita kupitia muunganisho wako wa ndani

Exit node imetangazwa lakini haijaidhinishwa. tailscale exit-node list kwenye mteja haitoi matokeo yoyote, na hakuna mashine inayorekodi hitilafu kwenye logi. Nenda kwenye ukurasa wa Machines na uwashe Use as exit node.

Mteja haijachagua. Uidhinishaji hufanya node ipatikane kwenye tailnet. Uteuzi ni hatua tofauti kwenye kila kifaa. Endesha tena sudo tailscale set --exit-node=<name>, kisha uangalie curl -4 https://ifconfig.me tena.

Forwarding imezimwa. Dalili ni mahususi: tailscale ping <vps> inafanikiwa, tunnel iko wazi, na kila anwani ya nje inashindwa kuunganishwa (times out). sysctl net.ipv4.ip_forward inasoma 0. Rekebisha faili ya sysctl, kisha endesha sudo sysctl -p /etc/sysctl.d/99-tailscale.conf.

Firewall inakataa pakiti zilizoelekezwa (forwarded packets). tailscaled huingiza mnyororo wake wa ts-forward, na kwenye VPS safi hiyo inatosha. Seva inayotumia ufw au Docker inaweza kuishia na sera ya FORWARD ya DROP na sheria zilizopangwa mbele ya zile za Tailscale. Usikisie ni ipi: endesha sudo iptables -L FORWARD -n -v wakati mteja anajaribu kupakia ukurasa, na uangalie ni kaunta zipi zinazoongezeka. Kwenye seva ya ufw, suluhisho la kawaida ni DEFAULT_FORWARD_POLICY="ACCEPT" katika /etc/default/ufw ikifuatiwa na sudo ufw reload. Angalia pia firewall ya mtandao ya mtoa huduma wako kwenye control panel, kwani hiyo ni udhibiti tofauti na chochote kinachoendeshwa kwenye seva.

Inafanya kazi, lakini ni polepole. Endesha tailscale netcheck kwenye mashine zote mbili. Ikiwa inaripoti UDP imefungwa, vifaa hivyo viwili haviwezi kujenga njia ya moja kwa moja na vinatumia DERP relay, jambo linaloongeza latency kwenye kila muunganisho. Kuruhusu trafiki ya ndani ya UDP kwenye port 41641 kuelekea VPS katika firewall ya mtandao ya mtoa huduma wako kwa kawaida hurejesha njia ya moja kwa moja.

Wakati wa kuacha seva ya uratibu ya Tailscale

Kila kitu hapo juu kinategemea seva ya uratibu inayomilikiwa na Tailscale kwa ajili ya kubadilishana funguo na kwa ajili ya idhini uliyobofya. Trafiki yako bado inapita moja kwa moja kutoka kwenye laptop kwenda kwenye VPS, na seva ya uratibu haibebi trafiki hiyo kamwe, ingawa ndiyo huamua nani anaweza kujiunga na tailnet na nini kila kifaa kinaweza kufikia. Ikiwa utegemezi huo ndio kitu unachotaka kukiondoa, endesha Headscale kama seva yako mwenyewe ya udhibiti wa Tailscale na uelekeze wateja wote wawili kwake. Hatua za exit node ni zilezile baadaye, huku idhini ya njia ikifanyika kupitia mstari wa amri wa Headscale badala ya konsole inayomilikiwa na Tailscale. Headscale hubadilisha ndege ya udhibiti (control plane) lakini inakuacha uendelee kutumia wateja wa Tailscale, kwa hivyo ikiwa ungependa kuendesha mfumo mzima wewe mwenyewe, NetBird inatoa seva yake ya uratibu na wateja unaoweza kuwahifadhi kwenye VPS moja.

FAQ

Kwa nini trafiki yangu bado inatumia muunganisho wa ndani baada ya kuchagua exit node?

Kuna sababu mbili kuu. Exit node ilitangazwa lakini haikuidhinishwa: fungua ukurasa wa Machines kwenye admin console, tafuta VPS hiyo, chagua Edit route settings, na uwashe Use as exit node. Uidhinishaji ni swichi ya kwenye console, na hakuna amri kwenye seva inayoweza kuifanya. Sababu ya pili inaonekana tofauti: IP forwarding imezimwa, kwa hivyo tunnel inafunguka, tailscale ping kwenda kwenye VPS inafanya kazi, na kila anwani ya nje inagoma (times out). Hakiki kwa kutumia sysctl net.ipv4.ip_forward, ambayo lazima isome 1.

Je, lazima niidhinishe exit node kwa mkono kila wakati?

Swichi hiyo ni hatua ya mara moja kwa kila mashine. Ikiwa unajenga upya VPS mara kwa mara, ongeza block ya autoApprovers kwenye faili yako ya sera ya tailnet iliyo na "exitNode": ["tag:exit"], fafanua tag:exit chini ya tagOwners, na uwashe node kwa kutumia --advertise-tags=tag:exit. Kifaa kilichowekewa tag kinamilikiwa na tailnet badala ya akaunti yako ya mtumiaji, kwa hivyo sheria za ufikiaji zinazokihusu zinabadilika pia.

Ni DNS server ipi ambayo laptop yangu inatumia wakati exit node imewashwa?

Exit node yenyewe. Kifaa kinachotumia exit node hutuma maombi yote ya DNS huko, na hilo hupuuza nameservers za kimataifa na zilizogawanywa (split DNS) zilizowekwa kwa ajili ya tailnet. Hii huzuia mtandao wa ndani kuona majina unayotafuta. Ili kuweka nameserver moja ya tailnet iendelee kufanya kazi, iwashe kwa kuchagua Use with exit node kwenye ukurasa wa DNS wa admin console. Majina ya MagicDNS bado yanatatuliwa, kwa sababu mteja wa Tailscale anayajibu ndani ya kifaa kwenye 100.100.100.100.

Je, VPS moja inaweza kuwa exit node na subnet router kwa wakati mmoja?

Ndiyo. sudo tailscale set --advertise-exit-node na sudo tailscale set --advertise-routes=10.0.0.0/24 ni huru, na kila moja hupata swichi yake ya uidhinishaji chini ya Edit route settings. Zote zinahitaji IP forwarding iwe imewashwa kwenye VPS. Epuka kutangaza masafa (range) yanayolingana na mtandao wa nyumbani wa laptop yako, kwa sababu route iliyotangazwa ina kipaumbele zaidi kuliko default route na vifaa vyako vya ndani vitashindwa kufikika.

Je, exit node huficha trafiki yangu kutoka kwa mtoa huduma wa VPS wangu?

Hapana. Tunnel huishia kwenye VPS, kwa hivyo trafiki huondoka kwenye seva katika hali yoyote ile ambayo lengo (destination) linatarajia, na mtoa huduma wako huibeba ikiwa wazi (in the clear) popote ambapo tovuti yenyewe haijasimbwa kwa njia fiche. Exit node huhamisha sehemu ambapo trafiki yako huingia kwenye Internet, kutoka kwenye mtandao uliopo hadi kwenye seva unayokodisha. Huficha kuvinjari kwako kutoka kwa Wi-Fi ya mkahawa na kutoka kwa ISP wa nyumbani kwako, na huonyesha kuvinjari huko huko kwa mtoa huduma wa VPS wako kukiwa na jina la akaunti yako.