Systemd

如何阻止對 systemd 的網路訪問?

  • November 14, 2021

如何在作業系統級別使用任何網路介面或資源來隔離任何 systemd 程序?

概述

簡而言之,我想設置一個 Linux 網關。簡單的 NAT,轉發基於家庭的 LAN 網關……無需systemdsystemd-networkd訪問基於網路的介面。

基本原理

我不需要 systemd-network 或 NetworkManager(甚至systemd)以這種極簡模式訪問任何網路介面。

做了什麼?

我使用 Bind9、ISC DHCP、local/etc/resolv.confnftables滿足我所有的網路需求。僅將 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的系統。

引用自:https://unix.stackexchange.com/questions/591414