如何将发送到 tap 的流量重定向到特定的 ip 地址

如何将发送到 tap 的流量重定向到特定的 ip 地址

我使用以下命令创建了一个 tap 设备:

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并且能够在 wireshark 监听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

但是,当我在 wireshark 上监听时,我仍然看到数据包是在设备上捕获的tap7,而不是从lo设备上捕获的。有人知道为什么吗?

答案1

您需要route_localnettap7接口启用 sysctl 选项。您应该能够使用命令完成此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请参阅此主题

希望这可以帮助

相关内容