将所有流量从 Wiregurad 发送到 GRE 隧道

将所有流量从 Wiregurad 发送到 GRE 隧道

我是 Linux 世界的新手,所以我不知道如何进行 IPtable 配置。我的情况是这样的:我有一个 MikroTik 和一个 UBUNTU Linux 服务器。我在它们之间创建了一个 GRE 隧道,它运行良好。我还在我的 Linux 服务器上创建了一个 Wireguard,我可以从我的 Windows PC 连接到它。我现在想要的就是将所有传入流量从 Wireguard 连接到 GRE 隧道发送到我的 Linux 服务器。我已经在我的 Linux 上启用了端口转发,将其设置为 1。这是我的 wireguard 配置:

[Interface]
PrivateKey = ***************
address = 10.0.0.1/8
SaveConfig=true
PostUp=iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o gre1 -j MASQUERADE;
PostDown=iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o gre1 -j MASQUERADE;
ListenPort=51820

gre1 是我的 GRE 隧道接口。但我的 IP 与我的 Linux 服务器的公共 IP 相同

GRE LINUX IP : 11.11.11.1/24
GRE MIKROTIK IP : 11.11.11.2/24
LINUX WIREGUARD IP : 10.0.0.1/8
WINDOWS WIREGUARD IP : 10.0.0.2/8
MIKROTIK PUBLIC IP : 171.51.174.240
LINUX PUBIC IP : 71.141.34.80

谢谢您的回复,但不幸的是我的情况是这样的:

pc/phone -- vpn(PPTP/WireGuard/l2tp) ---> Linux server --> GRE Tunnel --> Mikrotik Server ---> INTERNET

我可以通过 VPN 连接到 Linux 服务器而不会出现任何问题,并且我的 Linux 也通过 GRE 隧道连接到 MikroTik。唯一的问题是在 Linux 服务器上,我不知道如何将来自 VPN 的传入流量路由到 GRE 隧道。

答案1

据我所知,您有以下设置:

Mikrotik <--> Linux <--> Windows

您想从 Windows 机器连接到 Mikrotik 服务器吗?

这并不是特别困难,因为您所需要了解的只是static routing

简而言之,您需要做的是创建两条路线。

一条路由告诉 Windows 应该连接哪个主机才能到达 Mikrotik 子网,11.11.11.0/24但这是一个坏子网,因为它不是 RFC1918 IP 地址(又名私有 IP 地址),而是公共 IP 地址。不要使用此范围。我的建议是使用10.11.0.0/24子网 - 或者选择您喜欢的其他子网。

此外,10.0.0.0 的范围/8对于 RFC1918 来说太大了(有点过头了!),因为它可以包含大约 2^24 个主机。

我对这两条隧道的设置如下:

GRE LINUX IP : 10.11.0.1/24
GRE MIKROTIK IP : 10.11.0.2/24
LINUX WIREGUARD IP : 10.0.0.1/24
WINDOWS WIREGUARD IP : 10.0.0.2/24

使用我对子网的建议,您可以在 Windows 中使用以下命令执行此操作:

route add 10.11.0.0 mask 255.255.255.0 10.0.0.1

如果您希望规则在重新启动之间仍然有效,那么您可以/p在单词route和之间添加add

WireGuard 也有可能在接口启动时添加此路由,在接口关闭时删除该路由,但我记不住该设置。

(我正在用电话写这篇文章)。

您需要设置的另一条路线是 Mikrotik 服务器应该连接哪个主机才能到达 Windows 机器子网10.0.0.0/24

在 Linux 中,您可以使用以下命令创建到 Windows 的路由:

ip route add 10.0.0.0/24 via 10.11.0.1

只要ip forwarding在 Linux 服务器上启用,那么就不需要进行任何其他配置来使 Windows 和 Mikrotik 机器相互通信。

相关内容