hyperion/10-linux/networking/README.md
2025-12-12 21:49:18 +03:00

113 lines
No EOL
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Да, именно так! Вы абсолютно правы. Вся "магия" держится на сервере-посреднике, без него схема просто не сработает.
Однако, тут есть один нюанс: роль этого сервера меняется в зависимости от того, насколько удачно удалось "обмануть" систему.
У сервера-посредника есть две принципиально разные функции:
### 1. Роль "Свахи" (Брокер) — Работает всегда
Это основная и обязательная функция сервера.
* **Что делает:** Знакомит компьютеры друг с другом. Когда вы нажимаете "Включить" в Hamachi/Radmin, ваш компьютер стучится на центральный сервер и говорит: "Привет, я в сети, мой адрес такой-то". То же самое делает ваш друг.
* **Зачем нужен:** Ваши компьютеры сами по себе слепы. Они не знают IP-адреса друг друга и закрыты NAT-ом (роутером). Сервер-посредник сообщает им адреса друг друга и командует: "А теперь попробуйте соединиться напрямую!".
* **Итог:** Если всё прошло хорошо (UDP Hole Punching сработал), сервер отходит в сторону. Трафик идет напрямую от вас к другу. **Это идеальный сценарий.**
### 2. Роль "Переводчика" (Ретранслятор / Relay) — Работает, когда всё плохо
Это запасной вариант, если "пробить стены" (NAT) напрямую не удалось.
* **Что делает:** Если ваши роутеры слишком строгие (например, симметричный NAT или корпоративная сеть) и прямая связь невозможна, сервер начинает работать как труба. Весь ваш игровой трафик летит сначала на сервер Hamachi/Radmin, а оттуда — к другу.
* **Почему это плохо:**
* **Огромный пинг:** Сигнал делает крюк через дата-центр компании.
* **Медленная скорость:** Пропускная способность канала сервера ограничена.
* **Как это увидеть:**
* **В Hamachi:** Возле имени друга горит **синий кружок** (Relayed tunnel). Это значит, что вы идете через сервер. Если кружок **зеленый** — связь прямая (P2P).
* **В Radmin VPN:** Если связь идет через сервер, тип соединения обычно отображается как **Relay/TCP**.
### Резюме
Сервер-посредник есть **всегда** для координации (чтобы найти друг друга). Но для передачи самих данных (игры, файлов) программы стараются его избегать, создавая прямой туннель. Если вы играете с комфортным пингом — значит, сервер только "познакомил" вас и ушел. Если пинг высокий — вы гоняете данные через него.
[1](https://support.goto.com/hamachi/help/what-do-the-different-color-indicators-mean-in-logmein-hamachi-hamachi-c-hamachi-client-colors)
[2](https://help.rt-ms.com/portal/en/kb/articles/vpn-color-indicators)
[3](https://www.reddit.com/r/logmein/comments/ls247y/relayed_tunnel_issue_hamachi/)
[4](http://logmeinwiki.com/wiki/Hamachi:Indicators)
[5](https://forum.nhl94.com/index.php?%2Ftopic%2F18378-hamachi-relayed-connection%2F)
[6](https://radmin-club.com/radmin-vpn/relay-connection-vs-direct-connection/)
[7](https://dzen.ru/a/Z8wkcG12XFn0UX3o)
[8](https://support.goto.com/hamachi/help/que-significan-los-diferentes-indicadores-de-color-de-logmein-hamachi-hamachi-c-hamachi-client-colors)
[9](https://freevpnmentor.com/radmin-vpn-review-is-it-safe/)
[10](https://hamachi-pc.ru/instructions/ispravlyaem-tunnel-cherez-retranslyator-v-hamachi.html)
[11](https://retailedge.com/phpBB/viewtopic.php?t=3338)
[12](https://www.radmin-vpn.com/help/)
[13](https://coop-land.ru/forum/showtopic/73245-hamachi-tunnel-cherez-retranslyator/)
[14](https://www.youtube.com/watch?v=wiyj4WTZpWQ)
[15](https://helpdesk.radmin.com/kb/faq.php?id=275)
[16](https://www.youtube.com/watch?v=jQt4V9Y8kwo)
[17](https://steamcommunity.com/sharedfiles/filedetails/?id=2095729239)
[18](https://www.reddit.com/r/stronghold/comments/1hrs0iz/not_able_to_join_a_friend_using_radmin_vpn_not/)
[19](https://otvet.mail.ru/question/219881145)
[20](https://projectcrusade.forumotion.com/t4162-a-crusade-hamachi-online-play-guide-with-extras)
Чтобы создать видимость того, что компьютеры находятся в одной комнате (в локальной сети), хотя на самом деле их разделяют тысячи километров, Radmin VPN и Hamachi используют технологию виртуализации сети.
Весь процесс можно разделить на три ключевых этапа: обман операционной системы, упаковка данных в «конверт» и пробивание стен (NAT).
### 1. Виртуальный сетевой адаптер (Обман системы)
Когда вы устанавливаете Radmin VPN или Hamachi, они инсталлируют в Windows специальный драйвер — **виртуальный сетевой адаптер**.[1]
* **Как это видит Windows:** Система считает, что вы вставили в компьютер еще одну реальную сетевую карту и подключили к ней кабель.
* **Что происходит на самом деле:** Этот «кабель» никуда не ведет. Это программная эмуляция. Когда игра или программа пытается отправить данные в «локальную сеть» (например, найти сервер Minecraft), она отправляет их на этот виртуальный адаптер.
* **Присвоение адреса:** Программа выдает этому виртуальному адаптеру специальный IP-адрес (обычно в диапазоне 25.x.x.x или 26.x.x.x), который отличается от вашего реального интернет-адреса.[1]
### 2. Туннелирование (Упаковка в конверт)
Когда данные попадают на виртуальный адаптер, программа (Radmin/Hamachi) перехватывает их.
1. **Захват:** Игра отправляет пакет данных «Привет, я игрок А» на адрес 26.15.20.1 (адрес друга).
2. **Шифрование и инкапсуляция:** Программа берет этот пакет и шифрует его. Затем она кладет его внутрь обычного интернет-пакета (протокола UDP или TCP).[2][3]
* *Аналогия:* Вы берете письмо, адресованное «В соседнюю комнату», кладете его в большой почтовый конверт, пишете на нем реальный почтовый адрес друга в другом городе и отправляете по обычной почте.
3. **Передача:** Этот пакет летит через обычный интернет, проходя через провайдеров, как обычный трафик (просмотр YouTube или скачивание файлов).
4. **Распаковка:** Компьютер друга получает пакет. Программа Radmin/Hamachi на его стороне вскрывает «внешний конверт», расшифровывает данные и передает их своему виртуальному адаптеру.
5. **Результат:** Windows друга видит входящий пакет от «игрока А» через виртуальный кабель и думает, что друг сидит рядом.
### 3. UDP Hole Punching (Пробивание стен)
Самая сложная часть магии — как соединить два компьютера напрямую, если у обоих, скорее всего, есть роутеры и нет «белого» IP-адреса. Для этого используется технология **UDP Hole Punching**.[4][5]
* **Проблема:** Ваш роутер (NAT) по умолчанию блокирует все входящие соединения извне, если вы сами их не запросили. Если друг просто попытается отправить вам пакет, роутер его отбросит.
* **Решение:**
1. Оба компьютера сначала связываются с центральным сервером Radmin или Hamachi (сервер-посредник).[6][2]
2. Сервер сообщает им реальные IP-адреса друг друга.
3. Компьютеры начинают одновременно «бомбардировать» друг друга пустыми пакетами.
4. Когда ваш компьютер отправляет пакет другу, ваш роутер открывает «дырку» (запись в таблице NAT) для ответа. В этот же момент друг делает то же самое.
5. В какой-то момент пакеты проскакивают в открытые навстречу друг другу «дырки», и устанавливается прямое соединение (P2P).[7][6]
Если пробиться напрямую не удается (из-за строгого корпоративного фаервола), трафик идет через сервер-ретранслятор (Relay), что вызывает высокие задержки (пинг) в играх.[6]
### Итог: почему пространство изолированное?
«Изолированность» обеспечивается тем, что:
1. Виртуальные адаптеры имеют свои IP-адреса, которые не маршрутизируются в обычном интернете.[3]
2. Весь трафик между участниками шифруется (обычно AES-256), поэтому провайдер видит только поток случайных данных, но не видит, что внутри (файлы, игра, чат).[8][3]
Таким образом, создается **VPN (Virtual Private Network)** — защищенный туннель внутри незащищенной сети Интернет.
[1](https://www.white-windows.ru/sozdanie-virtualnoj-lokalnoj-seti-po-internetu-s-pomoshhyu-besplatnoj-programmy-radmin-vpn/)
[2](https://otvet.mail.ru/question/78812594)
[3](https://www.datahata.by/info/articles/virtualnaya-chastnaya-set-chto-eto-takoe.html)
[4](https://gmnet-engine.org/manual/punch/about/aboutpunching)
[5](https://www.infosecinstitute.com/resources/hacking/udp-hole-punching/)
[6](https://hobbycomp.ru/internet/hamachi-vsyo-o-programme/)
[7](https://www.dinhphu28.com/blog/2024/udp-hole-punching/)
[8](https://habr.com/ru/articles/534250/)
[9](https://qna.habr.com/q/900405)
[10](https://habr.com/ru/companies/ru_mts/articles/745996/)
[11](https://ru.wikipedia.org/wiki/LogMeIn_Hamachi)
[12](https://www.reddit.com/r/Terraria/comments/hrs2w/what_is_hamachi_and_how_does_it_work/?tl=ru)
[13](https://www.qsfptek.com/ru/qt-news/vpn-router-what-is-it.html)
[14](https://www.radmin-vpn.com/ru/help/)
[15](https://www.youtube.com/watch?v=9ImqBCt47JM)
[16](https://otvet.mail.ru/question/240481604)
[17](https://www.reddit.com/r/Terraria/comments/hrs2w/what_is_hamachi_and_how_does_it_work/)
[18](https://docs.usergate.com/vpn-dlya-udalennogo-dostupa-klientov-(remote-access-vpn)_925.html)
[19](https://www.youtube.com/watch?v=Hh_fG6ze5Aw)
[20](https://dev.to/dev-dhanushkumar/nat-traversal-a-visual-guide-to-udp-hole-punching-1936)
$a^{n-1} \equiv 1 \pmod n$
эквивалентно вот этому
```rust
a.pow(n-1) % n == 1
```