如何在转发时读取和修改数据包信息

如何在转发时读取和修改数据包信息

我有两台运行 ubuntu 的笔记本电脑(均为 20.04.4 LTS x86_64),我试图将其中一台用作路由器(我们将它们称为 laptop1 和 laptop2,laptop2 充当路由器)。到目前为止,我使用 ip route 命令将其中一台 laptop1 的默认网关更改为 192.168.1.85(laptop2 的 ip 地址),在 laptop2 上,我使用 iptables 和 sysctl 启用 ip 转发到 laptop2 的网关(192.168.1.1),一切运行正常。现在,假设我想对来自 laptop1 的数据包内容应用某种加密,然后转发它们,我该怎么做?我搜索了很多,找不到类似的东西。我以前使用过 linux 套接字库,如果解决方案需要我编写自己的程序,那也没关系。

当笔记本电脑不在同一个网络上时,也可以这样做吗?

所以基本上我想要做的是让 laptop2 监听所有传入流量,更改其内容,然后将其发送到另一台服务器。

关于我应该如何做以及从哪里开始,有什么提示吗?

答案1

您问了几个问题,让我一一解答。

“当笔记本电脑不在同一个网络上时可以做到这一点吗?”

不,双方都不会接受。特别是当一个系统是移动的而另一个系统位于固定位置时。数据包转发和镜像的工作方式并非如此。

基本上,问题是:“我可以读取数据包数据、更改它,然后对数据包应用更改吗,因为我想对其进行特殊加密”。

不。加密是应用层 (L7) 任务,而数据包不是 L7。获取数据包、更改其加密,然后使其“可用”是不可能的,因为数据流将不再具有数据包的正确校验和等,因此在重建数据流方面无法正常工作。

是的,您可以监听数据包,然后将原始数据包封装在发往“其他服务器”的新数据包流中,将这些数据包转发到其他地方,但更改数据不会按预期运行,因为数据包流等对于大多数事物(在 TCP 上)都有校验和,并且您将通过这种方法严重破坏您“保留”数据包的所有内容。

(由于网站服务/使用条款以及个人对教人们如何实现这一点的顾虑,我不会详细说明如何这是可以实现的。但我之所以知道如何做到这一点,是因为我是一名 IT 安全专业人士)

相关内容