Я создал устройство для крана, используя следующие команды:
sudo ip tuntap add mode tap tap7
sudo ip link set tap7 up
sudo ip addr add 77.0.0.1/24 dev tap7
Теперь я использую программирование сокетов C ++ для записи пакетов в tap7
и я могу захватывать их с помощью wirehark, когда он слушает tap7
интерфейс.
Мне нужно создать правило, чтобы любой пакет, записанный в tap7
должен быть перенаправлен на ip 127.0.0.1
.
Я пробовал следующие команды:
sudo iptables -A PREROUTING -t nat -i tap7 -j DNAT --to 127.0.0.1
sudo iptables -A INPUT -i tap7 -j ACCEPT
Однако, когда я слушаю wirehark, я все еще вижу, что пакеты захватываются на tap7
и не захвачен из lo
устройство. Кто-нибудь знает почему?
Вам необходимо включить route_localnet
sysctl для tap7
интерфейс. Вы сможете сделать это с помощью sysctl -w net.ipv4.conf.tap7.route_localnet=1
команда, в зависимости от вашего дистрибутива.
route_localnet - BOOLEAN
Do not consider loopback addresses as martian source or destination
while routing. This enables the use of 127/8 for local routing purposes.
default FALSE
Дополнительная (краткая) информация о последствиях для безопасности route_localnet
можно найти в эта тема
Надеюсь это поможет