我正在尝试设置隧道“gre”。设置如下。在机器 A 上,我有两个网络:10.0.0.x (eth2) 和 152.83.xx (eth1)。我已经将共享 10.0.0.x 的其他机器连接到机器 A。机器 A 有一个静态地址 10.0.0.10,连接到它的其他三台机器是 10.0.0.1-10.0.0.3。
现在,我有一台远程机器 B,它位于同一网络 152.83.xx (eth1)。我正尝试接管所有 IP 10.0.0.x(例如 10.0.0.1-10)。
我在机器A上做了以下操作:
sudo ip tunnel add tunnel1 mode gre remote 152.83.70.180 local 152.83.70.114
sudo ip addr add 10.0.2.1 dev tunnel1
sudo ip link set tunnel1 up
sudo ip route add 10.0.0.0/24 dev tunnel1
sudo sysctl -w net.ipv4.conf.all.forwarding=1
在机器B上,我输入:
sudo ip tunnel add tunnel1 mode gre local 152.83.70.180 remote 152.83.70.114
sudo ip addr add 10.0.1.1 dev tunnel1
sudo ip link set tunnel1 up
sudo ip route add 10.0.0.0/24 dev tunnel1
sudo sysctl -w net.ipv4.conf.all.forwarding=1
现在,当我从 B ping 地址 10.0.0.1 等时,我没有得到任何响应。此外,即使在网络 A 上,我的隧道 1 也会以某种方式向其他机器屏蔽 10.0.0.1-10.0.0.3。只有分配给 eth1 的 10.0.0.10 可以 ping 通。
有人能告诉我我做错了什么吗?顺便说一句,当我在两台机器上添加以下代码时
sudo ip route add 10.0.1.0/24 dev tunnel1
sudo ip route add 10.0.2.0/24 dev tunnel1
然后我可以从一台计算机通过 ssh 连接到另一台计算机(例如通过 ssh 10.0.2.1 从 B 连接到 A),因此我确信两台计算机之间存在连通性,例如路由器不会阻止这种流量。
我觉得我可能需要在 eth1 和 tunnel1 之间建立某种桥梁或者别的东西?
亲切的问候,
皮特
我使用 Ubuntu 16.04(和/或 14.04)。
答案1
所以,我已经让它运行了。事实证明,接口上的 MTU 必须降低到 1400,这样数据包才能适合从具有 MTU 1500 的卡发出的实际数据包。另一种方法是自己深入研究拆分/组装数据包,因为 GRE 为您执行此操作存在一些问题...或者 OpenVPN 显然也可以很好地处理它,但我没有进一步调查。