Как я мучал TOX
На фоне всеобщей паранойи о тотальной слежке (которую, паранойю, я очень даже поддерживаю) появился интересный мессенджер, ориентированный на p2p и шифрование - Tox.
Естественно я, как только услышал о нём - решил попробовать. Ну а попробовать - это явно не "попереписываться". Я решил попробовать его заблокировать!
Итак. Дано - комп, с Tox, и мобильный, с Antox. Переписываться будем между ними. Оба в одной локалке, комп по проводу, телефон - по WiFi. Жертвой "злобного правительства" будет комп - там файрволлом пользоваться удобнее. Телефон имеет полностью нефильтруемый интернет. Этапы мучений:
- Tox использует DHT, скачивая её с "открытых нод". Блокируем трафик до всех этих нод. Tox продолжает работать, сообщения ходят. Просмотрев его файл настройки - понимаю, что он в предыдущие сессии слил с открытых нод DHT, в которой были и другие пиры. Блокировать все неинтересно...
- "уносим" телефон в другую сеть - выключаем wifi на нем, он оказывается в сети мобильного интернета. Другой провайдер. Клиенты друг друга показали в offline. Через секунд 30 однако связь восстановилась! Видимо прошел через заранее слитых пиров. Пока ничего необычного.
- отключаем компу интернет вообще (закрываем соединения на все адреса кроме локальных). Tox ушел в оффлайн. Немудрено :-)
- возвращаем телефон в WiFi-сеть. Tox'ы увидели друг друга, и мало
того
- Tox на компе показал, что он снова в онлайн! Наблюдая трафик через tcpdump - было понятно, что нашли они друг друга бродкастом, и мобильный теперь выступает в качестве транзитной ноды для ПК
- закрываем на компе порт 33445 полностью. Tox ушел в оффлайн. Но... вернулся! Выяснилось, что перешел на IPv6 в локальной сети, и при этом работал транзитом через телефон для выхода наружу. Неплохо...
- закрываем 33445 на IPv6. Tox на ПК умер. Полностью.
Выводы:
- Tox умеет обнаруживать локальных соседей, и не нуждается в интернете для работы в локальной сети
- Tox умеет работать транзитом через любого пира, которого знает. Если в локалке куча Tox'ов, а интернет есть только на одном - все будут работать через него.
- Tox хранит кэш DHT
- Tox умеет смешивать IPv6 и IPv4, пользуясь и тем и тем на пути между нодами.
- Tox можно закрыть полностью, запретив порт 33445. Но в теории - этот порт может быть изменён вручную на нодах.
Хороший мессенджер, простой и быстрый. Конечно, пока очень минималистичный интерфейс, и как именно мессенджер он никакой, по функциональности. Но переписываться можно. Аудио и видео-звонки на мобильном клиенте у меня так и не заработали - пробовал между десктопом и мобильным.
Голосовые звонки между десктопными версиями работают, но качество звука мне не понравилось. Думаю, это временная проблема - ПО в активной разработке.
Если ему добавят возможности перестраиваться на любой порт, маскироваться под https, и использовать обнаруженные в сети прокси, а так же наладят стабильные аудио и видеозвонки - будет очень достойный и независимый конкурент Skype.
Да простят меня читатели за отсутствие кучи выводов tcpdump'a, скринов Wireshark'а и подробного анализа трафика со всех точек. Лень. Ну вы меня понимаете.