使用WireGuard实现异地组网

in Linux安全 with 7 comments

WireGuard是由Jason A. Donenfeld开发的开放源代码VPN程序及协议,基于Linux内核实现,利用Curve25519进行密钥交换,ChaCha20用于加密,Poly1305用于数据认证,BLAKE2用于散列函数运算,支持IPv4和IPv6的第3层。WireGuard旨在获得比IPsec和OpenVPN更好的性能。
WireGuard-Logo-800x445.jpg

安装

系统环境:

root@wireguard:~# cat /proc/version
Linux version 5.10.0-9-amd64 (debian-kernel@lists.debian.org) (gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 SMP Debian 5.10.70-1 (2021-09-30)

网络环境:

Wireguard IP :1.1.1.1  Port:10086
Company Server IP: 192.168.0.2/24
Branch company PC IP :192.168.0.3/24

更新软件包:

sudo apt update
sudo apt upgrade

安装Wireguard:
sudo apt install wireguard
安装完成之后,系统就会包含wg和wg-quick两个命令,可以通过--help查看

配置

开启内核的转发:

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

服务器端配置

创建密钥:
wg genkey | tee privatekey | wg pubkey > publickey

创建配置文件: vim /etc/wireguard/wg0.conf

[Interface]
ListenPort = 10086 # Wireguaed 端口 ,防火墙要放行
Address = 192.168.0.2/24 #VPN服务端的IP地址
PrivateKey = qBOO0w4HFuTEGL+uQw70N48aJNQNY/UHRxe8qJOnyng=   #服务器的私钥
# 下面两条是放行的iptables和MASQUERADE
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 节点
[Peer]
PublicKey = oGPrjtFhVvQnc3JTmpUrWPKylSegtGntNPOfNq9y5Q8=  #节点公钥
AllowedIPs = 192.168.0.3/32  #节点IP地址

启动服务:wg-quick up wg0
开机自启:systemctl enable wg-quick@wg0.service

客户端配置

Wireguard 下载地址:https://www.wireguard.com/install/

[Interface]
PrivateKey = COQUOvsgMovx9gf4FU6IlStpSZVv1RzGIhhoCD9MoV0= #客户端私钥
Address = 192.168.0.3/32 #客户端IP

[Peer]
PublicKey = u+CUq10O//NzPV6di9GlWaxFBE80xSyj4rvVNg9Ndmg=  #服务器节点公钥
AllowedIPs = 192.168.0.2/24  #服务器节点IP
Endpoint = 1.1.1.1:10086  #服务器节点公网IP地址:端口
PersistentKeepalive = 25 #链接保持间隔

参考:https://www.wireguard.com/quickstart/
wireguard.png
wireguard_ping.png

Responses
  1. 技术文,不懂。

    Reply
  2. 时隔两年,终于更新。不过还是zerotier简单快捷

    Reply
    1. @WeiCN

      Zerotier个人用挺方便的,不过政府项目不敢用这洋玩意。(*^_^*)

      Reply
  3. 组网原来这么麻烦呢?

    Reply
    1. @晓新哈特

      自建异地组网服务有点麻烦,蒲公英异地组网也有简单现成的方案。

      Reply
      1. @HanYibo

        如果家里有外网IP能通信,能用PPTP能行得通吗?

        Reply
        1. @晓新哈特

          可以,但是PPTP安全性不高。

          Reply