Бүртгэлгүй, IP хаяггүй, Root эрхгүйгээр NAT нэвтлэх нь: Tailscale бүрэн нээлттэй "Tailcat" хэрэгслээ танилцууллаа
Хөгжүүлэгчид өөр сүлжээнд, галт хана (firewall) эсвэл хатуу NAT-ийн цаана байгаа хоёр серверийг холбох гэж олон цаг порт нээх (port forwarding), статик IP тохируулах эсвэл ngrok, VPN зэрэг үйлчилгээ ашигладаг.
Тэгвэл Go хэлний гол хөгжүүлэгчдийн нэг, Memcached-ийг үндэслэгч Брэд Фицпатрик (Brad Fitzpatrick) тэргүүтэй Tailscale багийнхан хөгжүүлэгчдийн дунд "Tailscale without Tailscale" хэмээн нэрлэгдэж буй цоо шинэ нээлттэй эхийн хэрэгсэл болох Tailcat-ийг албан ёсоор танилцууллаа.
Энэхүү хэрэгсэл нь сонгодог сүлжээний netcat команд шиг ажилладаг боловч Tailscale-ийн өгөгдөл дамжуулах бүх хүчирхэг шийдлийг өөртөө агуулснаараа онцлог юм.
Tailcat гэж юу вэ?
Tailcat бол Tailscale-ийн сүлжээний цөм архитектурыг тусад нь салгаж авсан CLI хэрэгсэл болон Go сан (library) юм.
Уламжлалт Tailscale ашиглахад хэрэглэгч бүртгүүлж, tailnet сүлжээ үүсгэн, компаниас удирддаг төвлөрсөн серверээр (control plane) дамжин холбогддог. Харин Tailcat нь удирдлагын ямар ч төв серверийг ашигладаггүй. Танд Tailscale-ийн бүртгэл, эсвэл компаниас хараат дэд бүтэц шаардагдахгүй.
Үүний оронд хоёр төхөөрөмж зүгээр л токен солилцох замаар бие биетэйгээ шууд эцсээс эцсэнд (end-to-end) шифрлэгдсэн WireGuard сувгаар холбогдоно.
# Сервер талд: түр зуурын хаяг үүсгэнэ
$ tailcat
# Server listening with address: tcomFwWCCcjS5nKNq...
# Клиент талд: тухайн токеноор холбогдоно
$ tailcat tcomFwWCCcjS5nKNq...
Архитектурын гол шийдлүүд
Tailcat хэрхэн ийм хялбар хэрнээ найдвартай ажиллаж байна вэ?
1. Root эрх, TUN/TAP төхөөрөмж шаардахгүй (Userspace Network)
Ихэнх VPN болон WireGuard тохиргоонууд үйлдлийн системийн цөмд (kernel) шинэ сүлжээний интерфэйс үүсгэж, sudo / root эрх шаардан, чиглүүлэлтийн хүснэгт (routing table) болон DNS-ийг өөрчилдөг.
Tailcat нь үүний оронд WireGuard-ийн userspace хувилбар болон Google-ийн нээлттэй эхийн gVisor Netstack-ийг ашигладаг. Энэ нь бүх TCP/IP стек тухайн процессын санах ой дотор ажиллана гэсэн үг тул та системийн тохиргоог огт эвдэхгүйгээр энгийн хэрэглэгчийн эрхээр ажиллуулах боломжтой.
2. Magicsock ба NAT Traversal
Tailscale-ийн хамгийн алдартай технологи болох magicsock энд ажиллана. STUN болон UDP hole punching арга ашиглан хоёр тал ямар ч галт ханын ард байсан хоорондоо шууд P2P (Peer-to-Peer) холболт тогтооно.
Хэрэв шууд UDP холболт үүсэх боломжгүй (хатуу корпорацийн firewall) нөхцөлд DERP релей серверээр дамжин холбогдох ба энэ тохиолдолд ч бүх өгөгдөл төгсгөл хооронд WireGuard түлхүүрээр шифрлэгдсэн хэвээр үлдэнэ. Та хүсвэл өөрийн хувийн DERP серверийг ч ашиглаж болно.
3. IP хаягаас ангид холболт
Холбогдохын тулд IP хаяг эсвэл домэйн нэр мэдэх шаардлагагүй. Үүсгэсэн богино токен нь өөрөө криптограф түлхүүр болон эхлэлийн зангилааг агуулдаг тул сүлжээ солигдсон ч холболт автоматаар сэргэнэ.
Хөгжүүлэгчид хэрхэн ашиглаж болох вэ?
Tailcat-ийг зөвхөн терминалын CLI төдийгүй Go төслүүддээ импортлон сан (library) хэлбэрээр ашиглаж болно.
- Тусгаарлагдсан орчноос SSH хийх: Корпорацийн дотоод сервэрт нийтийн IP өгөхгүйгээр шууд SSH session үүсгэх.
- Файл болон өгөгдлийн урсгал (pipe) дамжуулах:
mysqldump ... | tailcatкомандыг нөгөө талын сервертtailcat <token> | mysql ...гэж удирдах. - Микросервис болон тестийн төхөөрөмжүүдийг холбох: Дотоод сүлжээний төхөөрөмжүүд, IoT төхөөрөмж эсвэл тоглоомын серверүүдийг (жишээ нь Minecraft серверийг төвөгтэй порт нээлтгүйгээр) нүд ирмэхийн зуур холбох.
Суулгах заавар
Go хэлний хэрэгслээр шууд суулгах боломжтой:
go install github.com/tailscale/tailcat/cmd/tailcat@latest
Эсвэл Nix ашигладаг бол:
nix run github:tailscale/tailcat
Сүлжээний нарийн төвөгтэй тохиргоог хялбарчилж, ямар нэгэн үүлэн платформын хараат байдлыг халсан Tailcat нь P2P сүлжээ болон системийн хөгжүүлэлтэд шинэ стандартыг тогтоож байна.
Эх сурвалж: Tailscale GitHub (tailscale/tailcat), Brad Fitzpatrick (Bluesky), Hacker News
Сэтгэгдэл
Ачаалж байна...