背景

搭建 VPN 方便连接无公网 IP 云主机进行开发,wireguard 配置比 openvpn 要简单很多,wireguard 是通过 Linux 内核模块的方式实现的,这样性能最好,但是只能用在 Linux 系统上。本文使用的 wireguard-go, 则是使用 golang 实现的 wireguard 协议,属于用户空间的实现,性能没有内核模块方式好,但好处就是更简单易用。

VPN 的用处非常的多,不像 frp 之类的端口穿透应用,它是直接建立虚拟的网络,网络中的每个客户端也都可以拥有自己独立的 IP,于是测试调试就没有了端口的限制,非常的方便。

除了方便安全连接云服务器,还可以通过 VPN 搭建工业设备的远程部署和维护的解决方案。

编译 wireguard-go

# 使用 GitHub 的源码镜像,速度会快一些
git clone [email protected]:WireGuard/wireguard-go.git

# 在 MacOS 下交叉编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -o "wireguard-go"

# Linux 环境下直接编译

go build -v -o "wireguard-go"

cp wireguard-go /usr/sbin/

编译 wireguard tools

git clone [email protected]:WireGuard/WireGuard.git

# 安装依赖

## debian&ubuntu
sudo apt-get install libmnl-dev libelf-dev

## centos
sudo yum install libmnl-devel elfutils-libelf-devel

cd Wireguard/src/tools
make 
sudo make install

配置 wireguard

生成密钥

cd /etc/wireguard
wg genkey | tee server_privatekey | wg pubkey > server_publickey
wg genkey | tee client_privatekey | wg pubkey > client_publickey

生成服务器端配置文件 wg0.conf

echo "[Interface]
PrivateKey = $(cat server_privatekey)
Address = 10.0.0.1/24 
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 1194
MTU = 1420

[Peer]
PublicKey = $(cat client_publickey)
AllowedIPs = 10.0.0.2/32" | sed '/^#/d;/^\s*$/d' > wg0.conf

生成客户端配置文件 client-wg0.conf

echo "[Interface]
PrivateKey = $(cat client_privatekey)
Address = 10.0.0.2/24
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = $(cat server_publickey)
Endpoint = ${server_ip}:1194
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 30" | sed '/^#/d;/^\s*$/d' > client-wg0.conf

在服务器端开启数据包转发

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

最后在服务器端启动 wireguard

wg-quick up wg0

客户端需要根据前面生成的配置文件进行配置

参考

(完)

本文为原创文章,转载需注明出处,欢迎扫码关注公众号小码哥的干货或者网站 https://thisiswangle.com,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。

扫码关注