我有这个本地网络服务和需要访问它的客户端程序。我以非特权用户身份运行它们。
我正在寻找一种使用 firejail 来沙箱客户端的方法,使其无法访问网络,除了本地主机(或者甚至更好,除了该服务)。我尝试的第一件事当然是
firejail --net=lo program
但这没有用。
Error: cannot attach to lo device
我想我可以通过创建一个虚拟网络接口(例如 veth0 和 veth1)来解决这个问题,将 veth1 移动到一个新的网络命名空间,我在其中运行服务并使用 firejail 将客户端限制为 veth0
有没有办法在 firejail 配置文件中实际自动化此设置,以便在我键入时创建所有这些接口并移动 veth1
firejail server
(无需以root身份运行任何东西)?
或者有更简单的方法解决这个问题吗? (我不能在同一个命名空间中同时运行客户端和服务,因为服务需要访问网络)
答案1
我会使用和选项类似:
firejail --interface=eth0.vlan100 --ip=someipaddress someprogram
Linux 内核 3.19 中引入了对 ipvlan 驱动程序的支持。
在这里找到:男子火狱|火狱