我能够设置一个网络命名空间并启动一个在命名空间内侦听 127.0.0.1 的服务器:
# ip netns add vpn
# ip netns exec vpn ip link set dev lo up
# ip netns exec vpn nc -l -s 127.0.0.1 -p 80 &
# ip netns exec vpn netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 5598/nc
Run Code Online (Sandbox Code Playgroud)
之后,我可以连接到命名空间内的服务器:
# ip netns exec vpn nc 127.0.0.1 80 -zv
localhost [127.0.0.1] 80 (http) open
Run Code Online (Sandbox Code Playgroud)
但是我无法连接到命名空间之外的服务器:
# nc 127.0.0.1 80 …Run Code Online (Sandbox Code Playgroud)