我想知道是否有一种方法可以通过使用 Podman 运行的无根容器将它们从主机 1:1 映射到容器来公开一系列 UDP 端口。
虽然可用资源包含 TCP 端口的信息,但我无法找到有关 UDP 的信息。此外,podman port
在无根运行时似乎使用名称空间“魔法”而不是桥接器。
我想将主机 IPv4 地址的范围(例如 10000..20000 (UDP))映射到容器,作为相同的端口范围。
现在有了经典的虚拟机,人们就可以iptables
随意使用,但是有了slirp4netns这不是一个选择。
我怎样才能实现它,或者UDP实际上是不可能的,这是无根容器的硬限制?
答案1
在搜索东西时偶然发现了这一点,也许我可以提供帮助:
Podman 将无根网络工具切换为 rootlesskit(至少版本 >1.8)。
和
-p 35010-35013:35010-35013/udp
我明白了
DEBU[0000] rootlessport: time="2020-05-08T23:05:17Z" level=info msg="exposing ports [{35010 35010 udp } {35011 35011 udp } {35012 35012 udp } {35013 35013 udp }]"
所以它应该有效。
此外,更多本机网络模式(例如桥接)需要 root 才能工作(为容器创建网络设备)。