Прозрачный Ethernet через GRE не передает трафик

Я работаю на Linux 2.6.30.9 и пытаюсь настроить прозрачный Ethernet через GRE-туннель. Используемая топология сети:

введите описание изображения здесь

Я хочу сфокусировать PC1 и PC2 с помощью Transparent Ethernet через GRE. RouterA подключен к Интернету через ppp0 как RouterB. Оба интернет-соединения – PPPOE (PPPoEoA PVC).

Так я и делаю:

В RouterA (Linux 2.6.30.9):

ip link add testgre type gretap remote 193.152.243.206 local 95.121.205.77 ttl 255 brctl addif br0 testgre ip link set testgre up 

В RouterB (Linux 2.6.30.9):

 ip link add testgre type gretap remote 95.121.205.77 local 193.152.243.206 ttl 255 brctl addif br0 testgre ip link set testgre up 

Вывод некоторых команд:

В RouterA (аналогичный вывод в RouterB):

 # ip link show testgre 36: testgre: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1442 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 5f:79:cd:4d:c6:57 brd c1:98:f3:ce:ff:ff # brctl show bridge name bridge id STP enabled interfaces br0 8000.5f79cd4dc657 no eth0.5 eth0.4 eth0.3 eth0.2 wlan0 testgre 

Затем я делаю запрос PING с PC1 на PC2:

 ping 192.168.1.33 

Я запускаю tcpdump в RouterA, и я вижу рамку запроса ARP через ppp0 (файл pcap, открытый с помощью Wirehark):

введите описание изображения здесь

Я запускаю tcpdump в RouterB, подключенном к ppp1, и вижу, что ARP-запрос пришел, но его не переадресовали с L2 на PC2. Я не вижу запрос ARP в PC2.

Я пытаюсь использовать записи ARP статики, но запрос ICMP имеет ту же проблему, но не пересылается на PC2.

Не существует правил ebtables. Нормы iptables (действие по умолчанию – ACCEPT для ebtables и iptables). Должен ли я добавить ppp0 для интерфейса интерфейса или что-то в этом роде?

One Solution collect form web for “Прозрачный Ethernet через GRE не передает трафик”

Проблема была связана с вопросом, который я задал в ServerFault, IP / GRE, скомпилированном в ядре, но интерфейс gre0 не существует .

Я решил первый вопрос, позволив драйверу демультиплексора GRE в gre.c зарегистрировать обработчик протокола GRE в ядре. Но я обнаружил, что когда GRE-пакет прибывает, GRE-обработчик не указывает на какую- ip_gre.c функцию ip_gre.c (драйвер демультиплексора GRE должен проверить версию GRE в пакете и передать ведро правильному обработчику протокола, но в моем случае он указывает NULL) ,

Я прокомментировал фрагмент кода, где gre.c регистрирует обработчик протокола GRE, и я раскоментировал фрагмент кода, где ip_gre.c регистрирует обработчик протокола GRE. Теперь, когда прибывает пакет GRE, он отлично декапсулируется и переходит на следующий уровень, теперь я могу выполнить ping с PC1 на PC2 без каких-либо проблем. Я думаю, что эта проблема происходит со многими людьми во встроенных устройствах, потому что я искал в Google сообщение об ошибке «ipgre init: не могу добавить протокол», когда драйвер IP GRE не может запускаться, поскольку драйвер демультиплексора GRE еще не зарегистрировал обработчик GRE и я нашел несколько устройств с этой ошибкой.

  • Запись таблицы маршрутизации Linux исчезает
  • адрес источника, выбранный в случае нескольких адресов IPv4
  • Добавление маршрута из внутренней сети во внешнюю сеть
  • Маршрутизация в OpenVPN между частной сетью и клиентом
  • Маршрутизация с использованием второго интерфейса
  • Сделать сетевое устройство linux маршрутизатором
  • OpenVPN: нажмите маршрут к клиенту с другим шлюзом
  • Как узнать, какой интерфейс я использую для подключения к Интернету?
  • Почему используется основная таблица, поскольку я настроил маршрутизацию для использования настраиваемой таблицы маршрутизации?
  • «Ip route get» игнорирует таблицы, указанные в «правиле ip»,
  • Сброс TCP после SYN ACK, возможно, связанный с "no route to host"
  • Как удалить маршрут по умолчанию с помощью iproute2
  • Linux и Unix - лучшая ОС в мире.