1

我正在寻找为 linux 开发 ac/c++ 应用程序,将接收到的 ipv4 数据包转换为 ipv6,反之亦然(失去一些仅 ipv6 的功能)

第 1 步:如何从传入的数据包中接收所有必要的信息?我应该使用原始数据包库来读取所有 TCP/UDP 标志和有关数据包的信息吗?有关于此的任何文件?(我已经在看 beej.us 指南了)

step2:我希望将此程序用于Linux机器(即Ubuntu)作为路由器,将从ipv6机器接收到的所有数据包转发到网卡,转发到连接到路由器上ipv4卡的ipv4机器。

如何接收和解析此应用程序中的所有数据包(定向到路由器机器 IP 的数据包除外)?是否有可能在“应用程序级别”或者我应该触摸内核?如果是,我在哪里可以获得有关此的一些文档?

目标:在通过路由器连接的两台机器之间有一个 http 或其他通用协议工作

非常感谢任何提示

4

1 回答 1

1

由于 IPv4 和 IPv6 之间的转换必然意味着更改数据包中的 IP 地址,因此根据定义需要 NAT。您的项目归结为实现 NAT 路由器。

阅读NAT64以了解更多关于您正在寻找的特定 NAT 风格的信息。

在尝试在用户空间实现路由器的过程中,我认为tun设备可能是发送和接收数据包的最佳设计选择。这实际上是TAYGA选择的方法(上面引用的 Wikipedia 页面上列出的第一个 NAT64 实现)。

在用户空间中实现路由器(任何类型,更不用说 NAT)是一个相当复杂且雄心勃勃的项目,所以我能给出的最好的两条建议是:

  • 不要自己实施。相反,请努力改进现有的开源实现之一。
  • 如果做不到这一点,请研究现有的开源实现之一以获取灵感。
于 2013-05-15T19:31:23.893 回答