37 lines
4.4 KiB
Markdown
37 lines
4.4 KiB
Markdown
UTUN
|
|
|
|
Идея: объединить узлы в единую локальную сеть.
|
|
Чтобы узлы сами находили оптимальные линки между собой, пробивали NAT где это можно, где нельзя - выбирали посредника с хорошей связью; чтобы подсто было добавлять новые узлы и адреса узлов сразу виделись во всей сети.
|
|
|
|
Похож на libp2p но трафик превращает в случайную последовательность кторую сложно классифицировать
|
|
|
|
Потенциальные варианты использования:
|
|
- локальная сеть. хочу объединить офис, сотрудников (включая их работчие подсети), телефоны, офисы, сервер доступа итд в одно адресное пространство.
|
|
- чат с файлообменником. узлы сети - это мемберы группы и одновременно сети.
|
|
- CDN. узлы - потребители контента - это мемберы сети, которые распространяют трафик.
|
|
|
|
То есть задача utun - обеспечить связность группы узлов и адаптацию работы всей сети к подключению-отключении отдельных узлов.
|
|
|
|
Механизмы:
|
|
1. Пробитие nat.
|
|
2. автообновление списка узлов и их адресов для подключения
|
|
3. шифрование трафика и маскировка handshake.
|
|
handshake просиходит без сигнатур по которым можно опреедлить тип сервиса, весь трафик выглядлит как случайный набор байт случайного размера
|
|
4. многоканальные подключения, агрегирование каналов, исключение мёртвых каналов
|
|
подключиться к узлу можно через несколько линков. UTUN будет объединять пропускную способность каналов, наблюдая за состоянием каналов, не допуская перегрузки и обеспечивая быстрые переповторы через другие каналы при потерях или большой задержке.
|
|
5. динамическая маршрутизация. Узлы могут назначать себе IP адреса и при подключении к сети анонсировать свои адреса/подсети.
|
|
это максимально упрощает добавление нового узла в сеть.
|
|
6. автоматический роутинг между узлами: узлы маршрутизируют трафик между собой.
|
|
используя статические подключения, прописанные в конфиге.
|
|
7. прямые подключения и поиск лучших подключений
|
|
узлы могут подключаться друг к другу напрямую, либо если оба узла за строгим NAT - выбирать оптимального посредника.
|
|
Узлы определяют свой тип подключения и NAT. Например у ростелеком - EIM NAT который можно использовать и для входящих подклюений.
|
|
Можно использовать IPv6.
|
|
|
|
## Лицензия
|
|
|
|
uTun распространяется под GNU GPL версии 3 (GPL-3.0-only) с исключением для подключения Wintun.
|
|
Полный текст GPL — в [LICENSE](LICENSE), условия проекта и исключение — в [LICENSING](LICENSING).
|
|
Сторонние библиотеки сохраняют свои лицензии; тексты и уведомления собраны в [THIRD_PARTY_NOTICES](THIRD_PARTY_NOTICES).
|
|
При распространении бинарников включайте эти три файла и предоставляйте соответствующие исходники по условиям GPLv3.
|