道之华而愚之始

发布于
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 配置默认 Javaplymouth

然后启用服务

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 图形界面添加开放的端口了。