【发布时间】:2014-06-09 13:29:40
【问题描述】:
我是网络编程的新手,并尝试了解如何通过 TUN/TAP 接口管理流量。
因为我几乎不具备系统编程技能,并且对 Java 有信心;我使用 OpenVPN tun/tap 驱动程序和现成的 Java 绑定。它适用于 TAP 模式。
作为一个示例应用程序,我试图模拟无加密、无身份验证客户端服务器 VPN 应用程序。
我可以捕获以太网帧数据包,但是对于路由部分,我失败了。 (我可以修改路由/arp 表。)
有人知道 OpenVPN 如何将数据包从客户端发送到服务器,然后从服务器发送到目标。从 Java 中打开套接字看起来像是另一种选择;但我希望修改数据包(更改 IP 和/或 MAC 地址)并写回虚拟分路接口就足够了。是这样吗?
我可以注入数据包以发送其他位置,或者默认情况下接收到的数据包移动到应用层吗?
-- 编辑:
情景
Client Tap0 _____ Server Tap0 ______ Target
Eth0 Eth0
目标:从客户端 Ping,通过点击接口移动,目标只看到服务器 ip(匿名化)
到目前为止我所取得的成就。
在客户端 tap0 接口捕获流量。
我无法在服务器上转发流量 Tap 所以为了固定我在客户端-服务器之间使用 Java 套接字编程的东西。
现在我从服务器的套接字读取数据包,并尝试使用 OpenVPN Tap 驱动程序的写入方法继续前进,但我不确定我在哪里失败。我在服务器 tap0 上看到带有 tcpdump 的数据包,但它们没有传递到服务器 eth0。
我最重要的问题是如果我修改数据包(ip,mac地址)并调用write方法,数据包是否有可能向前移动。 (或者无论你改变什么,它都会移动到应用层??)
任何帮助将不胜感激。
【问题讨论】:
-
你想要达到什么目的?
-
"我使用 OpenVPN tun/tap 驱动"你使用什么操作系统?
标签: networking routing vpn openvpn network-traffic