我的家庭服务器运行的是 Ubuntu(安装了桌面环境)。它托管了几个 Docker 容器,用于一些由 Web 界面管理的服务(Transmission、Sickrage、Openhab、Unifi 控制器等)。
根据偏好,我使用以下方式实现容器的联网:
--net=macvlan
--ip=192.168.0.211
这样,我就没有端口问题了(第一个安装在端口 8080 上,然后下一个也默认使用 8080,但是我需要改成 8081,但是我想安装一个默认有 8081 的新服务,但是我仍然需要将它改成其他的...),在这里,我只需为下一个服务获取下一个可用的 IP 地址,然后就好了。
当谈到外部访问时,出于安全原因,我只打开了一个端口,用于从外部通过 SSH 访问我的家庭服务器,然后通过隧道,我也可以使用 VNC 访问。
我的问题:我可以从本地网络中的任何计算机(家庭服务器本身除外)访问我的容器 Web 界面。容器也可以相互访问。在家里,这不是什么大问题,但从外面访问时,就会出现问题。
因此,我无法使用我的 VNC 访问来管理这些服务。
我该如何解决这个问题?
答案1
我需要创建一个实际上与 macvlan 桥接的新网络接口:
ip link add mac0 link enp3s0 type macvlan mode bridge
ip addr add 192.168.0.199/24 dev mac0
ifconfig mac0 up
命令需要提升的权限。
一切都立刻好起来了。