看到未知 IP 版本=15 的 IP 数据包

看到未知 IP 版本=15 的 IP 数据包

我有一个带有两个 openvpn 实例(v2.4.6、udp 和 tcp)的 gentoo 路由器,每分钟我总是看到以下日志消息:

Sep 12 15:42:50 lowpower2 openvpn[6505]: IP packet with unknown IP version=15 seen
Sep 12 15:42:50 lowpower2 openvpn[18725]: IP packet with unknown IP version=15 seen
Sep 12 15:43:51 lowpower2 openvpn[6505]: IP packet with unknown IP version=15 seen
Sep 12 15:43:51 lowpower2 openvpn[18725]: IP packet with unknown IP version=15 seen
Sep 12 15:44:53 lowpower2 openvpn[6505]: IP packet with unknown IP version=15 seen
Sep 12 15:44:53 lowpower2 openvpn[18725]: IP packet with unknown IP version=15 seen

例如,在 tun1 (tcp) 服务器端,当 VPN 未使用时,即没有客户端连接,使用 tcpdump 我看到以下内容:

lowpower2 ~ # tcpdump -n -X -i tun1
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun1, link-type RAW (Raw IP), capture size 262144 bytes
15:37:42.981853 unknown ip 15
        0x0000:  ffff ffff ffff 0000 0000 0000 88a2 1000  ................
        0x0010:  ffff ff01 0000 0000 0000 0000 0000 0000  ................
15:38:44.421849 unknown ip 15
        0x0000:  ffff ffff ffff 0000 0000 0000 88a2 1000  ................
        0x0010:  ffff ff01 0000 0000 0000 0000 0000 0000  ................
15:39:45.861854 unknown ip 15
        0x0000:  ffff ffff ffff 0000 0000 0000 88a2 1000  ................
        0x0010:  ffff ff01 0000 0000 0000 0000 0000 0000  ................

这是udp的服务器配置

user nobody
group nobody

port 563
proto udp
multihome
dev tun0
persist-key
persist-tun

ca /etc/openvpn/server-multi/ca.crt
cert /etc/openvpn/server-multi/lowpower2.crt
key /etc/openvpn/server-multi/lowpower2.key
dh /etc/openvpn/server-multi/dh2048.pem
tls-auth /etc/openvpn/server-multi/ta.key 0

cipher AES-256-CBC
auth SHA512

ifconfig-pool-persist /etc/openvpn/server-udp-multi/ipp.txt

server 192.168.20.0 255.255.255.0
push "route 192.168.0.0 255.255.255.248"
push "route 192.168.11.0 255.255.255.0"
push "route 192.168.12.0 255.255.255.0"
push "route 192.168.13.0 255.255.255.0"
push "route 192.168.14.0 255.255.255.0"

keepalive 10 60
verb 3
max-clients 10

这是tcp的服务器配置

user nobody
group nobody

port 1494
proto tcp-server
dev tun1
persist-key
persist-tun

ca /etc/openvpn/server-multi/ca.crt
cert /etc/openvpn/server-multi/lowpower2.crt
key /etc/openvpn/server-multi/lowpower2.key
dh /etc/openvpn/server-multi/dh2048.pem
tls-auth /etc/openvpn/server-multi/ta.key 0

cipher AES-256-CBC
auth SHA512

ifconfig-pool-persist /etc/openvpn/server-tcp-multi/ipp.txt

server 192.168.21.0 255.255.255.0
push "route 192.168.0.0 255.255.255.248"
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.11.0 255.255.255.0"
push "route 192.168.12.0 255.255.255.0"
push "route 192.168.13.0 255.255.255.0"
push "route 192.168.14.0 255.255.255.0"

keepalive 10 60
verb 3
max-clients 10

这是使用标志:

Installed versions:  2.4.6(08:40:56 PM 09/11/2018)(iproute2 ssl -down-root -examples -inotify -libressl -lz4 -lzo -mbedtls -pam -pkcs11 -plugins -selinux -static -systemd -test KERNEL="linux" USERLAND="-BSD")

这是内核:

Linux lowpower2 4.14.65-gentoo #3 SMP Thu Sep 6 22:05:43 CEST 2018 x86_64 Intel(R) Atom(TM) CPU D425 @ 1.80GHz GenuineIntel GNU/Linux

这是因为什么原因呢?它是什么类型的数据包?是否可以在不降低详细级别的情况下消除警告消息?

答案1

编辑
这个问题过去是,为什么我会出现这些错误,而不是我如何解决问题。我留下我的答案,因为它可能对其他人有用。
编辑结束
根据这篇文章OpenVPN 记录“未知 IP 版本 = 15 的 IP 数据包”这个线程

当服务器和客户端之间的压缩配置存在差异时,这是一个常见错误。

答案2

这些错误与 openvpn 服务器和客户端之间的压缩配置差异无关,因为它们之间没有交互。

根据这篇文章https://www.toofishes.net/blog/openvpn-and-aoe-interaction/这些错误消息仅由 AoE 内核模块触发。

答案3

我有一个类似的问题,ARP 广播帧被“推送”到 tun 接口,在 tcpdump 中看起来像这样:

20:30:01.461071 unknown ip 15
0x0000:  ffff ffff ffff 0000 0000 0000 0806 0001  ................
0x0010:  0800 0604 0001 0000 0000 0000 0a09 0002  ................
0x0020:  0000 0000 0000 0a09 00bd

unknown physical layer type 0xfffe

来源是 ntopng 的新网络发现“功能”。非常感谢“开发者”:)

结果我的日志充满了这样的消息:

message repeated 504 times: [ server/<ip>:<port> IP packet with unknown IP version=15 seen]

不幸的是,netfilter 在那里似乎完全没用。 tun 接口是 Level 3,剩下的是 ip v4 表和 ip v6 表,但 netfilter 中没有 ip v15 表,对吧?默认情况下,所有这些垃圾都会通过 netfilter。伤心。因此,如果不添加一些 C 代码(抱歉今天不行),netfilter 似乎无能为力。

甚至 XDP 看起来也不像是一个选择。至少我从未将它用于传出数据包,并且无论如何它也需要一些编码。

我唯一能想到的是出口 qdisc:

:~# tc qdisc add dev tun1 clsact
:~# tc filter add dev tun1 egress prio 1 u32 match u8 0xf0 0xf0 at 0 action drop

它似乎仍然与我的内核一起正常工作:

:~# tc -s -d filter show dev tun1 egress
filter protocol all pref 1 u32 chain 0
filter protocol all pref 1 u32 chain 0 fh 800: ht divisor 1
filter protocol all pref 1 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 terminal flowid ??? not_in_hw
  match f0000000/f0000000 at 0
        action order 1: gact action drop
        Action statistics:
        Sent 1536 bytes 12 pkt (dropped 12, overlimits 0 requeues 0)
        backlog 0b 0p requeues 0

日志中不再有垃圾邮件。

相关内容