因为一些原因将 Elasticsearch 部署在了另外一台机器上,之前两台 vps 是直接通过公网通迅的,只不过用防火墙限制了一下IP,但这终究是不安全的,想要靠谱还是要上VPN。但找了一找网上的VPN教程大多是 OpenVPN ,虽然 OpenVPN 很安全,但部署操作实在太复杂了,于是就一直这样鸽了下来。
今天,看到了 在 Ubuntu 18.04 上建立 WireGuard 隧道组建 VPS 大内网 这篇文章时真是茅塞顿开,于是参考这篇文章外加 官方文档 、Debian Wiki Wireguard 条目 使用 WireGuard 将自己的两台 VPS 组了一个私有网。
以下步骤均建议,同时连接两台VPS同步操作。
第一步:生成密匙
在服务端、客户端同时使用如下命令生成公钥与私钥。
第二步:手动配置
请参考以下配置文件模版,和 wg-quick 完成配置文件,并将配置文件写入 /etc/wireguard/wg0.conf
。
Server:
[Interface] Address = 192.168.1.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = 服务端私钥 [Peer] PublicKey = 客户端公钥 AllowedIPs = 192.168.1.0/24
Client:
第三步:防火墙
服务端打开相应的监听端口,放行udp。
根据实际需要,在服务端、客户端做出相应的防火墙配置。
Server:
firewall-cmd --new-zone=wg --permanent firewall-cmd --zone=wg --add-interface=wg0 --permanent firewall-cmd --zone=wg --add-masquerade --permanent firewall-cmd --zone=wg --add-port=3000/tcp --permanent firewall-cmd --zone=wg --add-port=4000/tcp --permanent firewall-cmd --reload
Client:
第四步:确认通道已连接
服务端、客户端同时启动 wireguard。
查看 ip 地址,并互 ping 对方主机,如果能 ping 通,说明隧道已经建立。
$ ip addr 3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 192.168.1.1/24 scope global wg0 valid_lft forever preferred_lft forever $ ping 192.168.1.2 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=1.74 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=1.59 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=1.64 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=1.66 ms 64 bytes from 192.168.1.2: icmp_seq=5 ttl=64 time=1.100 ms ^C --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 11ms rtt min/avg/max/mdev = 1.587/1.725/1.998/0.149 ms
可使用 wg show
查看相应信息。
# wg show interface: wg0 public key: 服务端公钥 private key: (hidden) listening port: 51820 peer: 客户端公钥 endpoint: 客户端地址:客户端当前端口 allowed ips: 192.168.1.0/24 latest handshake: 59 seconds ago transfer: 135.63 KiB received, 209.95 KiB sent
如果测试没有问题,并需要长期保持隧道,使用 [email protected]
实现自启。
wg-quick down wg0 && \ systemctl start [email protected] &&\ systemctl enable [email protected]