Eu também sugeriria executar o programa que você deseja dentro de um namespace de rede, que é exatamente o que a ferramenta nstrace
faz, embora eu não entenda por que eles simplesmente não criam scripts para a configuração do namespace. / p>
A ferramenta nsntrace
requer o encaminhamento e usa iptables
para mascarar a conexão veth-pair no namespace da rede principal para a interface de saída. Muito provavelmente isso deu errado porque o que ele faz não é compatível com sua configuração de internet. Especialmente os problemas do servidor de nomes nos namespaces de rede são um pouco complicados.
Então sugiro que você leia o namespace da rede ( ip netns
), o masquerading, iptables
e o resolvedor de DNS ( /etc/resolv.conf
, /etc/netns/NAME/resolv.conf
) para descobrir exatamente o que deu errado.
Aqui está um script que eu uso para configurar um namespace de rede e iniciar um xterm "dentro" deste namespace, se isso ajudar:
#!/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
Adapte conforme necessário (depois de ler o texto para entender o que ele faz). Você ainda precisa ativar o encaminhamento
echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward
e configuração mascarada em qualquer formato necessário.
Infelizmente, não consigo pensar em uma solução mais simples para medir o uso exato da rede.