作为普通用户的网络命名空间

作为普通用户的网络命名空间

在 Linux 中,您可以使用以下命令创建网络命名空间ip。但您需要成为 root 才能运行该命令。但是,您仍然可以使用普通用户身份创建网络命名空间unshare -rUn。使用此命令,新的网络命名空间将由受限用户命名空间拥有。

使用新的网络命名空间我无法连接到互联网。创建 veth 对需要 root,有没有办法让我的网络命名空间无需 root 即可连接到互联网?我知道许多功能(例如与命名空间共享物理网络)是不可能的。您可以像tun0在受限网络命名空间中一样创建虚拟接口吗?

例如,使用普通用户拥有的网络命名空间,您可以在没有 root 的情况下运行 openvpn。

$ create-network-namespace
$ openvpn home.ovpn
$ google-chrome

答案1

我找到了解决方案,github上已经存在一个项目,它在命名空间中创建虚拟tap设备并在主机命名空间中使用套接字系统调用。每个通过TAP发送的数据包都会被转化为一个socket操作。

https://github.com/rootless-containers/slirp4netns

相关内容