我用 tcpdump 没看到 IPtables 丢弃数据包,我不知道为什么?

我用 tcpdump 没看到 IPtables 丢弃数据包,我不知道为什么?

我的 IPtables 规则正在阻止,apt update例如:

root@vpn:~# apt update
Ign:1 https://pkgs.tailscale.com/stable/ubuntu jammy InRelease
Ign:2 http://de.archive.ubuntu.com/ubuntu jammy InRelease
Ign:3 http://de.archive.ubuntu.com/ubuntu jammy-updates InRelease
Ign:1 https://pkgs.tailscale.com/stable/ubuntu jammy InRelease
Ign:4 http://de.archive.ubuntu.com/ubuntu jammy-backports InRelease
Ign:1 https://pkgs.tailscale.com/stable/ubuntu jammy InRelease
Ign:5 http://de.archive.ubuntu.com/ubuntu jammy-security InRelease
Err:1 https://pkgs.tailscale.com/stable/ubuntu jammy InRelease
  Temporary failure resolving 'pkgs.tailscale.com'
Ign:2 http://de.archive.ubuntu.com/ubuntu jammy InRelease
Ign:3 http://de.archive.ubuntu.com/ubuntu jammy-updates InRelease
Ign:4 http://de.archive.ubuntu.com/ubuntu jammy-backports InRelease
Ign:5 http://de.archive.ubuntu.com/ubuntu jammy-security InRelease
Ign:2 http://de.archive.ubuntu.com/ubuntu jammy InRelease
Ign:3 http://de.archive.ubuntu.com/ubuntu jammy-updates InRelease
Ign:4 http://de.archive.ubuntu.com/ubuntu jammy-backports InRelease
Ign:5 http://de.archive.ubuntu.com/ubuntu jammy-security InRelease
Err:2 http://de.archive.ubuntu.com/ubuntu jammy InRelease
  Temporary failure resolving 'de.archive.ubuntu.com'
Err:3 http://de.archive.ubuntu.com/ubuntu jammy-updates InRelease
  Temporary failure resolving 'de.archive.ubuntu.com'
Err:4 http://de.archive.ubuntu.com/ubuntu jammy-backports InRelease
  Temporary failure resolving 'de.archive.ubuntu.com'
Err:5 http://de.archive.ubuntu.com/ubuntu jammy-security InRelease
  Temporary failure resolving 'de.archive.ubuntu.com'
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
W: Failed to fetch http://de.archive.ubuntu.com/ubuntu/dists/jammy/InRelease  Temporary failure re                                                                                                                                                                                                                      solving 'de.archive.ubuntu.com'
W: Failed to fetch http://de.archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease  Temporary fa                                                                                                                                                                                                                      ilure resolving 'de.archive.ubuntu.com'
W: Failed to fetch http://de.archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease  Temporary                                                                                                                                                                                                                       failure resolving 'de.archive.ubuntu.com'
W: Failed to fetch http://de.archive.ubuntu.com/ubuntu/dists/jammy-security/InRelease  Temporary f                                                                                                                                                                                                                      ailure resolving 'de.archive.ubuntu.com'
W: Failed to fetch https://pkgs.tailscale.com/stable/ubuntu/dists/jammy/InRelease  Temporary failu                                                                                                                                                                                                                      re resolving 'pkgs.tailscale.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
root@vpn:~#

据我所知,它使用 80 或 443 传出,并使用ChainESTABLISHED中的状态。INPUT

这些是我的规则:

root@vpn:~# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

root@vpn:~# iptables -L -nv
Chain INPUT (policy DROP 320 packets, 22536 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
 5039  226K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
  127 22352 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain FORWARD (policy DROP 80 packets, 4160 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8759 packets, 869K bytes)
 pkts bytes target     prot opt in     out     source               destination
root@vpn:~#

在 tcpdump 中,当启用这些规则时,我几乎看不到任何流量,我甚至看不到服务器在尝试使用时尝试接触任何东西apt

我无法在 tcpdump 或日志中看到内核丢弃的任何东西。

25 packets captured
373 packets received by filter
292 packets dropped by kernel

从字面上理解,当这些规则生效时,tcdump 显示的唯一流量是通过端口 22 SSH 到我的 PC 的流量和一些 ARP 消息,没有其他内容。

如果我设置所有策略ACCEPT并清除所有链,一切都会正常,但我却不明白。

编辑3 添加了新的动画/Gif/Mp4 结合两种测试,并添加了 tcpdump 拆分视图。因此我的其他 Gif 不再需要,我从此帖子中删除了编辑 1 和 2。 防火墙_tcpdump_split_view

编辑4

这是我的路线,因为我被要求这样做。没有运行 Docker 或其他任何东西。VPN 一直处于关闭状态。如果需要更多详细信息,请询问更多详细信息。

但是你需要告诉我需要哪些细节,因为我不知道。

root@vpn:~# ip route
default via 192.168.178.1 dev ens18 proto static
192.168.178.0/24 dev ens18 proto kernel scope link src 192.168.178.49

答案1

您可能需要以下规则:

-A INPUT -i lo -j ACCEPT

这可能是因为您已将 systemd 解析的本地 DNS 存根侦听器列为您的(唯一)名称服务器/etc/resolv.conf

如果没有上述规则,您将无法访问在您自己的主机上运行的服务器,因为与与其他主机的通信不同,发起 / 的流量是由您自己的主机本身接收的。因此,在这种情况下,仅仅将链中的流量NEW列入白名单是不够的。ESTABLISHEDINPUT

不过,您可能会注意到,并不是每个程序的 DNS 解析都失败了,因为当您运行时systemd-resolved,列出的名称服务器/etc/resolv.conf并不是唯一可用于完成工作的东西。请参阅systemd-resolved.service(8)更多细节。

相关内容