не может получать пакеты GRE на сыром сокете - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь написать программу, которая будет получать пакеты 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-адресу или интерфейсу, и это не помогло.

1 Ответ

0 голосов
/ 12 июля 2020

проблема была решена, когда я переместил другую сторону veth в новое сетевое пространство имен.

...