我的本地网络中有一些带有 Firefox 的 docker 容器,它们在不同的端口上运行,比如 5801、5802 等。为了只能访问请求启动的设备,我使用了以下命令:
iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 5801 -j DROP
其中1.2.3.4
是用户 IP。
但是现在我已经为这些容器创建了域名。它们工作正常,但现在任何人都可以连接到任何容器。所以我的问题是,我如何只允许一个用户访问一个域并删除其他所有用户?
例如:
- 用户1发射容器1使用域名
sub1.domain.example
- 用户2发射容器2使用域名
sub2.domain.example
和用户1应该只能访问sub1.domain.example
;用户2- 仅限sub2.domain.example
。
我已经尝试使用 ipset,但得到以下结果:
ipset v6.23: Cannot open session to kernel.
我的服务器是 Synology NAS。
答案1
您在错误的层上解决了这个问题。不要尝试在 IP 层上解决它。在大多数情况下,这样做不够灵活。
在您服务的应用程序中实现某种身份验证,可以直接实现,也可以在前面进行某种身份验证,例如oauth2-代理。
如果您实现了适当的前端,您甚至可以拥有example.com
,并根据权限在后台重定向用户。