You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下Firejail网络隔离配置后无法访问内网/互联网的问题求助

Ubuntu 20.04下Firejail网络隔离配置后无法访问内网/互联网的问题求助

大家好,我目前在Ubuntu 20.04上使用Firejail做网络隔离时遇到了棘手的问题——不管是配置访问公司内网的沙箱,还是访问互联网的沙箱,都无法正常连接网络。下面是详细的情况和我试过的操作,麻烦各位帮忙分析一下原因,或者给点可行的解决思路~

我的机器有两张网卡:

  • eno1:以太网网卡,用于访问公司内网
  • wlp0s20f3:Wi-Fi网卡,用于访问互联网

场景1:配置仅访问内网的沙箱

我执行了这条Firejail命令:

firejail --noprofile --nonewprivs --noroot --net=eno1  --hostname=intranet --name=intranet --debug --dns=AAA.BBB.CCC.DDD

(注:AAA.BBB.CCC.DDD是公司内网的DNS服务器地址)

现象:

  • 沙箱启动后,既无法访问内网,也无法访问互联网
  • 执行ip a能看到沙箱创建了虚拟网卡eth0-10765@if2(这不是我物理机上的真实网卡),相关输出如下:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
(...)
2: eth0-10765@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
(...)
  • ip route show的输出:
default via AAA.BBB.CCC.XXX dev eth0-10765
AAA.BBB.CCC.0/24 dev eth0-10765 proto kernel scope link src AAA.BBB.CCC.ZZZ

(注:XXX和ZZZ是不同的地址)

  • 沙箱启动日志的部分内容:
sbox run: /run/firejail/lib/fnet ifup eth0-10765
Set caps filter 3000

ARP-scan eth0-10765, AAA.BBB.CCC.39/24
IP address range from AAA.BBB.CCC.1 to AAA.BBB.CCC.255
Trying AAA.BBB.CCC.ZZZ ...
Configuring AAA.BBB.CCC.ZZZ address on interface eth0-10765
sbox run: /run/firejail/lib/fnet config interface eth0-10765 2886891220 4294967040 1500
Set caps filter 3000

Announce AAA.BBB.CCC.ZZZ ...
Network namespace enabled
sbox run: /run/firejail/lib/fnet printif
Set caps filter 3000

Interface        MAC                IP               Mask             Status
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

Default gateway AAA.BBB.CCC.XXX
DNS server QQQ.RRR.SSS.TTT

Drop privileges: pid 6, uid 1000, gid 1000, force_nogroups 0
Supplementary groups: 24

Mounting /proc filesystem representing the PID namespace
Basic read-only filesystem:
Mounting read-only /etc
1096 1048 259:6 /etc /etc ro,relatime master:1 - ext4 /dev/nvme0n1p6 rw,errors=remount-ro
  • 沙箱里没有ping命令,但打开浏览器后,既无法加载内网页面,也没有代理认证提示,完全无法连接网络。

场景2:配置仅访问互联网的沙箱

我尝试用Wi-Fi网卡创建沙箱,命令如下:

firejail --noprofile --nonewprivs --noroot --net=wlp0s20f3  --hostname=internet --name=internet --debug --dns=8.8.8.8 --caps.drop=all --dbus-system=none

现象:

  • 同样无法访问互联网,浏览器完全加载不出任何页面。

场景3:尝试直接将物理网卡移入沙箱

我还试过用--interface参数把物理网卡eno1直接移入沙箱,命令:

firejail --noprofile --interface=eno1  --hostname=intranet --ipc-namespace --name=intranet --debug

现象:

  • 物理机上确实看不到eno1网卡了,沙箱里能看到,但网卡状态是DOWN,而且没有默认网关,依然无法访问内网或互联网。
  • 沙箱启动日志的部分内容:
sbox run: /run/firejail/lib/fnet ifup lo
Set caps filter 3000

Configuring AAA.BBB.CCC.39 address on interface eno1
sbox run: /run/firejail/lib/fnet config interface eno1 2886891047 4294967040 1500
Set caps filter 3000

Network namespace enabled
sbox run: /run/firejail/lib/fnet printif
Set caps filter 3000

Interface        MAC                IP               Mask             Status
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

Drop privileges: pid 5, uid 1000, gid 1000, force_nogroups 0

Mounting /proc filesystem representing the PID namespace
Basic read-only filesystem:
Mounting read-only /etc
1097 1048 259:6 /etc /etc ro,relatime master:1 - ext4 /dev/nvme0n1p6 rw,errors=remount-ro

额外异常:systemd-resolve无法读取网卡信息

在沙箱里执行systemd-resolve时出现错误:

$ 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
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test                 Failed to get link data for 2: Unknown object '/org/freedesktop/resolve1/link/_32'.

我的猜想与需求

我怀疑这可能是Ubuntu对网络命名空间、网卡的处理方式,和Firejail的适配出了问题。我也考虑过换其他发行版,但如果能在当前环境解决最好。另外我对网络命名空间完全是新手,非常好奇怎么实现我的需求——用沙箱分别隔离访问内网和互联网的环境,不管用不用Firejail都可以,希望各位能给点指导。


系统与软件版本

  • 系统版本:
$ uname -a
Linux Ubuntu 5.15.0-69-generic #76~20.04.1-Ubuntu SMP Mon Mar 20 15:54:19 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
  • Firejail版本:
$ firejail --version
firejail version 0.9.73

Compile time support:
always force nonewprivs support is disabled
AppArmor support is disabled
AppImage support is enabled
chroot support is enabled
D-BUS proxy support is enabled
file transfer support is enabled
firetunnel support is disabled
IDS support is disabled
networking support is enabled
output logging is enabled
overlayfs support is disabled
private-home support is enabled
private-lib support is disabled
private-cache and tmpfs as user enabled
SELinux support is enabled
user namespace support is enabled
X11 sandboxing support is enabled

备注:内容来源于stack exchange,提问作者theRael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:12:58