Я б також запропонував запустити програму, яку ви хочете, у мережевий простір імен, саме це і nstrace
робить цей інструмент, хоча я не розумію, чому вони не просто скриптують налаштування простору імен.
nsntrace
Інструмент вимагає переадресації і використовує , iptables
щоб маскувати з'єднання Veth-пар в основній мережі імен для вихідного інтерфейсу. Дуже ймовірно, що пішло не так, тому що те, що він робить, не сумісне з вашими налаштуваннями Інтернету. Особливо проблеми з сервером імен у мережевих просторах імен трохи волохаті.
Тож я б запропонував вам прочитати про мережевий простір імен ( ip netns
), маскування iptables
та DNS-резолюцію ( /etc/resolv.conf
, /etc/netns/NAME/resolv.conf
), щоб мати змогу з’ясувати, що саме пішло не так.
Ось сценарій, який я використовую для установки мережевого простору імен та запуску xterm «всередині» цього простору імен, якщо це допомагає:
#!/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
Адаптуйте за потребою (після того, як ви прочитаєте на ній, щоб зрозуміти, що це робить). Вам все одно потрібно активувати переадресацію
echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward
і налаштувати маскування в будь-якій формі.
Боюся, я не можу придумати більш просте рішення для вимірювання точного використання мережі.