未知のIPバージョン= 15のIPパケットを見る

未知のIPバージョン= 15のIPパケットを見る

2つの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バージョンのIPパケット= 15」を記録します。 そしてこのスレッド:

これは、サーバーとクライアント間の圧縮構成に違いがある場合に発生する一般的なエラーです。

答え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

ログにスパムはもうありません。

関連情報