我已经使用创建了一个隧道设备
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