miller-robin

This commit is contained in:
Rorik Star Platinum 2025-12-12 21:49:18 +03:00
parent eda99760f3
commit 48f640b55d
10 changed files with 1291 additions and 1 deletions

View file

@ -0,0 +1,9 @@
sudo rm /swapfile
sudo touch /swapfile
sudo chattr +C /swapfile
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show
free -h

View file

@ -0,0 +1,113 @@
Да, именно так! Вы абсолютно правы. Вся "магия" держится на сервере-посреднике, без него схема просто не сработает.
Однако, тут есть один нюанс: роль этого сервера меняется в зависимости от того, насколько удачно удалось "обмануть" систему.
У сервера-посредника есть две принципиально разные функции:
### 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
```