我正在尝试解决这个问题。假设我的 Linux 机器充当虚拟路由器。我希望某些收到的数据包(例如源 IP 地址为 192.168.0.1 的数据包)的源 IP 地址重写为 10.0.0.1,同时将以前的源 IP 地址(即 192.168.0.1)写入同一数据包的 TCP/UDP 有效负载中。
我尝试使用 iptables 函数和 netsed 来实现这一点。但是,我不认为我可以使用这两个工具来实现这一点。我想到的另一种方法是使用虚拟交换机(例如 Open vSwitch)来实现这一点;不幸的是,据我所知,我必须扩展交换机才能做到这一点。我该如何解决这个问题?
谢谢!
答案1
我不知道有什么工具可以帮你完成这个任务。你可以选择编写自定义程序或在网络层完成这个任务。
要在网络层执行此操作,您可以使用 IP 隧道中的 IP。这会在原始数据包通过传输网络时将其封装到新的 IP 数据包中,然后在隧道的另一端删除标头。