Jamesits / linux-gre-keepalive

High-performance passive (a.k.a. reply-only) GRE keepalive support for Linux, written in eBPF/XDP.
GNU General Public License v2.0
54 stars 8 forks source link

support PVE kernel ? #4

Open mickaelmonsieur opened 2 years ago

mickaelmonsieur commented 2 years ago

Hello,

I use your module with Debian 10 and it works perfectly. Today, i have installed a Debian 11 with PVE kernel (Proxmox 7)

Kernel installed:

pve-headers-5.15.39-1-pve - Proxmox Kernel Headers
pve-kernel-5.15.39-1-pve - Proxmox Kernel Image

My Mikrotik does not receive reply to keepalive packets and shut the tunnel. The log:

         <idle>-0       [007] d.s.1 19491.207150: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19491.207153: bpf_trace_printk: Packet size too small, dump failed

          <idle>-0       [007] d.s.1 19497.112120: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19497.112121: bpf_trace_printk: Packet header dump:

          <idle>-0       [007] d.s.1 19497.112122: bpf_trace_printk: #0: 45

          <idle>-0       [007] d.s.1 19497.112122: bpf_trace_printk: #1: 0

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #2: 0

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #3: 54

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #4: 9f

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #5: d0

          <idle>-0       [007] d.s.1 19497.112123: bpf_trace_printk: #6: 0

          <idle>-0       [007] d.s.1 19497.112124: bpf_trace_printk: #7: 0

          <idle>-0       [007] d.s.1 19497.112124: bpf_trace_printk: #8: 3f

          <idle>-0       [007] d.s.1 19497.112124: bpf_trace_printk: #9: 1

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #10: c6

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #11: 91

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #12: a

          <idle>-0       [007] d.s.1 19497.112125: bpf_trace_printk: #13: 1

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #14: 0

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #15: 1

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #16: a

          <idle>-0       [007] d.s.1 19497.112126: bpf_trace_printk: #17: 14

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #18: 1

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #19: 32

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #20: 0

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #21: 0

          <idle>-0       [007] d.s.1 19497.112127: bpf_trace_printk: #22: 22

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #23: 3e

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #24: e7

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #25: 32

          <idle>-0       [007] d.s.1 19497.112128: bpf_trace_printk: #26: 0

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #27: 3

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #28: 71

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #29: f3

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #30: de

          <idle>-0       [007] d.s.1 19497.112129: bpf_trace_printk: #31: 62

          <idle>-0       [007] d.s.1 19497.112130: bpf_trace_printk: Outer GRE flags=0x0 proto=3e22

          <idle>-0       [007] d.s.1 19497.112131: bpf_trace_printk: Unknown proto 3e22 inside GRE
          <idle>-0       [007] d.s.1 19498.113709: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19498.113710: bpf_trace_printk: Packet header dump:

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #0: 45

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #1: 0

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #2: 0

          <idle>-0       [007] d.s.1 19498.113711: bpf_trace_printk: #3: 54

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #4: 9f

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #5: d1

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #6: 0

          <idle>-0       [007] d.s.1 19498.113712: bpf_trace_printk: #7: 0

          <idle>-0       [007] d.s.1 19498.113713: bpf_trace_printk: #8: 3f

          <idle>-0       [007] d.s.1 19498.113713: bpf_trace_printk: #9: 1

          <idle>-0       [007] d.s.1 19498.113713: bpf_trace_printk: #10: c6

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #11: 90

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #12: a

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #13: 1

          <idle>-0       [007] d.s.1 19498.113714: bpf_trace_printk: #14: 0

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #15: 1

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #16: a

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #17: 14

          <idle>-0       [007] d.s.1 19498.113715: bpf_trace_printk: #18: 1

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #19: 32

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #20: 0

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #21: 0

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #22: bc

          <idle>-0       [007] d.s.1 19498.113716: bpf_trace_printk: #23: 36

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #24: e7

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #25: 32

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #26: 0

          <idle>-0       [007] d.s.1 19498.113717: bpf_trace_printk: #27: 4

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #28: 72

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #29: f3

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #30: de

          <idle>-0       [007] d.s.1 19498.113718: bpf_trace_printk: #31: 62

          <idle>-0       [007] d.s.1 19498.113719: bpf_trace_printk: Outer GRE flags=0x0 proto=36bc

          <idle>-0       [007] d.s.1 19498.113719: bpf_trace_printk: Unknown proto 36bc inside GRE
          <idle>-0       [007] d.s.1 19507.207046: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19507.207059: bpf_trace_printk: Packet size too small, dump failed

          <idle>-0       [007] d.s.1 19517.206954: bpf_trace_printk: New packet

          <idle>-0       [007] d.s.1 19517.206968: bpf_trace_printk: Packet size too small, dump failed

Thank for your help.

someonebw commented 1 year ago

其实Mikrotik的gre的keepalive包,处理的是有些问题的。

如果你安装Mikrotik的机器,之前我测试过7.x版本的都有问题的。 当 wan ip 不是一个真的公网ip(过nat的,都有问题。例如:你的公网ip是4.5.6.7,但是你的服务商给你做的nat,你实际wan ip配置的是192.168.5.15)

Mikrotik的gre的keepalive包的结构中 inner daddr 就是这个内网ip:192.168.5.15。而不是正确的4.5.6.7这个ip。(这个问题,也反馈给Mikrotik过,但是没有修改的意思)

someonebw commented 1 year ago

mickaelmonsieur 你可以对比下,之前可以的系统和不行系统的一些细节情况,例如:iproute2的版本,libbpf的版本,kernel的版本等。列举出来。 也许可以发现问题之所在。

someonebw commented 1 year ago

mickaelmonsieur 建议你试试看。 参考:(配置)

https://github.com/Jamesits/linux-gre-keepalive/issues/5