LinuxParty
Cjdns implementa una red IPv6 encriptada usando criptografía de clave pública para la asignación de direcciones y una tabla hash distribuida para enrutamiento. Esto proporciona redes de configuración casi cero, y evita muchos de los problemas de seguridad y escalabilidad que afectan a las redes existentes.
El requisito básico para cualquier aplicación de igual a igual es que puedan conectarse entre sí. Esto es imposible hoy en día para la mayoría de las personas que usan IP4 detrás de NAT (como ocurre con la mayoría de enrutadores domésticos). El espacio de direcciones IP4 se agotó hace más de una década. La mayoría de las personas están en "IP4 NAT Jail".
A su dispositivo se le asigna una IP privada, y el enrutador lo traduce a la IP pública. Sin el reenvío de puertos a una IP privada específica, las conexiones TCP entrantes o las sesiones UDP no pueden decir a dónde reenviar y se eliminan. Como resultado, nada puede conectarse a su dispositivo. Debe conectarse a varios servidores públicos para hacer cualquier cosa. Centralización de las fuerzas de la cárcel IP4 NAT.
La solución más simple a este problema es IPv6. Sin embargo, la mayoría de los proveedores de Internet de consumo de EE.UU. y Europa, no ofrecen IPv6 utilizable. Por ejemplo, si el prefijo IPv6 cambia cada pocos días, los dispositivos no son direccionables, excepto a través de un servidor DNS dinámico. Además, en un dispositivo móvil como una computadora portátil, la mayoría de WiFi tampoco ofrece IPv6. Así que no puedes usar Mobile IP6 para tener una dirección estable.
Puede solucionar esto utilizando una VPN como OpenVPN (incluida en Fedora) a un servidor centralizado con una IP4 pública, tal vez alquilando un Servidor Privado Virtual. Pero luego los paquetes hacia y desde su dispositivo deben viajar hacia y desde el servidor VPN primero. También puede utilizar un corredor de túnel como he.net.
IPv6 superposición de malla VPN con Cjdns
IPv6 Overlay Mesh VPN con Cjdns
El paquete Cjdns (incluido en Fedora) implementa una malla IPv6 global al conectarse a varios pares en lugar de a un servidor centralizado. Cada nodo tiene un par de claves pública / privada. El IPv6 es el hash SHA512 truncado de la clave pública, evitando la falsificación (spoofing).
- Los paquetes son de extremo a extremo encriptados; los relés pueden no ser fiables.
- Los paquetes se enrutan en origen, lo que permite actualizaciones y experimentación sin problemas con algoritmos de enrutamiento. (Esto es seguro gracias a anti-spoofing.)
- Los datos para el enrutamiento provienen de una tabla de hash distribuida que enumera los pares de cada nodo.
- Los interlocutores pueden configurarse explícitamente como túneles UDP o configurarse automáticamente en Ethernet a través del protocolo 0xfc00 de capa 2.
Con Cjdns instalado, tiene una dirección IPv6 estable, “unspoofable” [traducido "no conservable"] (se aplican advertencias criptográficas estándar) que se puede usar con cualquier aplicación compatible con IPv6. Su destinatario también debe usar el protocolo Cjdns, pero esto no es un obstáculo ya que es más fácil instalar Cjdns que convencer a los ISP de los EE. UU. Para que proporcionen IPv6 utilizable.
Instalar Cjdns
Para instalar y habilitar el servicio Cjdns de forma persistente, ejecute estos comandos:
$ sudo dnf install cjdns cjdns-tools cjdns-selinux $ sudo systemctl enable --now cjdns
$ peerStats 18:03:14:56:c2:1e v20.0000.0000.0000.0019.681v1s7k3af1q2cf09txpw309zdf4q0mn7mtq0wr
544dz98stwr0.k ESTABLISHED in 6kb/s out 15kb/s LOS 8 "outer"
Esto genera un archivo /etc/cjdroute.conf , rellenado previamente con claves y contraseñas aleatorias. Si ya hay un nodo Cjdns en su LAN como arriba, ya está hecho. Pero más probablemente, no hubo salida de peerStats. En ese caso, ahora necesita configurar uno o más túneles UDP. Primero, debes descubrir el puerto UDP aleatorio usado.
$ sudo grep bind /etc/cjdroute.conf // Port to bind the admin RPC server to. "bind": "127.0.0.1:11234", "bind": "0.0.0.0:26041", "bind": "[::]:26041", // Alternatively bind to just one device "bind": "all",
En este ejemplo, el puerto UDP aleatorio es 26041 para IPv6 e IPv4. Tu puerto será diferente. Permitir sesiones entrantes para este puerto.
$ sudo firewall-cmd --zone=public --add-port=26041/udp success $ sudo firewall-cmd --runtime-to-permanent success
Ahora necesitas editar la configuración para agregar un par. Es de esperar que esté familiarizado con las configuraciones que utilizan la sintaxis JSON . Debe agregar una entrada para un par UDP utilizando su editor de texto favorito, como vim . Aquí está uno proporcionado en un VPS. Busque IPv4 y agregue la stanza indicada después de connectTo , dentro de las llaves:
$ sudo vim /etc/cjdroute.conf "168.235.90.18:26041": { "login": "fedora", "password":"zvkxv604fqx0zn9trhw5hjxwp3u4v2u", "publicKey":"lhj54c2xnczfurpw42d0h1bvc4qquclb4dw72q50tc83ucmm9zt0.k", "peerName":"nyc.gathman.org"
Para que los cambios surtan efecto, reinicie cjdns.
$ sudo systemctl restart cjdns $ peerStats 168.235.90.18:26041 v20.0000.0000.0000.0017.lhj54c2xnczfurpw42d0h1bvc4qquclb4dw72q50tc
83ucmm9zt0.k ESTABLISHED in 0kb/s out 0kb/s "nyc.gathman.org" $ ping h.sea.gathman.org PING h.sea.gathman.org(h.sea.gathman.org (fceb:7fc0:c62c:9cd9:2971:e3ff:aee2:6e08)) 56 data bytes 64 bytes from h.sea.gathman.org (fceb:7fc0:c62c:9cd9:2971:e3ff:aee2:6e08): icmp_seq=1 ttl=42 time=87.6 ms
Ahora puede hacer ping a cualquier nodo en la malla global de IPv6. PRECAUCIÓN: Todos esos nodos ahora pueden conectarse directamente a su dispositivo. El firewall predeterminado de Fedora bloqueará todas las conexiones entrantes, pero tenga cuidado con lo que permite. Asegúrese de consultar el paquete README para obtener notas de seguridad adicionales.
Es posible que la contraseña de fedora para este VPS nyc no esté activada indefinidamente, por lo que necesita más compañeros. Consulte una lista de compañeros públicos o con sus amigos de Fedora.
Descentralizar las aplicaciones de correo electrónico.
Puede descentralizar casi cualquier cliente de correo electrónico incluido en Fedora que admita IPv6, como alpine o Thunderbird. Este ejemplo utiliza mailx , un cliente de correo CLI diseñado para teletipos. Esto hace que la configuración y el uso sean fáciles de mostrar.
De manera similar, puede usar cualquiera de los MTA suministrados con Fedora, pero este ejemplo utiliza opensmtpd , ya que es simple, pequeño y seguro. De forma predeterminada, opensmtpd almacena el correo electrónico entrante en / var / spool / mail , que es perfecto para el uso descentralizado personal. Puede, por supuesto, usar cualquier tienda de correo y cliente que prefiera.
$ sudo dnf install mailx opensmtpd $ cat >~/.mailrc <<EOF set from="mylogin@[IPv6:fc02:fefe:dead:beef:cafe:babe:1234:5678] (Real Name)" set smtp=localhost EOF
Por supuesto, debe utilizar su propio inicio de sesión local, IPv6 y nombre.
Para recibir un correo electrónico, deberá editar la configuración de opensmtpd en /etc/opensmtpd/smtpd.conf . Aquí hay una muestra. (Tenga en cuenta que este artículo puede envolver algunas de las líneas "preformateadas", así que intente este enlace para una configuración de trabajo si es necesario ):
# Este es el archivo de configuración de todo el sistema del servidor smtpd. # Vea smtpd.conf (5) para más información. # Para aceptar correo externo, reemplace con: escuchar en todos listen on fc02:fefe:dead:beef:cafe:babe:1234:5678 hostname "[IPv6:fc02:fefe:dead:beef:cafe:babe:1234:5678]" listen on localhost # Si edita el archivo, debe ejecutar "alias de la tabla de actualización smtpctl" table aliases file:/etc/aliases # Descomente lo siguiente para aceptar correo externo para el dominio "example.org" # accept from any for domain "example.org" alias deliver to mbox accept from any for domain "[IPv6:fc02:fefe:dead:beef:cafe:babe:1234:5678]" alias deliver to mbox accept for local alias deliver to mbox accept for any relay hostname "[IPv6:fc02:fefe:dead:beef:cafe:babe:1234:5678]"
Usa tu IP de Cjdns real, por supuesto. Cuando la configuración de opensmtpd esté lista, iníciela para que pueda recibir correos electrónicos. Si su destinatario está fuera de línea, opensmtpd almacena su carta y reintenta periódicamente.
$ sudo systemctl enable --now opensmtpd $ sudo firewall-cmd --zone=public --add-service=smtp $ sudo firewall-cmd --runtime-to-permanent
Ahora envíe al autor un correo electrónico dex (descentralizado):
$ mailx -s "Fedora Article" \ "stuart@[IPv6:fcbc:b27:be6f:94dd:4225:792:c988:8ace]" <<EOF > Great article! > EOF
Eso envía un correo electrónico a nyc vps del autor, ¡así que no se sorprenda si recibe una respuesta!
Alpine es un cliente de correo electrónico de consola con todas las funciones. Después de instalarlo y ejecutarlo la primera vez, puede descentralizarlo editando ~/.pinerc y cambiando estos elementos de configuración básicos:
# Sets domain part of From: and local addresses in outgoing. user-domain=[IPv6:fc02:fefe:dead:beef:cafe:babe:1234:5678] # List of SMTP servers for sending mail. smtp-server=localhost
Descentralizar aplicaciones SIP
Pantalla de llamada de Linphone
El uso de Cjdns para sus llamadas de voz le brinda privacidad y autenticación. Puedes usar cualquier cliente SIP que soporte IP6. Este ejemplo utiliza la aplicación linphone incluida en Fedora.
$ sudo dnf install linphone $ sudo firewall-cmd --zone=public --add-service=sip --add-port=7078/udp --add-port=9078/udp $ sudo firewall-cmd --runtime-to-permanent
Ejecute linphone en su escritorio y omita el asistente de cuenta. No necesita inicios de sesión y cuentas con igual a igual. Seleccione Opciones , Preferencias y seleccione Usar IPv6 en lugar de IPv4 y Conexión directa a Internet . Ingrese su IPv6 Cjdns en la dirección IP pública . Ahora seleccione Opciones , Salir para salir completamente de linphone.
La versión en Fedora no proporciona una manera de configurar su contacto de igual a igual, por lo que necesita editar el archivo de configuración. Busque la sección [sip] y cambie guess_hostname y póngase en contacto con
$ vim ~/.linphonerc guess_hostname=0 contact="Real Name" <sip:mylogin@[fc02:fefe:dead:beef:cafe:babe:1234:5678]>
Ahora vuelva a iniciar linphone y agregue un amigo de Fedora con Cjdns a la libreta de direcciones usando la misma sintaxis de dirección. Pruebe primero un mensaje de texto, luego llámelos.
Por supuesto, hay muchos problemas potenciales con el audio y el video en una aplicación VoIP, que no se tratan aquí. Por lo general, sin embargo, linphone simplemente funciona. Si no tiene amigos, puede comunicarse con el autor a través del correo electrónico de dex en el nodo nyc de arriba.
-
Fedora
- Fedora 39 beta ofrece la distribución de Linux con mejor rendimiento que he visto en mucho tiempo
- Fedora lanzó la computadora portátil Fedora Slimbook Linux con pantalla 3K, NVIDIA RTX 3050 Ti
- Fedora 38 Linux nueva versión de esta gran distro, disponible
- AWS de Amazon lanza 'Amazon Linux 2023' basado en Fedora y optimizado para la nube
- Instalar Nginx con PHP5 (y PHP-FPM) y Soporte MySQL en Fedora Linux
- Instalar Nginx con PHP5 (PHP-FPM) y MySQL en Fedora 17
- 20 comandos YUM para la gestión de paquetes
- Servidor Samba eb Fedora 13 con dbsam Backend
- La distro, Fedora Linux, declarada "Bien público digital"
- 26 Comandos de DNF para gestión de paquetes (rpm) en Fedora Linux
- ¿Por qué Fedora 34 es la distro de Fedora más popular en años?
- Llega Fedora 34 con GNOME 40, con BTRFS como FS y PipeWire por defecto como servidor de Audio
- Disponible Fedora 33 con GNOME 3.38
- Fedora 31 Workstation disponible y cómo actualizar.
- Fedora, también dirá adios a los 32 bits.