4

我正在尝试在 Linux 中打开一个 TUN 设备(希望最终在 Java 应用程序中)。由于我不想使用任何本机代码(如果可能,我想避免使用 JNI)我想通过命令行尽可能多地做。这是我正在尝试做的事情:

  • 使用创建一个 TUN 接口ip tuntap add dev tun0 mode tun
  • 设置它,并给它一个 IP 地址(使用命令很简单ip
  • 打开某种/dev/tun0文件以从网络端写入流量。

最后一步是我有点困惑的地方——我认为这可以在 Unix 上工作,因为网络适配器是文件,但我在 Linux 上,我认为我不能以这种方式访问​​ NIC。我知道这对于本机代码来说很简单(进行几次调用ioctl并获取文件描述符),但除非有某种方法可以从命令行执行此操作,否则它将无法正常工作。

有什么方法可以通过调用打开已经配置的tun接口(配置为ip tuntapopen,并开始向其写入网络端 IP 数据包(不使用ioctl)?

4

1 回答 1

3

如果您已经通过 设置它ip tuntap,那么您可以将其作为 java 的读/写文件打开,然后将整个以太网数据包写入其中。您可以打开它两次(FileInputStream/FileOutputStream)来读取和写入以太网数据包。

于 2012-08-24T01:01:05.917 回答