不久前,我的以太网卡出现了一些问题,不得不彻底重置我的网络配置(我不得不重写并重新加载一个新的 netplan.yaml,它使用网络管理器)
这个问题的副作用(我想,这可能是我尝试的另一个修复方法导致的)是我无法再访问互联网。解决方案提供在如何彻底重置 ubuntu 网络设置?是刷新 iptables 规则,这确实有效,但只是一个“临时修复”,因为我和原始线程中的用户 joe_inz 一样,必须在每次启动时都执行此操作(这并不方便)。
sudo iptables -L
这是每次启动时的输出:
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere
DROP all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere
DROP all -- anywhere anywhere
正如你所见,它基本上阻止了一切
在深入了解了 iptables 是什么之后(同时也了解到为什么没有规则不是一个好主意),我采用了这里提供的“初学者”规则集https://doc.ubuntu-fr.org/iptables,安装 iptables-persistent,并保存在 /etc/iptables/rules.v4 中
以下是第一次导入后的规则(以及它们如何应该看起来像) :
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere PKTTYPE = multicast
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:FIN,PSH,URG/FIN,PSH,URG
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:SYN,RST/SYN,RST
DROP all -- anywhere anywhere PKTTYPE = broadcast
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
LOG all -- anywhere anywhere LOG level warning
Chain FORWARD (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ! ctstate INVALID
然而,重启后,我和以前一样无法访问互联网,所以我重新检查了规则,它们看起来像这样:
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere
DROP all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere PKTTYPE = multicast
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:FIN,PSH,URG/FIN,PSH,URG
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
DROP tcp -- anywhere anywhere ctstate INVALID tcp flags:SYN,RST/SYN,RST
DROP all -- anywhere anywhere PKTTYPE = broadcast
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
LOG all -- anywhere anywhere LOG level warning
Chain FORWARD (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
Chain OUTPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere
DROP all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ! ctstate INVALID
毫无理由地,再次丢弃每一个数据包的规则
iptables-restore
至少恢复了我在线获取的规则集,这比没有要好得多(所以我会使用它而不是像以前那样完全刷新),但是有谁知道为什么我的笔记本电脑默认会丢弃所有内容以及如何解决这个问题?
附言:此外,如果您能提供关于如何微调这套规则的任何建议,我将非常欢迎,因为拥有坚固的防火墙并非微不足道。
PPS:我使用的是 Ubuntu 20.04,如果这有什么不同的话
答案1
好吧,这个问题似乎已经通过最近的 iptables-persistent 更新自行修复了,但我甚至不确定。我只是想说它现在恢复正常了