我使用这个脚本创建了一个 linux 命名空间:
read -p "ip : " ip
ip netns add myvpn
ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up
ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add $ip/24 dev vpn0
ip netns exec myvpn ip addr add $ip/24 dev vpn1
ip netns exec myvpn ip route add default via $ip dev vpn1
iptables -A INPUT \! -i vpn0 -s $ip/24 -j DROP
iptables -t nat -A POSTROUTING -s $ip/24 -o ens3 -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1
mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf
然而,我似乎在命名空间中没有完整的网络访问权限:
ip netns exec myvpn ping www.google.com
ping: www.google.com: Temporary failure in name resolution
实际上,我不知道“名称解析暂时失败”是什么意思......
有什么想法可以让这项工作成功吗?