두 개의 openvpn 인스턴스(v2.4.6, udp 및 tcp)가 있는 젠투 라우터가 있고 매분마다 다음 로그 메시지가 계속 표시됩니다.
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
로그에 더 이상 스팸이 없습니다.