使用通过 GRE 隧道连接的服务器上的公共接口

使用通过 GRE 隧道连接的服务器上的公共接口

我对网络还很陌生,所以请原谅任何术语错误。

我有 2 台通过 GRE 隧道连接的服务器。

服务器 1 (10.0.0.1) ----> 服务器 2 (10.0.0.2)

我希望能够使用 Server1 绑定到 Server2 上的公网 IP。为此,我在 Server1 上设置了与 Server2 公网 IP 的虚拟接口,然后使用 Server1 上的路由规则通过 GRE 隧道路由数据包。

在服务器1上:

ip rule add from [Server2's first public IP] table gre
ip rule add from [Server2's second public IP] table gre
ip route add default via 10.0.0.2 dev gre1 table gre

这很有效,我可以看到数据包通过 GRE 到达 Server2。我可以看到数据包在 Server2 的 gre1 设备上退出隧道,如下所示:

从服务器1:ping -I [Server2's public ip] google.com

来自 Server2 的 GRE 隧道设备的 tcpdump:

12:07:17.029160 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84) [Server2's public ip] > 74.125.225.38: ICMP echo request, id 6378, seq 50, length 64

这正是我想要的数据包。但是,我没有看到它在 eth0:0(Server2 的公网 IP 绑定到的地方)上出去。

我尝试使用路由规则让来自 Server2 的公共 IP(将从 dev gre1 出来)的数据包通过公共默认网关上的 dev eth0,但这也不起作用。

我很茫然,感谢任何能帮助我的人。

相关内容