Linux下的c++应用程序,用于将ipv4数据包转换为ipv6

c++ applcation for linux to convert ipv4 packet to ipv6

本文关键字:数据包 ipv4 转换 ipv6 用于 下的 c++ 应用程序 Linux      更新时间:2023-10-16

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

步骤1:如何从传入数据包中接收所有必要的信息?我应该使用原始数据包库来读取所有TCP/UDP标志和有关数据包的信息吗?有相关的文件吗?我已经在看北京了。我们指导)

step2:我正在寻找使用这个程序到linux机器(即Ubuntu)作为路由器转发从ipv6机器接收到的所有数据包到网卡,到连接到路由器上的ipv4卡的ipv4机器。

如何接收和解析这个应用程序中的所有数据包(除了指向路由器机器IP的数据包)?这是可能的在"应用程序级别"还是我应该触摸内核?如果有,我从哪里可以得到一些关于这个的文件?

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

非常感谢任何提示

由于IPv4和IPv6之间的转换必然会改变数据包中的IP地址,因此根据定义需要NAT。你的项目归结为实现一个NAT路由器。

阅读NAT64,以了解更多您正在寻找的NAT的特殊风味。

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

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

  • 不要自己实现这个。相反,贡献您的努力来改进现有的开源实现之一。
  • 如果做不到这一点,可以从现有的开源实现中寻找灵感。