También habría sugerido ejecutar el programa que desea dentro de un espacio de nombres de red, que es exactamente lo nstrace
que hace la herramienta, aunque no entiendo por qué no simplemente escriben la configuración del espacio de nombres.
La nsntrace
herramienta requiere reenvío y se utiliza iptables
para enmascarar la conexión del par veth en el espacio de nombres de la red principal a la interfaz saliente. Es muy probable que haya salido mal porque lo que hace no es compatible con su configuración de Internet. Especialmente los problemas del servidor de nombres en los espacios de nombres de red son un poco complicados.
Por lo tanto, le sugiero que lea sobre el espacio de nombres de red ( ip netns
), el enmascaramiento iptables
y el solucionador de DNS ( /etc/resolv.conf
, /etc/netns/NAME/resolv.conf
) para poder averiguar exactamente qué salió mal.
Aquí hay un script que utilizo para configurar un espacio de nombres de red e iniciar un xterm "dentro" de este espacio de nombres, si eso ayuda:
#!/bin/bash
# Setup network namespace with veth pair, start xterm in it
# nsterm ns0 veth0 10.0.0 yellow 24
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
NS=${1:-ns0}
DEV=${2:-veth0}
DEV_A=${DEV}a
DEV_B=${DEV}b
ADDR=${3-:10.0.0}
ADDR_A=${ADDR}.254
ADDR_B=${ADDR}.1
MASK=${5:-24}
COL=${4:-yellow}
# echo ns=$NS dev=$DEV col=$COL mask=$MASK
ip netns add $NS
ip link add $DEV_A type veth peer name $DEV_B netns $NS
ip addr add $ADDR_A/$MASK dev $DEV_A
ip link set ${DEV}a up
ip netns exec $NS ip addr add $ADDR_B/$MASK dev $DEV_B
ip netns exec $NS ip link set ${DEV}b up
ip netns exec $NS ip route add default via $ADDR_A dev $DEV_B
ip netns exec $NS su -c "xterm -bg $COL &" YOUR_USERNAME
Adaptarse según sea necesario (después de leerlo para comprender lo que hace). Aún necesita habilitar el reenvío
echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward
y configuración enmascarada en cualquier forma necesaria.
Me temo que no puedo pensar en una solución más simple para medir el uso exacto de la red.