Пересылка кадров Ethernet на интерфейс с использованием ebtables/ebtables отсутствует таблица маршрутизации
Сегодня я потратил много времени на то, чтобы выяснить, как это сделать, но не смог найти решения. На мой взгляд, это должно быть возможно. Я пытаюсь настроить следующую настройку:
Чтение интерфейса и пересылка наenp0s3
использование Go должно работать без проблем... Надеюсь. Если я сделаюping 10.0.0.10 -I tap1
Я вижу кадры эфира в приложении Go. (В настоящее время я использую https://github.com/songgao/water , но, вероятно, перейду на https://github.com/mdlayher/packet , если у меня это заработает)
Проблема, с которой я столкнулся, заключается в пересылке etherframes изenp0s8
кtap1
интерфейс. Я пробовал несколько команд, но это не работает. Я попробовал использоватьiptables
:
iptables -A FORWARD -i enp0s8 -o tap1 -j ACCEPT
и подобные команды.
Затем я нашел этот вопрос: Tap0 не получает трафик , где Шервуд Ван сказал следующее:
If you want to force tap0 to recieve its own IP packets, you may use ebtables. When packets are DROPed in the ethernet layer of tap0 at broute table, these packets go into the the IP layer of tap0 instead of eth0. See also: http://ebtables.sourceforge.net/examples/real.html#example1
Звучит именно то, что мне нужно. Кажется, я нашел здесь команду, которую он имеет в виду: https://ebtables.netfilter.org/examples/basic.html#ex_brouter .
ebtables -t broute -A BROUTING -p ipv4 -i tap1 --ip-dst 172.16.1.1 -j DROP
Однако я получаю следующую ошибку:ebtables: No chain/target/match by that name
. Если я посмотрюman ebtables
я не вижуbroute
упомянутая таблица. Хотя я вижу это здесь https://linux.die.net/man/8/ebtables . Так я что-то упускаю?
я тоже попробовалebtables -A FORWARD -i enp0s8 -o tap1 -j ACCEPT
с https://www.linuxquestions.org/questions/linux-networking-3/ebtables-to-setup-forwarding-and-ethernet-level-nat-4175538316/ , но это тоже не работает.