通过云 WireGuard 服务器从一个网络访问另一个网络

通过云 WireGuard 服务器从一个网络访问另一个网络

需要您帮助配置 WireGuard 和网络。我正在尝试通过 Oracle Cloud WireGuard 服务器从办公室网络访问现场网络。请看图片。在此处输入图片描述我已经尝试了不同类型的服务器和客户端设置,但仍然没有成功 :( 现在我所拥有的是在 WireGuard 对等体之间进行 ping。因此,主要目标是从 10.10.10.1 访问 192.168.0.0/24(现场网络)。提前谢谢您!

以下是我当前的配置:

办公室网络(WG 设置)

[Interface]
PrivateKey = XXX
Address = 10.10.10.1/32
DNS = 8.8.8.8

[Peer]
PublicKey = XXX
AllowedIPs = 0.0.0.0/0
Endpoint = XXX.XXX.XXX.XXX:XXX
PersistentKeepalive = 20

Oracle Cloud(WG 设置)

[Interface]
PrivateKey = XXX
Address = 10.10.10.254/24
ListenPort = 51830
PostUp = /etc/wireguard/helper/add-nat-routing.sh
PostDown = /etc/wireguard/helper/remove-nat-routing.sh

[Peer]
# Office Network
PublicKey = XXX
AllowedIPs = 10.10.10.1/32, 192.168.0.0/24

[Peer]
# Field Network
PublicKey = XXX
AllowedIPs = 10.10.10.2/32, 192.168.0.0/24

Oracle 云(iptables 设置)

#!/bin/bash
IPT="/sbin/iptables"

IN_FACE="enp0s3"                 # NIC connected to the internet
WG_FACE="wg0"                    # WG NIC
SUB_NET="10.10.10.0/24"          # WG IPv4 sub/net aka CIDR
WG_PORT="51830"                  # WG udp port

## IPv4 ##
$IPT -t nat -I POSTROUTING 1 -s $SUB_NET -o $IN_FACE -j MASQUERADE
$IPT -I INPUT 1 -i $WG_FACE -j ACCEPT
$IPT -I FORWARD 1 -i $IN_FACE -o $WG_FACE -j ACCEPT
$IPT -I FORWARD 1 -i $WG_FACE -o $IN_FACE -j ACCEPT
$IPT -I FORWARD 1 -i $WG_FACE -o $WG_FACE -j ACCEPT
$IPT -I INPUT 1 -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT
sysctl -q -w net.ipv4.ip_forward=1

现场网络(WG 设置)

[Interface]
PrivateKey = XXX
Address = 10.10.10.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = XXX
AllowedIPs = 0.0.0.0/0
Endpoint = XXX.XXX.XXX.XXX:XXX
PersistentKeepalive = 20

答案1

如果您的办公网络和现场网络都使用相同的 192.168.0.0/24 地址空间,那会让您头疼,如果可以的话,您应该更改其中一个以使用不同的网络块。

如果不能,您将无法从 10.10.10.1 到达整个 192.168.0.0/24 - 您必须确定 10.10.10.1 应使用其 WireGuard 连接进行访问的特定主机(或网络的较小块,例如 192.168.0.96/28)。

假设您无法更改网络,您可以执行以下操作以允许 10.10.10.1 访问 192.168.0.98 和 192.168.0.99,以及允许 10.10.10.0/24 中的主机相互访问(假设这就是您想要使用 WireGuard 连接的全部目的,而不是像您当前设置的那样完全访问 Internet):

在 10.10.10.1(办公网络)上配置 WireGuard,如下所示:

[Interface]
PrivateKey = XXX
Address = 10.10.10.1/24

[Peer]
PublicKey = XXX
AllowedIPs = 10.10.10.0/24, 192.168.0.98, 192.168.0.99
Endpoint = XXX.XXX.XXX.XXX:XXX
PersistentKeepalive = 20

在 10.10.10.254 (Oracle Cloud) 上配置 WireGuard,如下所示:

[Interface]
PrivateKey = XXX
Address = 10.10.10.254/24
ListenPort = 51830

[Peer]
# Office Network
PublicKey = XXX
AllowedIPs = 10.10.10.1

[Peer]
# Field Network
PublicKey = XXX
AllowedIPs = 10.10.10.2, 192.168.0.98, 192.168.0.99

您可以将 iptables 脚本精简为:

#!/bin/bash
IPT="/sbin/iptables"

IN_FACE="enp0s3"                 # NIC connected to the internet
WG_FACE="wg0"                    # WG NIC
SUB_NET="10.10.10.0/24"          # WG IPv4 sub/net aka CIDR
WG_PORT="51830"                  # WG udp port

## IPv4 ##
$IPT -I INPUT 1 -i $WG_FACE -j ACCEPT
$IPT -I FORWARD 1 -i $WG_FACE -o $WG_FACE -j ACCEPT
$IPT -I INPUT 1 -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT
sysctl -q -w net.ipv4.ip_forward=1

在 10.10.10.2(现场网络)上配置 WireGuard,如下所示:

[Interface]
PrivateKey = XXX
Address = 10.10.10.2/24

[Peer]
PublicKey = XXX
AllowedIPs = 10.10.10.0/24
Endpoint = XXX.XXX.XXX.XXX:XXX
PersistentKeepalive = 20

确保你启用数据包转发于 10.10.10.2。

相关内容