自从我上次摆弄防火墙规则以来已经有很多年了。我记得用于输入、转发和输出的 iptables 链以及它们的各种规则。但时代已经改变,今天 iptables 是一个遗留接口。我听说过 nft 和 ufw,但不太找到我的路。
我想非常简单:让我的机器上的应用程序能够接受某个 TCP 端口(例如 5123)上的连接。当然,我希望这种情况在重新启动后仍然存在;我想使用其他应用程序或服务通常使用的任何机制。
这样做的“正确方法”、惯用方法是什么?
假设答案是特定于发行版的:我正在使用 Devuan Chimaera,即没有 systemd 的 Debian 11。
答案1
由于您使用的是 Debian 11,推荐的方式确实是 nftables。 Nftables 将其配置保存在单个文件中:/etc/nftables.conf,然后在启动时读取该文件。
Debian 附带的配置示例/usr/share/doc/nftables/examples/
可能会对您有所帮助。
您可能会发现也有帮助的外部参考:
直接回答你的问题:
# apt install nftables
# service nftables start
# nft add rule inet filter input tcp dport 5123 ct state new,established accept
一旦在 sysvinit 或 openrc 中激活 nftables,它在没有 systemd 的情况下也可以正常工作。