Tailscale

простою мовою, без припущень про ваш досвід

Tailscale тихо збирає ваші власні пристрої – ноутбук, телефон, комп’ютер, що стоїть удома – в одну невелику приватну мережу, яка мандрує з ними будь-куди світом, тож вони дістаються одне до одного так, ніби всі під’єднані до одного домашнього роутера: нічого не відкрито для чужих і не треба тримати власного сервера.

Tailscale бере комп’ютери, які вам належать, і зшиває їх у невелику власну приватну мережу – ваш ноутбук, ваш телефон, машину, що гуде собі вдома, – так, щоб кожен з них міг дотягнутися до інших напряму, хоч би де у світі він зараз стояв. Не «через інтернет» у тому сенсі, у якому ви відкриваєте сайт. Вони поводяться так, ніби хтось тихо простягнув між ними кабель або під’єднав їх усіх до одного домашнього роутера. Ця маленька мережа мандрує разом із ними.

Ви одного разу встановлюєте його на кожен пристрій, входите під обліковим записом, який у вас і так є, – і відтоді ті машини знаходять одна одну з кав’ярні, з готелю, з іншої країни, наче вони ніколи й не покидали спільної кімнати.

А те, що робить це не просто зручним, а справді вартим уваги, – це те, чого вам робити не доведеться. Не доведеться робити свій дім досяжним для чужих. Не доведеться орендувати, налаштовувати й доглядати сервер. Ви щось встановлюєте – і відстань перестає щось важити.

Ви вже знаєте, як це відчувається

Згадайте, як воно вдома. Телефон кидає відео на телевізор. Ноутбук знаходить принтер, а ви ж ніколи не казали йому, де той принтер живе. Планшет на дивані витягує файл із настільного комп’ютера, що стоїть поверхом вище.

Нічого магічного тут немає, і ви, найпевніше, ніколи над цим і не замислювалися. Ті пристрої знайшли одне одного, бо всі вони в одному маленькому світі – у вашому домашньому Wi-Fi, – а в тому світику кожен бачить кожного. Це одна кімната, і вони всі в ній.

А тепер візьміть ноутбук, вийдіть за поріг і сядьте в кав’ярні. Кімнати більше немає. Принтера наче й не існує. Комп’ютер поверхом вище, до якого десять хвилин тому можна було дотягнутися, зник із лиця землі.

Ось саме це Tailscale вам і повертає. Кімната йде з вами.

Чому вихід за поріг усе ламає

Ось причина, і її варто мати при собі як слід, бо обхідний шлях тут по-справжньому дотепний.

Усе у вашій оселі виходить в інтернет через роутер – ту коробочку, яку дав вам інтернет-провайдер. Роутер працює десь так само, як стійка консьєржа у багатоквартирному будинку. Увесь будинок має одну публічну адресу на вулиці. А окремі квартири всередині взагалі не мають адреси, яку бачив би зовнішній світ. Пошта легко виходить назовні. Але перехожий з вулиці не може надіслати листа до квартири 44, бо, з погляду вулиці, квартири 44 не існує.

Ваш домашній комп’ютер і є та квартира 44. Він може дотягнутися до чого завгодно в інтернеті. Інтернет не може дотягнутися всередину, до нього.

І зверніть увагу: це не вада. Та консьєржка стійка – чи не головна причина, чому випадкові незнайомці вже зараз не штурхають ваші пристрої. Прибирати її вам би не хотілося.

Старі способи це обійти – і чому обидва неприємні

Роками відповідей було дві, і ви, можливо, чули, як люди похмуро бурмочуть про кожну з них.

Перша – прокидання портів: зайти в налаштування роутера й сказати консьєржу: «усе, що приходить і питає двері номер 22, відправляй до машини в кутку». Це працює. Це також означає, що ви щойно прорізали у своїй домашній мережі справжній постійний отвір, у який може постукати будь-хто з інтернету, – а інтернет повниться автоматичними програмами, чиє єдине заняття в житті – стукати в усі двері всіх будинків, цілими днями, вічно.

Друга – тримати власний VPN-сервер: орендувати десь публічний комп’ютер, стати тією людиною, яка відповідає за те, щоб він лишався налаштованим, оновленим і захищеним, і пускати свої машини через нього. Це теж працює, це справжня навичка – і це морока, яка не закінчується ніколи.

Уся привабливість Tailscale в тому, що це ні перше, ні друге. Жодного отвору не пробито, і жодної вашої машини посередині, яку треба доглядати, немає.

Загадка – і гарна відповідь на неї

Тож посидьмо хвильку із цією складністю, бо вихід із неї і є вся ідея.

Ваш ноутбук у кав’ярні – за консьєржем кав’ярні. Ваш домашній комп’ютер – за вашим. Жодному з них не можна подзвонити. Обидва можуть подзвонити самі.

Як двоє людей, які вміють лише дзвонити і ніколи не можуть прийняти дзвінок, узагалі можуть колись поговорити?

Обоє телефонують спільному знайомому.

Оце й усе. Кожна машина сама, з власної ініціативи, дзвонить невеликій службі, яку тримає Tailscale, і каже: «я тут, ось де я зараз стою». Служба переказує кожній машині, де саме зараз стоїть інша. А тоді обидві машини приблизно в один і той самий момент дзвонять назустріч одна одній.

Обидва дзвінки – вихідні. Жоден консьєрж у світі не має нічого проти вихідного дзвінка. Дві лінії зустрічаються посередині, і виникає з’єднання, якого жоден із будинків не пустив би до себе як гостя ззовні. Ніхто не відчиняв дверей чужому. Усі двері відчинили зсередини.

А спільний знайомий, познайомивши їх, зовсім виходить із розмови. Відтоді ваші дві машини говорять напряму одна з одною, і посередині не проходить нічого.

Як цей прийом називають – і що буває, коли він не спрацьовує

Тепер, коли ви побачили це на власні очі, назви даються легко. Те, як дві машини зустрічаються посередині, називають обходом NAT (NAT traversal), а мить, коли обидві дзвонять назустріч водночас, часто звуть пробиванням отвору (hole punching): отвір справді пробивається крізь обидві стійки консьєржа – зсередини, – і в нього пролізають тільки ці двоє.

Подеколи це не вдається. Деякі мережі – корпоративні офіси, окремі готелі, декотрі мобільні оператори – закручені так туго, що два дзвінки не можуть зустрітися. Саме на цей випадок Tailscale тримає по світу флот серверів-ретрансляторів, які називаються DERP, і ваш трафік тихо переходить на відбивання від найближчого з них. Це трохи повільніше, і ви це навряд чи помітите.

Ретранслятор не може прочитати те, що несе. Словами самої Tailscale: «у DERP-сервера немає жодного способу розшифрувати ваш трафік. Він просто наосліп пересилає вже зашифрований трафік від одного вузла до іншого». Це поштова скринька, а не читач.

Що ви врешті отримуєте: tailnet

У вашої власної мережки є назва: її називають tailnet. Вона ваша, і в ній ваші машини.

Кожен пристрій у ній отримує власну адресу – число, що починається на 100., на кшталт 100.101.102.103, – і, на відміну від адрес, які роздають ваша кав’ярня та ваш дім, ця адреса належить саме тій машині й не змінюється. У вашого ноутбука в Києві та сама адреса, що й у вас на кухні.

Ба більше, чисел вам запам’ятовувати не доведеться. Tailscale дає кожній машині просте ім’я – те, яким ви її назвали, – і робить так, щоб це ім’я працювало. Якщо ваша домашня машина зветься workhorse, то workhorse – це просто щось, до чого ваш ноутбук може дотягнутися, звідки завгодно, завжди. (Ця можливість має приємно несоромливу назву – MagicDNS.)

Якщо на машині встановлено й запущено Tailscale, є цілком нешкідлива команда, яка показує всю картину. Вона нічого не змінює, нічого не надсилає й просто друкує те, що є:

tailscale status

Ви отримаєте по рядку на кожну машину у вашому tailnet: її адресу на 100., її ім’я, під якою операційною системою вона працює і чи говорите ви з нею зараз напряму, чи через ретранслятор. Це і є ваша приватна мережа, виписана в стовпчик, – та сама кімната, яку ви носите із собою.

Де це стоїть поруч з усім іншим

Сам собою Tailscale нічого з тими машинами не робить. Він будує дорогу. А що ви тією дорогою відправите – то вже ваша справа.

Здебільшого нею відправляють SSH – спосіб сісти за далекий комп’ютер і набирати на ньому команди так, ніби ви перед ним. Ці двоє припасовані одне до одного так природно, що майже зливаються в одну думку: Tailscale робить машину досяжною, а SSH дає вам на ній працювати. Щойно ваша домашня машина має ім’я, з’єднання з нею виглядає точно так само, як з’єднання з чим завгодно іншим:

ssh you@workhorse

Жодної адреси шукати не треба, жодного порту відкривати не треба – і жодної різниці між тим, щоб зробити це з сусідньої кімнати чи з іншого континенту.

Саме такий вигляд має схема з ноутбука, який не спить: машина вдома із закритою кришкою й згаслим екраном, яка все одно працює і до якої господар дістається через Tailscale – і, як він каже, «більше ніхто».

Під сподом: WireGuard

Для допитливих: що насправді несе ваші дані

Зашифрований тунель Tailscale не вигадував. Він збудований на WireGuard – роботі Джейсона Доненфельда, яка стала сучасною відповіддю на цю задачу, і то настільки шанованою, що тепер живе просто всередині операційної системи Linux.

Уся її репутація тримається на тому, що вона маленька. Старші інструменти для цієї роботи були велетенськими заплутаними спорудами, які жодна окрема людина не могла як слід перевірити на помилки; WireGuard навмисно зробили таким, щоб він, його ж словами, «піддавався вичерпному перегляду однією людиною». У безпеці «достатньо мале, щоб бути зрозумілим до кінця» – це не скромна чеснота. Це головна.

Отже, шари, згори вниз: WireGuard – це запечатаний тунель між двома машинами. Tailscale – це все те навколо нього, що інакше довелося б робити руками: знайомити ваші пристрої між собою, пробиватися крізь стійки консьєржів, роздавати імена й адреси і дбати, щоб усе це працювало, поки ваші машини блукають світом.

«Стривайте – а сама Tailscale може читати мої речі?»

Правильне питання, і відповідь на нього справді заспокійлива – причому через те, як влаштовані частини, а не через чиюсь обіцянку.

Коли Tailscale запускається на машині, та машина створює собі пару ключів: публічний, який роздає всім охочим, і приватний, яким відмикає надіслане їй. Публічні ключі йдуть до координаційної служби Tailscale, яку сама компанія описує як «спільну скриньку для публічних ключів». Приватний ключ лишається на місці. Їхніми словами: «приватний ключ ніколи, зовсім ніколи не покидає свого вузла».

А це означає, що координаційна служба – знайомитель, і не більше. Вона знає, що ваші машини існують і приблизно де в інтернеті вони перебувають, щоб могти показати їх одна одній. Вона не несе вашого трафіку і не має при собі нічого, чим той трафік можна відімкнути. Єдині дві речі на світі, здатні прочитати те, що йде між вашим ноутбуком і вашою домашньою машиною, – це ваш ноутбук і ваша домашня машина.

Для особистого користування є безкоштовний рівень – шестеро людей і до сотні пристроїв, – чого людині, яка налаштовує це для себе й кількох власних машин, не вичерпати ніколи.

Отже, одним подихом

Tailscale збирає ваші власні пристрої в невелику власну приватну мережу й носить цю мережу за ними, куди б вони не поїхали. Кожна машина тягнеться назовні з-за власної стіни, служба-знайомитель підказує їм, де шукати одна одну, і вони зустрічаються посередині – тож нічого й ніколи не лишається відкритим для чужих, і посередині немає вашого сервера, який треба тримати живим. А лишається просте й корисне відчуття, що всі ваші комп’ютери в одній кімнаті, у яких би країнах вони насправді не були.