两个 ubuntu 服务器之间的 GRE 隧道不起作用

两个 ubuntu 服务器之间的 GRE 隧道不起作用

我正在尝试在我的两台 Ubuntu vps 之间建立一个 gre 隧道。两台服务器都是从全新安装的 Ubuntu 20.04 开始使用的。并且没有启用防火墙。

我的表现基于教程仍然无法从任何一方成功执行 ping。我进一步解释我的设置。

服务器A:2.2.2.2

服务器B:3.3.3.3

我想从服务器 A 到服务器 B 创建 GRE 隧道。

我在两台服务器上都启用了 ipforwarding:

cat /proc/sys/net/ipv4/ip_forward
1

在服务器 AI 上使用以下方法设置隧道:

sudo modeprobe ip_gre
sudo iptunnel add gre1 mode gre local 2.2.2.2 remote 3.3.3.3 ttl 255
sudo ip addr add 10.0.0.1/30 dev gre1
sudo ip link set gre1 up

在服务器 BI 上,使用以下命令,就像服务器 A 一样,但本地和远程 IP 反转:

sudo modeprobe ip_gre
sudo iptunnel add gre1 mode gre local 3.3.3.3 remote 2.2.2.2 ttl 255
sudo ip addr add 10.0.0.2/30 dev gre1
sudo ip link set gre1 up

现在我假设我应该能够从另一台服务器 ping 通每台服务器。但数据包丢失率是 100%。请告诉我我的哪部分指令是错误的,如果没有错,我该如何跟踪我的 ping 数据包以查看在哪里以及是谁丢弃了它们。

答案1

这些命令通常是正确的。您没有提供服务器之间距离的详细信息,我猜其中一个服务器距离很远,隧道正在穿越互联网。GRE 数据包是一个单独的协议组,而不是 tcp 或 udp。两者之间可能存在某种东西 - 不受您的控制 - 过滤掉此类数据包。

调试选项:

您可以使用 tcpdump 检查 GRE 数据包是否离开源主机并到达目标主机。

源主机:

tcpdump -i <INTERFACENAME> -n -c 300 protochain GRE and host 3.3.3.3 

ping -c5 3.3.3.3现在在第二个终端上对 IP 为 2.2.2.2 的主机执行

目标主机

tcpdump -i <INTERFACENAME> -n -c 300 protochain GRE and host 2.2.2.2

ping -c5 3.3.3.3现在在 IP 为 2.2.2.2 的主机上执行

替换为您的接口名称。

相关内容