需要您帮助配置 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。