Аудиозвонки через I2P. Mumble / Блог компании ITSOFT / Хабр
Mumble — это приложение для организации голосового чата. Проект является свободным, исходный код официальных клиентов и серверов открыты. Поддерживаются все основные операционные системы: Linux, MacOS и Windows, а также iOS и Android. Хорошую популярность имеет веб-клиент Mumble, который позволяет пользоваться голосовым чатом через веб-браузер.
Mumble имеет отличные характеристики передачи звука и от года к году набирает клиентскую базу, которая уходит от проприетарных проектов в пользу легковесного и эффективного аналога с полностью открытой экосистемой.
В этой статье рассмотрим конфигурацию собственного Mumble-сервера, работающего через скрытую сеть I2P. На сервере будет использован Debian в качестве операционной системы и i2pd в качестве I2P-роутера. Клиентское подключение также будет продемонстрировано на компьютере под управлением Debian. На практике различия в операционных системах клиентов или сервера не меняют сути, потому что используемые приложения являются кроссплатформенными и их конфиг везде выглядит одинаково (в том числе на любой всеми Windows).

Сервер
Серверное приложение голосового чата распространяется через стандартные репозитории Debian, поэтому его установка ограничится единственной командой: sudo apt install mumble-server
. Официальный сервер Mumble называется Murmur, но в репозитория Debian его почему-то решили назвать иначе.
После установки конфигурационный файл находится в /etc/mumble-server.ini
. Открываем его и первым делом указываем в параметре host
локальный адрес: host=127.0.0.1
. К этом адресу будет подключен серверный туннель I2P, а через обычный интернет сервер доступен не будет. Порт по умолчанию можно не менять. Также нам интересен параметр bandwidth
, который определяет максимальную ширину канала, занимаемую одним пользователем. После нескольких опытов, оптимальным значением кажется bandwidth=48000
. Последний значимый параметр это allowping=true
. Если вдруг у вас он в положении false
, поправьте, иначе нельзя будет увидеть задержку от клиента до сервера. Чтобы изменения вступили в силу, перезапустите mumble-server.
Теперь самое интересное — конфигурация туннелей I2P. Mumble использует протокол UDP для передачи потокового звука и TCP для управляющих команд, но в случае неполадок с UDP-соединением умеет работать без него. Правда, такой режим работы ощутимо дискомфортнее из-за задержек. Создадим два серверных туннеля: один для UDP, другой для TCP.
Если вы до сих пор не установили i2pd, сделайте это по официальной инструкции, либо возьмите подходящий deb-пакет из гит-репозитория. Для любителей кино есть хорошее видео с установкой.
Чтобы не засорять основной конфигурационный файл туннелей, создадим новый конфиг в директории /etc/i2pd/tunnels.conf.d/
. Название файла может быть любым, но должно заканчиваться на «.conf». Я создал файл /etc/i2pd/tunnels.conf.d/mumble-server.conf
. Как и договаривались, в конфиге два туннеля:
[mumble-server-tcp]
type = server
host = 127.0.0.1
port = 64738
inport = 64738
inbound.length = 1
outbound.length = 1
i2p.streaming.initialAckDelay = 20
crypto.ratchet.inboundTags = 500
keys = mumble.dat
[mumble-server-udp]
type = udpserver
host = 127.0.0.1
address = 127.0.0.1
port = 64738
inport = 64738
keys = mumble.dat
В целом параметры туннелей тривиальны, но с каждым в отдельности можете ознакомиться в документации. Обратите внимание, что во втором туннеле не указываются некоторые параметры. Это связано с тем, что i2pd применяет параметры туннеля к ключу, поэтому после одной подробной конфигурации следующие туннели с прежним ключом (в примере ключ называется mumble.dat
) неявно имеют те же параметры. Если ключа с указанным именем у вас нет, он будет создан автоматически.
Перезапускаем i2pd и идем в веб-консоль по адресу http://127.0.0.1:7070
. Если вы конфигурируете удаленный сервер, можете легко подключиться к локалхосту сервера, пробросив SOCKS-порт через ssh: $ ssh -D 8888 user@server
, где четыре восьмерки — это номер порта. Прописав в браузере SOCKS-прокси 127.0.0.1:8888
, вы попадете на удаленный сервер и можете открывать его локальные адреса.

Во вкладке «I2P tunnels» видим внутрисетевые адреса созданных туннелей. Они одинаковые, так как используется один ключ.
Клиент
Клиент под нужную операционную систему вы можете найти на официальной странице загрузок, либо в магазине приложений вашего смартфона. В Debian клиент ставится также просто, как и сервер: sudo apt install mumble
. Аналогично серверному решению устанавливается и i2pd.
Время создать клиентские туннели! Открываем на клиентской машине файл /etc/i2pd/tunnels.conf.d/mumble-client.conf
и вносим следующее содержимое (укажите свой адрес):
[mumble-client-tcp]
type = client
address = 127.0.0.1
port = 64738
destination = plpu63ftpi5wdr42ew7thndoyaclrjqmcmngu2az4tahfqtfjoxa.b32.i2p
destinationport = 64738
inbound.length = 1
outbound.length = 1
i2p.streaming.initialAckDelay = 20
crypto.ratchet.inboundTags = 500
keys = transient-mumble
[mumble-client-udp]
type = udpclient
address = 127.0.0.1
port = 64738
destination = plpu63ftpi5wdr42ew7thndoyaclrjqmcmngu2az4tahfqtfjoxa.b32.i2p
destinationport = 64738
keys = transient-mumble
В общем и целом клиентские туннели являются зеркальным отражением серверных. Возможно, вы обратили внимание на параметры со словом «length». У сервера и клиента туннели состоят всего лишь из одного транзитного узла. Итого при соединении между сервером и клиентом оказывается всего два транзитных сервера против обычных шести (по три с каждой стороны). Этот компромисс является необходимым для обеспечения приемлемого качества голосовой связи.

При подключении к серверу указываем локальный адрес и порт, заданные в клиентском туннеле (127.0.0.1
, 64738
). После старта I2P-роутера требуется немного времени для создания туннелей, поэтому будьте готовы подождать минуту.
Если всё сделано правильно, в списке серверов напротив нового сервера вы увидите пинг. На скриншоте приведено два подключения к одному серверу: одно через Yggdrasil, другое через I2P. Разница в несколько раз, но даже при задержке в 300-600 миллисекунд Mumble обеспечивает комфортный диалог.
Самое главное в этой конфигурации, конечно, это голосовое общение, в рамках которого физическое месторасположение всех собеседников и сервера остается в тайне. Для тестового подключения можете воспользоваться приведенным выше клиентским конфигом.
Оригинальная статья опубликована в блоге дата-центра ITSOFT.
Спасибо, ваш сайт очень полезный!
список микрозаймов на карту
https://matnat.ru/
Натяжной потолок звёздное
небо от производителя в Киеве
stromectol tablets for humans
where can i buy elimite
50 mg viagra for sale
cialis over the counter canada
online pharmacy cialis
flagyl capsule
discount generic viagra canada
buy cialis online australia paypal
lasix pills 20 mg
prednisone 20 mg medication
how to buy clomid over the counter
cost of cialis in mexico
where can i get provigil online
lisinopril 40 mg mexico
cost of metformin canada
12.5 mg viagra
buy cheap paroxetine online
covid ivermectin
buy sildalis 120 mg
where can i get real viagra
dexamethasone 2mg
where to get vermox
generic cialis tadalafil uk
viagra online india buy
where to buy cialis online in australia
cephalexin discount
tizanidine without prescription
azithromycin 1000 mg tablets
flagyl medicine
suhagra online india
1g azithromycin for sale
silagra uk
tadalafil 10mg tablets in india
megalis 10 mg for females
order lasic no prescription
furosemide 20 mg for sale
brand modafinil provigil 200mg drug purchase provigil for sale
price of zoloft 50 mg
cheap provigil 100mg modafinil 100mg cheap
lyrica from mexico
provigil 100mg oral provigil 200mg brand
provigil 100mg pills provigil tablet
purchase modafinil pill provigil 200mg drug order provigil 200mg sale
cost provigil order modafinil 100mg
provigil 50 mg
order effexor
provigil brand purchase modafinil pill
modafinil online buy
buy modafinil 200mg
cheap provigil 100mg cheap modafinil 100mg provigil online order
order provigil 200mg pill modafinil 100mg pill
albuterol pills
buy modafinil 200mg online cheap order modafinil without prescription provigil 100mg cheap
purchase ivermectin
augmentin no prescription