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

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

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

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 通过 192.168.0.1 dev tun0 table myinternal 添加默认

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

iptables -A FORWARD -i eth0 -o tun0 -j 接受

iptables -A FORWARD -i tun0 -o eth0 -j 接受

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

我已使用 systl 启用 ipv4 转发。

cat /proc/sys/net/ipv4/ip_forward

1

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

答案1

我知道已经过去六年了,但如果有人在这里遇到类似的问题:这听起来像是反向路径过滤器‘rp_filter’流量下降。

来自链接:

  • 记录 rp_filter 丢弃的流量:

echo 1 >/proc/sys/net/ipv4/conf/(接口名称)/log_martians

  • 禁用rp_filter:

echo 0 >/proc/sys/net/ipv4/conf/(接口名称)/rp_filter

相关内容