Linux 机器作为网络网关改变源地址

Linux 机器作为网络网关改变源地址

我有一个 Ubuntu Server 盒 (A),其中有一个 IPSec 隧道连接到另一个数据中心 (AWS,通过 VPC VPN)。隧道正常,我可以 ping 隧道的另一端。

当我尝试与隧道另一端的任何主机通信时,出现了问题。

假设我有以下配置:

方框 A:172.31.0.5

方框 B:172.30.0.5

如果我执行以下操作:

A> ping 172.30.0.5

ICMP 数据包到达目标服务器(B),但其源地址不是源服务器(A)的 IP。

相反,它们以 169.254.248.xxx 作为源地址,这是 AWS VPC 内 IPSec 隧道的私有地址。

由于 169.254.248.xxx 在盒子 A 之外不存在,因此盒子 B 无法发送回复,数据包丢失。

我确信这是服务器 A 上的路由设置的问题,我该如何调试以找到解决方案?

答案1

ping您可以指定用于发送数据包的接口。

在 Windows 上:

ping -S 172.31.0.5 172.30.0.5

在 Linux 上:

ping -I 172.31.0.5 172.30.0.5

相关内容