我正在尝试在 Linux 中打开一个 TUN 设备(希望最终在 Java 应用程序中)。由于我不想使用任何本机代码(如果可能,我想避免使用 JNI)我想通过命令行尽可能多地做。这是我正在尝试做的事情:
- 使用创建一个 TUN 接口
ip tuntap add dev tun0 mode tun
- 设置它,并给它一个 IP 地址(使用命令很简单
ip
) - 打开某种
/dev/tun0
文件以从网络端写入流量。
最后一步是我有点困惑的地方——我认为这可以在 Unix 上工作,因为网络适配器是文件,但我在 Linux 上,我认为我不能以这种方式访问 NIC。我知道这对于本机代码来说很简单(进行几次调用ioctl
并获取文件描述符),但除非有某种方法可以从命令行执行此操作,否则它将无法正常工作。
有什么方法可以通过调用打开已经配置的tun
接口(配置为ip tuntap
)open
,并开始向其写入网络端 IP 数据包(不使用ioctl
)?