在 Linux 中,您可以使用以下命令创建网络命名空间ip
。但您需要成为 root 才能运行该命令。但是,您仍然可以使用普通用户身份创建网络命名空间unshare -rUn
。使用此命令,新的网络命名空间将由受限用户命名空间拥有。
使用新的网络命名空间我无法连接到互联网。创建 veth 对需要 root,有没有办法让我的网络命名空间无需 root 即可连接到互联网?我知道许多功能(例如与命名空间共享物理网络)是不可能的。您可以像tun0
在受限网络命名空间中一样创建虚拟接口吗?
例如,使用普通用户拥有的网络命名空间,您可以在没有 root 的情况下运行 openvpn。
$ create-network-namespace
$ openvpn home.ovpn
$ google-chrome
答案1
我找到了解决方案,github上已经存在一个项目,它在命名空间中创建虚拟tap设备并在主机命名空间中使用套接字系统调用。每个通过TAP发送的数据包都会被转化为一个socket操作。