将 IP 数据包转发到隧道设备

Ash*_*win 5 forwarding ip-routing tun policy-routing tunnel

我已经使用创建了一个隧道设备

ip tuntap 添加 dev tun0 模式 tun 用户 0 组 0

然后我给它分配一个 ip 地址 192.168.0.1/22

ifconfig tun0 192.168.0.1 网络掩码 255.255.252.0

在我的以太网设备 eth0 上,我从 IP 地址范围 192.168.1.2-192.168.1.5 中的机器接收数据包。我希望这些数据包在隧道设备上转发。我不希望在以太网和隧道设备之间建立桥梁。因此,我在路由表中添加了路由条目,如下所示。

ip 规则添加从 192.168.1.0/24 查找 myinternal

ip route add default via 192.168.0.1 dev tun0 table myinternal

我已刷新(删除)所有 ip 表条目。但是有两个条目

iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

当我在 tun0 上执行 tcpdump 时,我看不到来自 eth0 的数据包。但是,当我在 eth0 上执行 tcpdump 时,我可以看到数据包。我想知道如何在 tun0 上转发/捕获这些数据包。从 tun0 以后,我想处理这些数据包并从我的应用程序回复它们,如果需要,将它们传递到另一个接口。我无法将 eth0 用于我的活动。

我已经使用 systl 为 ipv4 启用了转发。

cat /proc/sys/net/ipv4/ip_forward

1

此外,我的主路由表中没有默认路由条目。