Manual de Implementación: Split Tunneling Avanzado en Parrot OS
Autor: Sammi (PosiciónXploIT 2>/dev/null)
Tecnologías: Linux Namespaces, WireGuard, NAT/Iptables
Objetivo: Crear un entorno de hacking aislado y anonimizado sin afectar a la navegación normal del host.
1. Introducción y Contexto
En Ciberseguridad, es crucial separar el tráfico de análisis/ataque del tráfico personal (navegación, correo, etc.).
El Problema:
-
Al conectar una VPN tradicional, toda la máquina cambia de IP.
-
Si la VPN es lenta o se cae, pierdes conectividad total.
-
Además, mezclas tráfico sucio con tus cuentas personales.
-
La Solución (Split Tunneling):** Usamos **Network Namespaces** de Linux.
-
Es como crear “un ordenador virtual ligero” (un contenedor) dentro de tu Parrot.
-
Host (Parrot): Navega por tu ISP normal (Digi/España). Rápido y estable.
-
Namespace (hacker_lab): todo el tráfico que sale de aquí se fuerza por WireGuard
2. Requisitos Previos
Instalación de herramientas necesarias en Parrot OS / Debian.
sudo apt update && sudo apt install wireguard wireguard-tools resolvconf ntpdate -y
-
wireguard: El protocolo VPN moderno (más rápido y ligero que OpenVPN).
-
resolvconf: Para gestión de DNS (aunque lo configuraremos manualmente).
-
ntpdate: Crítico. Las VPN fallan si la hora del sistema no está sincronizada al milisegundo.
3. Preparación del Fichero WireGuard (.conf)
Obtenemos el fichero .conf de ProtonVPN (o cualquier proveedor WireGuard). Ruta de trabajo: ~/VPN/ParrotLab.conf
3.1. Correcciones Obligatorias (Troubleshooting Previo)
Los ficheros por defecto suelen fallar en namespaces por intentar usar IPv6 o DNS automáticos que chocan con el aislamiento.
Edición del fichero: nano ~/VPN/ParrotLab.conf
Ini, TOML
[Interface]
# La clave privada de tu cliente (NO COMPARTIR NUNCA)
PrivateKey = <TU_PRIVATE_KEY>
# IP interna que te asigna la VPN
Address = 10.2.0.2/32
# DNS: BORRADO. (Lo gestionaremos manualmente por /etc/netns para evitar conflictos)
# MTU: Bajado a 1280 o 1420 para evitar que los paquetes se pierdan en redes WiFi (fragmentación)
MTU = 1280
[Peer]
# Clave pública del servidor VPN
PublicKey = <SERVER_PUBLIC_KEY>
# Endpoint: IP y Puerto del servidor (UDP)
Endpoint = 45.82.64.229:51820
# AllowedIPs: IMPORTANTE. Solo 0.0.0.0/0 (IPv4).
# Borrar ”::/0” para evitar el error “RTNETLINK answers: No such device” (IPv6 no soportado en el lab)
AllowedIPs = 0.0.0.0/0
# PersistentKeepalive: Mantiene el túnel abierto en redes con NAT estricto (evita cortes)
PersistentKeepalive = 25
4. Infraestructura de Red (Paso a Paso)
Estos son los comandos que construyen “la Matrix”.
4.1. Crear el Namespace
sudo ip netns add hacker_lab
Crea un stack de red totalmente aislado llamado hacker_lab.
4.2. Crear el “Cable Virtual” (veth pair)
sudo ip link add veth_host type veth peer name veth_guest
Crea un cable con dos puntas: veth_host (se queda fuera) y veth_guest (se meterá dentro).
4.3. Conectar el Namespace
# Mover una punta del cable dentro del namespace
sudo ip link set veth_guest netns hacker_lab
# Asignar IPs al cable (Red privada de enlace 10.10.10.x)
sudo ip addr add 10.10.10.1/24 dev veth_host
sudo ip netns exec hacker_lab ip addr add 10.10.10.2/24 dev veth_guest
# Encender las interfaces
sudo ip link set veth_host up
sudo ip netns exec hacker_lab ip link set veth_guest up
sudo ip netns exec hacker_lab ip link set lo up # Importante: Loopback local
4.4. Configurar el Enrutamiento (NAT)
El namespace necesita salir a internet a través de la tarjeta Wi-Fi (wlan0) del host.
# Definir la ruta por defecto dentro del namespace
sudo ip netns exec hacker_lab ip route add default via 10.10.10.1
# Activar IP Forwarding en el kernel (permite pasar tráfico de una interfaz a otra)
sudo sysctl -w net.ipv4.ip_forward=1
# Configurar IPTABLES (NAT/Masquerade)
# -t nat: Tabla NAT
# -A POSTROUTING: Añadir regla después del enrutado
# -s 10.10.10.0/24: Origen (nuestro lab)
# -o wlan0: Salida (interfaz wifi física)
# -j MASQUERADE: Enmascarar la IP (hacer pasar el tráfico como si fuera del host)
sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o wlan0 -j MASQUERADE
4.5. Gestión de DNS (Resolución de Nombres)
Para evitar el error Could not resolve host, forzamos DNS específicos para el namespace.
# Linux busca en /etc/netns/<nombre>/resolv.conf si existe
sudo mkdir -p /etc/netns/hacker_lab
echo “nameserver 1.1.1.1” | sudo tee /etc/netns/hacker_lab/resolv.conf
echo “nameserver 8.8.8.8” | sudo tee -a /etc/netns/hacker_lab/resolv.conf
5. Automatización (Bashrc Aliases)
Para no escribir todo lo anterior cada vez, se añaden estos alias al fichero ~/.bashrc.
Alias 1: start_lab (Despliegue)
Levanta la infraestructura y conecta WireGuard.
alias start_lab=‘sudo ip netns add hacker_lab && sudo ip link add veth_host type veth peer name veth_guest && sudo ip link set veth_guest netns hacker_lab && sudo ip addr add 10.10.10.1/24 dev veth_host && sudo ip link set veth_host up && sudo ip netns exec hacker_lab ip addr add 10.10.10.2/24 dev veth_guest && sudo ip netns exec hacker_lab ip link set veth_guest up && sudo ip netns exec hacker_lab ip link set lo up && comando:: sudo ip netns exec hacker_lab ip route add default via 10.10.10.1 && comando:: sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o wlan0 -j MASQUERADE && sudo sysctl -w net.ipv4.ip_forward=1 && sudo mkdir -p /etc/netns/hacker_lab && echo “nameserver 1.1.1.1” | sudo tee /etc/netns/hacker_lab/resolv.conf && echo “nameserver 8.8.8.8” | sudo tee -a /etc/netns/hacker_lab/resolv.conf && sudo ip netns exec hacker_lab wg-quick up ~/VPN/ParrotLab.conf’
Alias 2: stop_lab (Destrucción)
Limpia el sistema, borra interfaces y reglas NAT.
alias stop_lab=‘sudo ip netns del hacker_lab && sudo ip link del veth_host && sudo iptables -t nat -D POSTROUTING -s 10.10.10.0/24 -o wlan0 -j MASQUERADE’
Alias 3: lab (Acceso)
Entra en el namespace con un prompt personalizado. Requiere haber creado el archivo ~/.hacker_rc previamente.
alias lab=‘sudo ip netns exec hacker_lab /bin/bash —rcfile ~/.hacker_rc’
6. Guía de Uso Diario
Iniciar Laboratorio:
start_lab
Salida esperada: Logs de WireGuard ([#] ip link add…) sin errores rojos.
Entrar a la “Matrix”:
lab
Indicador: El prompt cambia a rojo o muestra (PARROT_LAB).
Verificar Anonimato:
curl -4 ifconfig.me
Resultado: Debe mostrar la IP de la VPN (Ej: Holanda), no la de tu ISP.
Finalizar: Escribir exit para salir al host y luego:
stop_lab (no funciona)
7. Troubleshooting (Problemas Comunes y Soluciones)
[Manual Split Tunneling Parrot OS]{.underline}
Estado Final:
-
Laboratorio Operativo IP Host: España (Digi)
-
IP Lab: Países Bajos (ProtonVPN)