![取消共享并将端口转发到命名空间](https://linux22.com/image/792192/%E5%8F%96%E6%B6%88%E5%85%B1%E4%BA%AB%E5%B9%B6%E5%B0%86%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E5%88%B0%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4.png)
我正在尝试unshare
更好地理解容器。作为普通用户,是否可以创建一个命名空间,让程序可以监听端口,123
并在“主”命名空间上将端口1234
重定向到该命名空间?
我猜应该是,因为 Podman 是无根容器引擎,可以做到这一点。查看了man veth
也没用。
答案1
Podman 的工作原理是slirp4netns管理水龙头设备在非特权容器内。摘自 slirp4netns 的 README:
从 Linux 3.8 开始,非特权用户可以创建
network_namespaces(7)
。user_namespaces(7)
但是,非特权网络命名空间并不是很有用,因为veth(4)
在主机和网络命名空间之间创建对仍然需要 root 权限。(即没有互联网连接)slirp4netns 允许以完全非特权的方式将网络命名空间连接到 Internet,方法是将网络命名空间中的 TAP 设备连接到用户模式 TCP/IP 堆栈(“slirp”)。
为了实现您的目标,您需要做一些类似的事情。