Debian 服务器部署 WireGuard VPN 服务端,实现站点间内网互通配置。

Debian 部署 wireguard
3 mins
633 words
Loading views

环境h2

设备说明
Debian9 4.9 内核服务器部署 WireGuard 服务端
OpenWrt x86 64内网网关
Windows10内网设备

部署 WireGuard 服务端h2

配置软件源并安装 WireGuard。

Terminal window
apt-get install wireguard wireguard-tools

切换到 WireGuard 配置目录。

Terminal window
cd /etc/wireguard/

生成服务端与客户端密钥h3

分别生成服务端和客户端的密钥对。

Terminal window
mkdir server; wg genkey | tee server/privatekey | wg pubkey > server/publickey
mkdir client; wg genkey | tee client/privatekey | wg pubkey > client/publickey

创建服务端配置文件h3

创建服务端配置文件 wg0.conf

Terminal window
cat > wg0.conf <<-EOF
[Interface]
Address = 172.16.220.1/24
SaveConfig = false
PostUp = (echo 1 > /proc/sys/net/ipv4/ip_forward); iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE
ListenPort = 12138
PrivateKey = `cat server/privatekey`
[Peer] # Client
PublicKey = `cat client/publickey`
AllowedIPs = 172.16.220.2/32
EOF

创建客户端配置文件h3

创建客户端配置文件 client.conf,并可生成连接二维码。

Terminal window
cat > client.conf <<-EOF
[Interface]
PrivateKey = `cat client/privatekey`
Address = 172.16.220.2/24
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = `cat server/publickey`
# AllowedIPs = 0.0.0.0/0 # 将所有流量路由到服务端
AllowedIPs = 172.16.220.0/24 # 仅允许 WireGuard 虚拟网段互通
Endpoint = example.com:12138
PersistentKeepalive = 25
EOF

生成客户端配置二维码。

Terminal window
qrencode -t ansiutf8 < client.conf

如需添加多个客户端,只需在服务端配置文件中增加相应的 [Peer] 区块即可。

进阶配置:站点间内网互通h2

通过 WireGuard 实现两个局域网(站点)间的直接访问。

主机公网/IPWireGuard IP内部网段角色
ServerA169.254.0.1172.16.220.1172.21.161.0/20公网服务器,WireGuard 服务端
ClientB192.168.2.142172.16.220.3192.168.2.0/24内网服务器,WireGuard 客户端
ClientC192.168.2.102192.168.2.0/24目标内网服务器

目标:使 ServerA 能够直接访问 ClientC 的内网 IP 192.168.2.102

ServerA 配置修改h3

7d0a12cffb67e56e89bbd1e9caf41c64
  1. 修改服务端对等端配置:在 ServerA 的 wg0.conf 中,修改 ClientB 对等端的 AllowedIPs,添加 ClientB 所在的内网网段。

    Terminal window
    AllowedIPs = 172.16.220.3/32, 192.168.2.0/24
  2. 在 ClientB 上添加静态路由:登录 ClientB 服务器,添加一条路由,将前往 ServerA 公网 IP 的流量指向其本地网关(此处假设为 192.168.2.142,通常为 ClientB 自身或路由器)。

    Terminal window
    ip route add 169.254.0.1/32 via 192.168.2.142

    注:此步骤的具体网关地址需根据 ClientB 的实际网络环境调整。

  3. 在 ClientB 上配置 IP 转发与 NAT:在 ClientB 上启用内核转发,并设置 iptables 规则,允许转发来自 WireGuard 网段的流量到其内网,并进行源地址转换。

    Terminal window
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 172.16.220.0/24 -d 192.168.2.0/24 -j MASQUERADE

完成以上配置后,ServerA 即可通过 WireGuard 隧道直接访问 192.168.2.102