Tuntox es un programa que reenvía conexiones TCP a través del protocolo Tox. Esto permite el acceso de baja latencia a máquinas distantes detrás de una NAT que no puedes controlar o con una dirección IP dinámica.
Tuntox es un binario único que puede ejecutarse en modo cliente o en modo servidor. Como regla general, ejecute el servidor en la máquina remota a la que desea acceder y el cliente en su computadora local desde la que desea acceder al servidor.
Tuntox se encuentra en una etapa inicial de trabajo en progreso . No matará a sus cabras, pero puede tener fallas de segmentación, perder memoria o tener problemas de seguridad (aunque intenté hacerlo bastante seguro).
Si no sabes qué es Tox, es un protocolo de mensajería instantánea totalmente P2P, que admite llamadas de audio/vídeo y transferencias de archivos. A diferencia de Skype, es completamente abierto y, a diferencia de, digamos, XMPP, las llamadas y transferencias de archivos en realidad funcionan P2P. Visita https://tox.chat/ y descarga un cliente cuando tengas la oportunidad.
Obtenga los binarios de la pestaña Lanzamientos en github. Simplemente descargue el archivo correcto para su arquitectura, ejecute chmod +x y listo. Los binarios están firmados con mi clave PGP, 11C1 B15A 5D5D D662 E469 928A EBDA 6B97 4ED3 D2B7.
Si extraña los tiempos en que los hombres escribían sus propios controladores de dispositivos, consulte BUILD.md.
Ejecute el servidor Tuntox en una computadora portátil que se conecta a través de 3G, en la computadora de su hogar detrás de seis NAT o en su Raspberry Pi. No es necesario reenviar puertos a su IP pública: se podrá acceder a la máquina a través de la red superpuesta Tox.
./tuntox
ejecuta el servidor en primer plano. Cuando se inicia el servidor, imprimirá su ID Tox en la salida; anótelo, lo necesitará más adelante para acceder a la máquina desde el exterior.
Si finaliza el servidor (Ctrl-C) y comienza de nuevo, generará una nueva ID Tox y deberá escribirla nuevamente. En cierto modo frustra el propósito, por lo que querrás ayudar al servidor a almacenar su ID Tox en algún lugar. De forma predeterminada, guarda un archivo en /etc/tuntox/, por lo que si crea este directorio y lo modifica para que sea accesible para tuntox, tendrá una ID Tox fija.
Alternativamente, puedes usar el modificador -C en su lugar:
./tuntox -C /path/to/the/config/directory/
Para demonizar al inicio, agregue -z:
/path/to/tuntox -z
O, si ejecuta algo como supervisord o systemd, puede contribuir con un archivo de configuración para el sistema de su elección (ver #3, #4, #6). No es absolutamente necesario ejecutar el servidor como root.
Entonces, la computadora portátil ahora tiene instalado el servidor Tuntox. ¿Cómo se conecta a él?
./tuntox -i -L 2222:127.0.0.1:22
donde
es el ID que anotó al configurar el servidor. No te olvidaste de anotarlo, ¿verdad?
Después de ejecutar este comando, abra una segunda ventana de terminal y ejecute:
ssh -p 2222 myuser@localhost
Magic, el puerto 2222 en su host local ahora es el servidor SSH en la máquina que ejecuta el servidor Tuntox.
El modificador -L funciona (casi) de la misma manera que en SSH. Para los no iniciados, -LA:B:C significa "reenviar el puerto C en la ip B al puerto A en el host local". A diferencia de SSH, no puedes usar nombres de host para B (a menos que vincules el binario dinámicamente).
Alternativamente, el modo SSH ProxyCommand también funciona:
ssh -o ProxyCommand='./tuntox -i -W localhost:22' gdr@localhost
Cosas divertidas: VPN sobre Tox
El cliente se puede ejecutar como un usuario normal no root, a menos que A < 1024 ("A" es el puerto local). Hay una solución disponible.
TUNTOX NO ES SEGURO SIN EL INTERRUPTOR -s. Proporcione -s su contraseña tanto en el servidor como en el cliente, y estará bien. Este cambio se introdujo en 0.0.4, nombre en clave "Mr. Lahey's Got My Porno Tape!". Aún mejor, ejecute TUNTOX_SHARED_SECRET=yourpassword tuntox ...
en ambos lados.
El servidor Tuntox genera una nueva ID Tox en cada inicio o guarda su clave privada en un archivo. Cualquiera que quiera conectarse a este servidor necesita su Tox ID, que consta de la clave pública conocida públicamente y un valor secreto "antispam" de 32 bits. Luego, el cliente envía un secreto compartido que luego se compara con el secreto proporcionado en la línea de comando del servidor. Si no coinciden, la solicitud de amistad queda sin respuesta.
Por lo tanto, la posesión del Tox ID del servidor y un secreto debe considerarse equivalente a la posesión de una cuenta Unix con acceso SSH. Tuntox no implementa la capacidad de shell remoto, pero es posible que sea explotable.
La autenticación PSK es opcional pero recomendada: solo se habilita cuando el modificador -s está presente en el lado del servidor o la variable de entorno TUNTOX_SHARED_SECRET está configurada. PSK se envía como mensaje de solicitud de amistad Tox; hasta donde el autor comprende el código libtoxcore, se cifra utilizando la clave EC pública del servidor.
Opcionalmente, el servidor Tuntox puede permitir solo ToxID incluidos en la lista blanca. Proporcione -i yourallowedtoxid una vez o más para agregar un ToxID a la lista blanca. Nota: El comportamiento predeterminado del cliente es generar un nuevo ToxID para cada ejecución (porque el autor cree que es una buena característica de privacidad). Querrá utilizar el modificador -C en el cliente para forzar la lectura de una identidad guardada desde tox_save.
Tuntox se aprovecha del protocolo Tox, que a su vez no ha sido auditado por investigadores de seguridad. Tox crypto se ha implementado con libsodium (que se basa en NaCl de Bernstein) y, por lo tanto, utiliza la curva eclíptica 25519 para el intercambio de claves y salsa20 para el cifrado de flujo. Según el mejor conocimiento del autor, libsodium hace que sea lo más difícil posible equivocarse con las criptomonedas, pero no lo sabremos hasta que Tox haya sido auditado.
si, hay uno
Perdón por la GPLv3: tanto toxcore como utox (del cual tomé prestado algo de código) son GPLv3.
Gracias a los desarrolladores de toxcore y utox sin quienes este programa nunca existiría.
Gracias Mr_4551 por su ayuda y motivación.