是否可以在 Linux 平台上的用户空间中实现自定义网络接口? netif 必须在不寻常的物理链路上传输数据包,该物理链路最好在用户空间中访问。
发送和接收功能必须在 IP 级别上工作,Linux 不应尝试 ARP,因为链路不是以太网并且有自己的地址解析方法。
例如,如何用 C 语言来完成这样的任务?有什么示例代码可以开始吗?
答案1
是的,很多软件都可以做到这一点;基本上,所有用户层 VPN 实现!
这里的技巧是要求内核创建一个 TUN 或 TAP 设备,并将您的软件附加到它。
- 使用TAP进行以太网层的软件实现,
- IP层的软件实现采用TUN。
有很多示例和教程,这是维基百科文章的内容TUN/TAP应该链接到:tuntap 上的内核文档;这是一个堆栈溢出回答如何使用 tun 驱动程序