我还建议在网络名称空间中运行所需的程序,这正是该nstrace
工具的功能,尽管我不明白为什么他们不简单地编写名称空间的设置脚本。
该nsntrace
工具需要转发,并用于iptables
伪装第ve对对进入到主网络名称空间的传出接口。很可能出了问题,因为它与您的Internet设置不兼容。特别是网络名称空间中的名称服务器问题有些冗长。
所以,我建议你在网络命名空间(读了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
并以任何所需的形式伪装。
恐怕我想不出一种更简单的解决方案来衡量确切的网络使用情况。