![更改同一接口上传入数据包的源 IP 以及如何查看它?](https://linux22.com/image/176366/%E6%9B%B4%E6%94%B9%E5%90%8C%E4%B8%80%E6%8E%A5%E5%8F%A3%E4%B8%8A%E4%BC%A0%E5%85%A5%E6%95%B0%E6%8D%AE%E5%8C%85%E7%9A%84%E6%BA%90%20IP%20%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E5%AE%83%EF%BC%9F.png)
我在服务器 B 上运行一个应用程序,该应用程序侦听服务器 B 上的 eth0。
我有一个来自服务器 A 的 GTP 数据包,我想更改其源地址。在数据包的 GTP 层中,存在公共 IP(即 xxxx)。我想将源IP更改为xxxx
应用程序需要 xxxx 系列,但在标头中它得到 10.xxx,因此它会丢弃数据包并且无法建立连接。
10.xxx(源)---->xxxx(目标)
我知道门户中有一些解决方案,但我的问题是没有传出接口,应用程序正在监听并使用更改后的 IP 进行回复;即,仅 eth0 上的 xxxx。我怎样才能看到数据包?和tcpdump
?
我使用了网上的一个示例规则,它是:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to x.x.x.x
但这不符合我的目的。
基本上,数据包是 gtp 并且来自指定接口。数据包由 gtp 层的公共 IP 组成。应用程序正在丢弃指定的源 IP,因为它在连接请求时查找数据包内存在的公共 IP。如果我可以将公共 IP 分配为 src IP(可访问),则将建立连接并且传出流量可以也通过修改后的 src IP 作为回复,最终将建立连接。
我是否可以有一个 iptable 规则,当数据包到达 eth0 时,将我的 src IP 更改为 GTP 层中存在的公共 IP?