我有以下设置。机器上的应用程序A
创建一个IP
由接口捕获的数据包tun1
。我使用以下命令添加了路由:
sudo route add -host 10.129.131.220 tun1
。
然后我从文件描述符中读取数据包tun1
,并将其写入另一个UDP
具有目标地址的客户端套接字B
。我可以B
在机器上读取数据包。我在tshark
机器上进行了验证B
,其中tshark
显示了以下类型的输出。
1 0.000000000 10.129.131.170 → 10.129.131.220 UDP 51 34611 → 8080 Len=23
以及更多类似的行。
现在我想将这些数据包路由到机器 C(实际目标机器)。我在机器上IP
创建了一个接口,并将接收到的数据包写入机器。写入成功并显示值递增。tun1
B
B
watch -n 1 "ifconfig tun1"
RX packets
B
我已经通过设置启用了机器中的数据包转发
echo 1 > /proc/sys/net/ipv4/ip_forward
我的问题是,如何在机器中正确添加转发规则,B
以便IP packets
路由到机器而C
无需添加更多IP
标头。我认为再次写入tun1
设备(在 B 上)可能会起作用。但如何从路由tun1
到eth0
?
更新 :
现在,如何将下行数据包从机器路由C
到A
via B
?
谢谢!