Systemd
如何阻止對 systemd 的網路訪問?
如何在作業系統級別使用任何網路介面或資源來隔離任何 systemd 程序?
概述
簡而言之,我想設置一個 Linux 網關。簡單的 NAT,轉發基於家庭的 LAN 網關……無需
systemd
或systemd-networkd
訪問基於網路的介面。基本原理
我不需要 systemd-network 或 NetworkManager(甚至
systemd
)以這種極簡模式訪問任何網路介面。做了什麼?
我使用 Bind9、ISC DHCP、local
/etc/resolv.conf
來nftables
滿足我所有的網路需求。僅將 systemd 用於啟動順序(正如它最初設計的那樣)。我禁用了以下與 systemd 網路相關的所有內容,除了 systemd 包本身(受此Yoon’s Blog 的啟發。
systemctl disable systemd-resolved.service systemctl stop systemd-resolved systemctl stop systemd-networkd.socket systemctl stop systemd-networkd systemctl stop networkd-dispatcher systemctl stop systemd-networkd-wait-online systemctl disable systemd-networkd.socket systemctl disable systemd-networkd systemctl disable networkd-dispatcher systemctl disable systemd-networkd-wait-online apt-get remove systemd-resolvconfd apt-get remove systemd-networkd apt-get remove openresolv apt-get purge netplan.io rm /etc/dhcp/dhclient-enter-hooks.d/resolved #ISC now updates resolv.conf
並安裝
apt-get install ifupdown
問題
我的問題是
nftables
防火牆真的不能在每個程序的基礎上阻止流量。如何
systemd
在作業系統級別使用任何網路介面隔離所有程序?也許是某種組資源限制器?筆記
拜託,不需要係統火焰戰。這是為了保留 systemd 的原始設計:最快的啟動。
冒著被否決的風險,如果您不想
systemd
訪問網路介面,請不要使用systemd
.多年來,我們已經看到 systemd-suite 吸收了越來越多的功能,其中一些需要網路訪問。正如你自己所說:它是章魚。並且 systemd-suite 不同程序的相互依賴關係常常令人驚訝(至少:對我來說)。這意味著如果您不遵循 systemd-suite 的流程,在幾次升級之後,您將需要重新測試和重新配置所有內容。
對於一個真正簡約的網關功能,我會看一個基於busybox的系統。