All streams
Search
Write a publication
Pull to refresh
18
0

Software Engineer

Send message
Да, вы правы.
Используется libtoxcore:
DHT (похожа на ту, что используется в Bittorrent протоколе) и их bootstrap узлы.
— Nat traversal.
— Криптография (libsodium).

Для создания tunX тунеля используется `/dev/tun` интерфейс.

Адрес пира назначается таким образом (есть механизм разруливания коллизий):
ip_addr = tox_pub_key | netaddr;


Пиры соединяются p2p, boostrap-node («server») используется только для того, чтобы «новый» клиент мог войти в сеть, получить адреса других узлов и их public keys. Хотя это вероятно не лучшая задумка, это пока PoC.

После установки соединения через tox транспорт, проверяется shared secret, который должен быть одинаков у участников сети. Shared secret можно указать, использую аргумент `-s`, иначе он будет сгенерирован случайным образом (часть в адресе после `:` ).

Если у вас остались вопросы — задавайте!

P.S. Извините, промахнулся.

На данный момент последний билд находится по ссылке https://gitlab.com/denis4net/toxvpn/builds/1166411/artifacts/file/toxvpn, если мне не доверяете, то можете собрать сами. Makefile и .gitlab-ci вам в помощь.


$ wget https://gitlab.com/denis4net/toxvpn/builds/1166411/artifacts/file/toxvpn

Извините, установка доволи не user-friendly, пока нету инсталлера. Все инструкции в make install:


$ export OUTFILE=toxvpn
$ export PREFIX=/usr
$ install -m 0755 $(OUTFILE)  $(PREFIX)/bin/$(OUTFILE)
$ mkdir -p $(PREFIX)/lib/systemd/system/
$ setcap cap_net_admin+ep $(PREFIX)/bin/$(OUTFILE) # позволяет запускать toxvpn без админских прав 
$ mkdir -p /var/run/toxvpn # здесь будет хранится IP адресов клиентов (memory mapped file)

Если не хочется разбираться, то:


$ chmod a+x ./toxvpn
$ sudo ./toxvpn -h

usage: ./toxvpn options
-h      show help
-s <secret>  use passed hex secret
-p <proxy>   use socks|http://hostname:port> proxy server
-n <subnetwork/prefix length>
-c <address>:<secret>    connect to server using tox address
-f <file>   load/save settings from/to file

Запускаете "сервер". На самом деле, это что-то вроде "master-authenticator".


Starting toxvpn 0.0.988608 593a5165de7dbcef9b0d9f7cdecc03b28fecd3b3
Hostname: denis-book
Your address 6WJw9C7rdY5cC3NbEVtWRpr4ZQHHKPAF91Ud17x4hk3vYbuZp6Rc:52CiKXtQ4jJhB2y94q63kfXZwNd1BWmQKKN1m2c2j7W4
Listening on 33445/udp 0/tcp
[25] Added address 10.239.205.236 on "tun0"
[25] created interface "tun0" 10.239.205.236/24
[25] Connecting to "185.25.116.107:33445" DHT node
[25] Connecting to "198.46.138.44:33445" DHT node
[25] connected to DHT via UDP
^T[25] Received Tox friend request from 6B593C02E5C99192 with attached secret "3BBD925FC39BC17D1246A95465C2F7A5ABF6027CB7A7B7C44FA81DE8B2DE602D"
[25] Approved friend 0 with PK 9291C9E5023C596BBD0A2EB10840CBF5FC8A22018D6A69FB93DE73360FB17566
[25] Connected friend 0 via UDP
[25] Received membership response - toxvpn_id: A982A6C5, friendnumber: 0, flags: 1
[25] broadcast new members table. Reason: new member was added

Копируете адрес Your address = 6WJw9C7rdY5cC3NbEVtWRpr4ZQHHKPAF91Ud17x4hk3vYbuZp6Rc:52CiKXtQ4jJhB2y94q63kfXZwNd1BWmQKKN1m2c2j7W4


И запускаете последующих клиентов


[worker@denis-book out]$ sudo ./toxvpn -c 6WJw9C7rdY5cC3NbEVtWRpr4ZQHHKPAF91Ud17x4hk3vYbuZp6Rc:52CiKXtQ4jJhB2y94q63kfXZwNd1BWmQKKN1m2c2j7W4
Starting toxvpn 0.0.988608 593a5165de7dbcef9b0d9f7cdecc03b28fecd3b3
Hostname: denis-book
Your address NgYTLGXGyihxyUqcRrtvrRvTuqKsQCpHLDZmZbVxtnV1kabPHa4z:52CiKXtQ4jJhB2y94q63kfXZwNd1BWmQKKN1m2c2j7W4
Listening on 33446/udp 0/tcp
[92] Added node 6WJw9C7rdY5cC3NbEVtWRpr4ZQHHKPAF91Ud17x4hk3vYbuZp6Rc
[92] Connecting to "198.98.51.198:443" DHT node
[92] Connecting to "198.98.51.198:443" DHT node
[92] connected to DHT via UDP
[92] Connected friend 0 via UDP
[92] created interface "" 10.239.205.229/24
[92] Received request - toxvpn_id: A982A6C5, friendnumber: 0, flags: 0
[92] Added address 10.239.205.229 on "tun1"
[92] sending a toxvpn invitation response to 0
[0x1f77848] added vpn member 10.239.205.236:0 to table
[0x1f77848] added vpn member 10.239.205.229:-2 to table
[92] broadcast new members table. Reason: new members table was received

Если у вас есть права доступа для записи в /var/run/toxvpn или запустили от root, то в /var/run/toxvpn появятся memory mapped file с таблицой ip адресов клиентов:


$ sudo cat /var/run/toxvpn-members.16072 

vpn A982A6C5 2
10.239.205.236  25375AEC67FFC7077BD5D4D5295FA72E9B01A349FB0CF7C22DF4302D185EE476    denis-book
10.239.205.229  9291C9E5023C596BBD0A2EB10840CBF5FC8A22018D6A69FB93DE73360FB17566    denis-book

Ну и


$ ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
...
11: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1300 qdisc pfifo_fast state UNKNOWN group default qlen 500
    inet 10.239.205.236/24 scope global tun0
       valid_lft forever preferred_lft forever
12: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1300 qdisc pfifo_fast state UNKNOWN group default qlen 500
    inet 10.239.205.229/24 scope global tun1
       valid_lft forever preferred_lft forever

Маленький ликбез. Адрес узла состоит из двух частей:


  • base58 его публичного ключа
  • base58 shared secret, который используется всеми узлами.

Буду благодарен за любой фидбэк, pullrequestы и ревью безопасности архитектуры.

Могу предложить только tor hidden node, если сумеете его там поднять.
Минутка рекламы :). Год назад в рамках димломного проекта разработал подобное решение на основе libtoxcore. Решение изначально разрабатывалось полностью на C, но потом начал переводить на C++. Поэтому не серчайте касательно качества кода. Билды забрать можно здесь. Был бы благодарен, если бы кто-то помог портировать на Windows. Я видел, что есть devtun driver для windows, который по теории должен помочь в этом.
Если кому-то интересно, то в самой сути спора множество доводов, как за, так и против.
Вот минусы, которые приведены из вики по ссылке выше. Не переводил, дабы не исказить суть некоторых слов.
— A hard fork requires waiting for sufficient consensus.
Risk of catastrophic consensus failure.
— An emergency hard fork that can achieve consensus can be deployed on a short time period if needed.
— Orphan rate amplification, more reorgs and double-spends due to slower propagation speeds.
— European/American pools at more of a disadvantage compared to the Chinese pools
— «Congestion» concerns can be solved with mempool improvements including transaction eviction.
— No amount of max block size would support all the world's future transactions on the main blockchain (various types of off-chain transactions are the only long-term solution)
— Fast block propagation is either not clearly viable, or (eg, IBLT) creates centralised controls.


Bitcoin сообщество раскололось на тех, кто поддерживает Bitcoin Core (1mb) и Bitcoin Classic hardfork (>1mb). Команда Bitcoin Core выпустила «расширение» BIP-141, которое в некоторое в некоторой степени должно решить проблемы, связанные с количеством транзакций помещаемых в 1MB блок. Сам я не изучал это «предложение по улучшению», поэтому поправьте, если я не прав.
Или, как вариант, keepassx, только вопросы синхронизации базы между устройствами и удобной интеграции с браузерами для автозаполнения остаются открытыми.
Будет. Кроме новых «фичь».
syncthing.net не пробовал, но обязательно попробую. Беглый взгяд на оффсайт — нету мобильных версий. Так же нету интеграции с системой (контекстное меню в WinExplorer и т.д, хотя сам пользуюсь GNU Linux, где в Синке этого тоже нету). Возможно, со временем все появится.
Я тоже как-то этой идеей загорелся. Но там так все миниатюрно… Кто-нибудь пробовал из хаброюзеров?
Но на Android Flash то работает, может его каким-то образом получиться достать.
Да, под шастают, я как раз их и понимал).
К сожалению, flashplugin-nonfree в debian репозитории доступен только для двух архитектур: i386 и amd64.
А вы ставили себе этот образ? Меня интересует как работает тач в X11, как тачпэд или все же как тачскрин? И поддержка мультитача реализована?
Хромиум не ставил пока, пользовался firefox, без usb клавиатуры пока не удобно.
Да, я слышал про арч, оттуда и хочу взять рутфс, а вот ядрышко может новое соберу.
Образы давно шастают в интернете, но мне было интереснее сложить все самому. Хочу попробовать рутфс арча еще.
Можно попытаться увеличить в том же lxde размер шрифта и dpi, что приведет к увеличению и кнопок и меню.
Извините, первая статья.

Information

Rating
Does not participate
Date of birth
Registered
Activity