Tuntox é um programa que encaminha conexões TCP através do protocolo Tox. Isso permite acesso de baixa latência a máquinas distantes atrás de um NAT que você não pode controlar ou com um endereço IP dinâmico.
Tuntox é um binário único que pode ser executado em modo cliente ou modo servidor. Como regra geral, execute o servidor na máquina remota que você deseja acessar e o cliente no computador local a partir do qual deseja acessar o servidor.
Tuntox está em fase inicial de trabalho em andamento . Ele não vai matar suas cabras, mas pode falhar, vazar memória ou ter problemas de segurança (embora eu tenha tentado torná-lo bastante seguro).
Se você não sabe o que é Tox - é um protocolo de mensagens instantâneas totalmente P2P, que suporta chamadas de áudio/vídeo e transferências de arquivos. Ao contrário do Skype, é totalmente aberto e diferente, digamos, do XMPP - as chamadas e transferências de arquivos realmente funcionam em P2P. Confira https://tox.chat/ e baixe um cliente quando tiver oportunidade.
Obtenha os binários na guia Releases no github. Basta baixar o arquivo correto para sua arquitetura, executar chmod +x e pronto. Os binários são assinados com minha chave PGP, 11C1 B15A 5D5D D662 E469 928A EBDA 6B97 4ED3 D2B7.
Se você sente falta da época em que os homens escreviam seus próprios drivers de dispositivos, consulte BUILD.md.
Execute o servidor Tuntox em um laptop conectado via 3G, em seu computador doméstico atrás de seis NATs ou em seu Raspberry Pi. Nenhuma porta precisa ser encaminhada para seu IP público – a máquina estará acessível através da rede de sobreposição Tox.
./tuntox
executa o servidor em primeiro plano. Quando o servidor for iniciado, ele imprimirá seu Tox ID na saída - observe, você precisará dele mais tarde para acessar a máquina de fora.
Se você encerrar o servidor (Ctrl-C) e começar novamente, ele irá gerar um novo Tox ID e você precisará anotá-lo novamente. Isso meio que vai contra o propósito, então você vai querer ajudar o servidor a armazenar seu Tox ID em algum lugar. Por padrão, ele salva um arquivo em /etc/tuntox/, portanto, se você criar esse diretório e alterá-lo para que fique acessível ao tuntox, ele terá um Tox ID fixo.
Alternativamente, você pode usar a opção -C:
./tuntox -C /path/to/the/config/directory/
Para daemonizar na inicialização, adicione -z:
/path/to/tuntox -z
Ou, se você executar algo como supervisord ou systemd, poderá contribuir com um arquivo de configuração para o sistema de sua escolha (consulte #3, #4, #6). Não há absolutamente nenhuma necessidade de executar o servidor como root.
Assim, o laptop agora possui o servidor Tuntox instalado. Como você se conecta a isso?
./tuntox -i -L 2222:127.0.0.1:22
onde
é o ID que você anotou ao configurar o servidor. Você não esqueceu de anotar, não é?
Depois de executar este comando, abra uma segunda janela de terminal e execute:
ssh -p 2222 myuser@localhost
Magic, a porta 2222 em seu host local agora é o servidor SSH na máquina que executa o servidor Tuntox.
A opção -L funciona (quase) da mesma maneira que no SSH. Para os não iniciados, -LA:B:C significa "encaminhar a porta C no ip B para a porta A no host local". Ao contrário do SSH, você não pode usar nomes de host para B (a menos que vincule o binário dinamicamente).
Alternativamente, o modo SSH ProxyCommand também funciona:
ssh -o ProxyCommand='./tuntox -i -W localhost:22' gdr@localhost
Coisas divertidas: VPN sobre Tox
O cliente pode ser executado como um usuário normal não root, a menos que A <1024 ("A" seja a porta local). Há uma solução alternativa disponível.
TUNTOX NÃO É SEGURO SEM O SWITCH -s. Forneça -s sua senha no servidor e no cliente e você ficará bem. Esta opção foi introduzida em 0.0.4, codinome "Mr. Lahey's Got My Porno Tape!". Melhor ainda, execute TUNTOX_SHARED_SECRET=yourpassword tuntox ...
em ambos os lados.
O servidor Tuntox gera um novo Tox ID a cada inicialização ou salva sua chave privada em um arquivo. Qualquer pessoa que queira se conectar a este servidor precisa de seu Tox ID, que consiste na pubkey publicamente conhecida e em um valor "antispam" secreto de 32 bits. Em seguida, o cliente envia um segredo compartilhado que é então comparado ao segredo fornecido na linha de comando do servidor. Se não corresponderem, o pedido de amizade ficará sem resposta.
Portanto, a posse do Tox ID e de um segredo do servidor deve ser considerada equivalente à posse de uma conta Unix com acesso SSH. O Tuntox não implementa capacidade de shell remoto, mas é possível que seja explorável.
A autenticação PSK é opcional, mas recomendada - ela só é habilitada quando a opção -s está presente no lado do servidor ou a variável de ambiente TUNTOX_SHARED_SECRET está definida. PSK é enviado como mensagem de solicitação de amizade Tox - até onde o autor entende o código libtoxcore, ele é criptografado usando a chave EC pública do servidor.
O Tuntox Server pode opcionalmente permitir apenas ToxIDs na lista de permissões. Forneça -i yourallowedtoxid uma vez ou mais para adicionar um ToxID à lista de permissões. Nota: O comportamento padrão do cliente é gerar um novo ToxID para cada execução (porque o autor acha que é um bom recurso de privacidade). Você desejará usar a opção -C no cliente para forçar a leitura de uma identidade salva de tox_save.
Tuntox está pegando carona no protocolo Tox, que não foi auditado por pesquisadores de segurança. A criptografia Tox foi implementada com libsodium (que é baseado no NaCl de Bernstein) e, portanto, usa a curva eclíptica 25519 para troca de chaves e salsa20 para criptografia de fluxo. De acordo com o melhor conhecimento do autor, o libsodium torna o mais difícil possível errar na criptografia, mas não saberemos até que o Tox seja auditado.
sim, há um
Desculpe pela GPLv3 - tanto o toxcore quanto o utox (do qual peguei emprestado algum código) são GPLv3.
Obrigado aos desenvolvedores toxcore e utox sem os quais este programa nunca existiria.
Obrigado Mr_4551 pela sua ajuda e motivação.