Я пытаюсь написать программу, которая будет получать пакеты GRE через IPv4.
Это мой python код:
from socket import socket, AF_INET, SOCK_RAW, IPPROTO_GRE
s = socket(AF_INET, SOCK_RAW, IPPROTO_GRE)
msgAndAddress = s.recvfrom(1024)
print("got message");
Я запускаю программу, а затем другую программу который отправляет пакет GRE на тот же компьютер через пару veth. Это результат tcpdump на принимающей стороне veth при отправке пакета:
22:00:07.250726 da:1d:20:cc:b1:5f > 2a:59:3c:6f:14:9c, IPv4, length 176: (tos 0x0, ttl 1, id 42963, offset 0, flags [DF], proto GRE (47), length 162)
10.254.1.6 > 10.254.3.0: GREv0, Flags [key present], key=0x96040000, proto TEB (0x6558), length 142
84:40:76:00:00:01 > 55:01:02:00:01:00, IPv4, length 134: (tos 0x0, ttl 1, id 1, offset 0, flags [none], proto Options (0), length 20)
1.2.2.1 > 1.2.2.2: ip-proto-0 0
, но код python ничего не печатает. Я также попытался привязать сокет к указанному c IP-адресу или интерфейсу, и это не помогло.