这也是未解答问题的情况DNS 在 firejail 中不起作用
所有敏感信息均已修改为一组三个或两个字母(AAA 等或 XX)
案例是:我在设备 eno1 上有一个以太网连接,我将用它来访问公司的内部网,在设备 wlp0s20f3 上有一个 Wi-Fi 连接,我将用它来访问互联网。
如果我运行firejail --noprofile --nonewprivs --noroot --net=eno1 --hostname=intranet --name=intranet --debug --dns=AAA.BBB.CCC.DDD
,其中 AAA.BBB.CCC.DDD 是我公司的 DNS 服务器,但我无法上网,也无法获得内联网,尽管ip a
显示:
1:lo:<LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状态 UNKNOWN 组默认 qlen 1000 (...)
2:eth0-10765@if2:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 状态 UP 组默认 qlen 1000 (...)
这个“eth0-10765@if2”不是Ubuntu裸机网卡之一。
ip route show
输出:
默认通过 AAA.BBB.CCC.XXX dev eth0-10765 AAA.BBB.CCC.0/24 dev eth0-10765 proto 内核范围链接 src AAA.BBB.CCC.ZZZ
ZZZ 显示的号码与‘默认通过’ (XXX) 不同。
这是沙盒“启动”输出的一部分:
sbox 运行:/run/firejail/lib/fnet ifup eth0-10765 设置 caps 过滤器 3000 ARP 扫描 eth0-10765,AAA.BBB.CCC.39/24 IP 地址范围从 AAA.BBB.CCC.1 到 AAA.BBB.CCC.255 尝试 AAA.BBB.CCC.ZZZ... 在接口 eth0-10765 上配置 AAA.BBB.CCC.ZZZ 地址 sbox 运行:/run/firejail/lib/fnet config 接口 eth0-10765 2886891220 4294967040 1500 设置 caps 过滤器 3000 宣布 AAA.BBB.CCC.ZZZ... 网络命名空间已启用
sbox 运行:/run/firejail/lib/fnet printif 设置 caps 过滤器 3000 接口 MAC IP 掩码状态 lo 127.0.0.1 255.0.0.0 UP
::1 eth0-10765 XX:XX:XX:XX:XX:XX AAA.BBB.CCC.ZZZ 255.255.255.0 UP
XX::XX:XX:XX:XX 默认网关 AAA.BBB.CCC.XXX DNS 服务器 QQQ.RRR.SSS.TTT
删除权限:pid 6、uid 1000、gid 1000、force_nogroups 0 补充组:24 挂载代表 PID 命名空间的 /proc 文件系统 基本只读文件系统:挂载只读 /etc 1096 1048 259:6 /etc /etc ro,relatime master:1 - ext4 /dev/nvme0n1p6 rw,errors=remount-ro
ping 命令不可用,但我可以运行任何浏览器,并且没有任何互联网/内联网/代理身份验证消息。
另一方面,如果我设置了一个沙箱仅使用 Wi-Fi 工作,因此需要互联网连接,使用该命令$ firejail --noprofile --nonewprivs --noroot --net=wlp0s20f3 --hostname=internet --name=internet --debug --dns=8.8.8.8 --caps.drop=all --dbus-system=none
我在浏览器上仍然无法连接任何互联网!
我甚至尝试使用命令将接口移至沙盒。
firejail --noprofile --interface=eno1 --hostname=intranet --ipc-namespace --name=intranet --debug
它确实从裸机系统中删除了接口并使其可用于沙盒,但没有互联网或默认网关!这是沙盒“启动”的摘录:
sbox 运行:/run/firejail/lib/fnet ifup lo 设置 caps 过滤器 3000 在接口 eno1 上配置 AAA.BBB.CCC.39 地址 sbox 运行:/run/firejail/lib/fnet config interface eno1 2886891047 4294967040 1500 设置 caps 过滤器 3000 网络命名空间已启用
sbox 运行:/run/firejail/lib/fnet printif 设置 caps 过滤器 3000 接口 MAC IP 掩码状态 lo 127.0.0.1 255.0.0.0 UP
::1 eno1 XX:XX:XX:XX:XX:XX AAA.BBB.CCC.39 255.255.255.0 DOWN
删除权限:pid 5、uid 1000、gid 1000、force_nogroups 0 挂载代表 PID 命名空间的 /proc 文件系统 基本只读文件系统:挂载只读 /etc 1097 1048 259:6 /etc /etc ro,relatime master:1 - ext4 /dev/nvme0n1p6 rw,errors=remount-ro
另一件奇怪的事情是,在沙箱内部,systemd-resolve 似乎无法读取 eno1 的信息:
$ sudo systemd-resolve --status --no-pager
Global LLMNR setting: no MulticastDNS setting: no DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa 168.192.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa corp
dfip6.arpa
家庭
内部内
联网局域网
本地
私人
测试
无法获取 2 的链接数据:未知对象“/org/freedesktop/resolve1/link/_32”。
所有这些情况让我认为 Ubuntu 处理命名空间、网络和接口的方式以及 firejail 处理这些的方式存在问题。如果我能确定这种操作可行,我可以使用其他发行版。另一方面,我对命名空间完全是个新手,但非常好奇和感兴趣,如果您能提示我如何使用我的设置运行我愿意运行的内容(带或不带 firejail),那就太好了。
更多信息:
$ uname -a
Linux Ubuntu 5.15.0-69-通用#76~20.04.1-Ubuntu SMP 星期一 3 月 20 日 15:54:19 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
$ firejail --version
firejail 版本 0.9.73
编译时支持:
- 总是强制禁用 nonewprivs 支持
- AppArmor 支持已禁用
- 已启用 AppImage 支持
- 已启用 chroot 支持
- 已启用 D-BUS 代理支持
- 已启用文件传输支持
- firetunnel 支持已禁用
- IDS 支持已禁用
- 网络支持已启用
- 输出日志记录已启用
- overlayfs 支持已禁用
- 已启用私人住宅支持
- private-lib 支持已禁用
- 用户启用 private-cache 和 tmpfs
- 已启用 SELinux 支持
- 已启用用户命名空间支持
- 已启用 X11 沙盒支持