Debian 桌面环境配置防火墙
夫礼者,忠信之薄,而乱之首。 前识者,道之华,而愚之始。 是以大丈夫处其厚,不居其薄; 处其实,不居其华。 故去彼取此。
Debian 桌面启动本地开发服务器,发现同局域网的手机无法访问。一开始以为是 PC 是有线网,手机是无线网,但是切换到 为 Windows 是可以连通的。所以多半应该是防火墙的问题。
网上搜了一圈,大多是 iptables 和 UFW,其实是过时的文档。
iptables
一开始用普通用户直接敲 iptables ,提示未找到命令,因为需要切换到 root 用户。
开启本地的 3000 端口,允许入站的流量
sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
以及以前在服务器上用的 接受 ACCEPT 所有流量
ip6tables -P INPUT ACCEPT # 处理输入数据包
ip6tables -P FORWARD ACCEPT # 处理输出数据包
ip6tables -P OUTPUT ACCEPT # 处理转发数据包
ip6tables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -L # 查看已配置的规则
iptables -F # 刷新选定的链(如果未指定,则为表中的所有链)。这相当于逐个删除所有规则。
发现都不起效果。
nftables
所以 Debian 默认的防火墙到底是什么呢?最终还是在 iptables 这一篇里看到:
注意:从 Debian 10 Buster 开始,iptables 已替换为 nftables
发现我本机已经有 nftables 了,并且安装了 firewall-config 在图形界面配置了开放端口,还是没效果。
可能是不知何时动了默认值了,修改会来 Debian 10 Buster 开始的默认值:
update-alternatives --set iptables /usr/sbin/iptables-nft
update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
update-alternatives --set arptables /usr/sbin/arptables-nft
update-alternatives --set ebtables /usr/sbin/ebtables-nft
之前用过 update-alternatives 配置默认 Java 和 plymouth
然后启用服务
systemctl enable nftables.service
service nftables status
返回
○ nftables.service - nftables
Loaded: loaded (/lib/systemd/system/nftables.service; enabled; preset: enabled)
Active: inactive (dead)
Docs: man:nft(8)
http://wiki.nftables.org
终于是可以了。

后续可以在 firewall-config 图形界面添加开放的端口了。