GitLab 在桥接接口上与 SSHD 共存

GitLab 在桥接接口上与 SSHD 共存

背景

我正在尝试将服务器从使用 Docker 转换为 Podman。到目前为止,我已经能够将所有服务(总共 15 个)转换为 systemd 作业并毫无问题地运行它们。在此过程中,我创建了一个桥接设备 ( ) 并向其br0添加了物理接口 ( eno1) 和 pod 的接口。使用驱动程序veth将另一个运行的容器bind连接到桥macvlan。到目前为止,一切都按照我的预期运行。

问题

现在,我尝试在容器中启动 GitLab,并希望使用标准端口 22 和 443。由于这些端口低于 1024,我必须以 root 身份调用此容器,然后切换到其他用户(官方容器gitlab-ce)总共使用 8 个不同的用户)。每当我尝试启动容器时,我都会收到以下错误:

podman[1161766]: Error: cannot listen on the TCP port: listen tcp4 :22: bind: address already in use

这让我感到困惑,因为我已经将 sshd 配置为仅侦听特定br0IP 地址(物理主机具有 /24 地址 >= 100,容器具有 4 到 99 之间的 /24 地址):

ListenAddress 192.168.1.104

然后使用 netstat 进行验证:

tcp        0      0 192.168.1.104:22        0.0.0.0:*               LISTEN      695475/sshd

容器被配置为以与主机系统不同的 MAC ( FE:ED:DE:AD:BE:EF) 和 IP ( ) 启动。192.168.1.15

问题

还有什么会使用端口 22?

如果失败了,鉴于 netstat 仅显示使用端口 22 的 sshd,我将如何找到罪魁祸首?

据我所知,这应该有效。即使容器在内部切换到非根用户,OCI 运行时也是从根上下文调用的,因此,当它尝试配置网络接口时,它应该能够绑定到端口。 DNS 容器进一步验证了这一点,该容器能够毫无问题地绑定到端口 53。

相关内容