创建具有完全网络访问权限的网络命名空间

创建具有完全网络访问权限的网络命名空间

我使用这个脚本创建了一个 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

实际上,我不知道“名称解析暂时失败”是什么意思......

有什么想法可以让这项工作成功吗?

相关内容