新出的 Wireguard 很多人都想尝试,这里 VPN 到底适不适合用来翻墙我们先不讨论,先来看看怎么快速在 vps 上起一个 wireguard 服务。很多人听说这个服务配置起来特别复杂,所以望而却步,实际上很简单。
环境
这里我用最新的 ubuntu 18.04.2 来配置,首先你得有一个 vps,创建好后最好按照我的 购买了VPS之后你应该做足的安全措施里配置ssh的证书访问。
安装
wireguard 是有为 ubuntu 提供安装包的,但并没有集成在官方源里,所以我们要自己添加 ppa,然后安装。
1 2 3 4 5 |
add-apt-repository ppa:wireguard/wireguard apt upgrade apt install wireguard resolvconf -y |
配置
进入配置目录 cd /etc/wireguard ,执行下面两条命令来生成密钥对:
1 2 |
wg genkey | tee server_privatekey | wg pubkey > server_publickey wg genkey | tee client_privatekey | wg pubkey > client_publickey |
开启流量转发:
1 2 3 |
echo 1 > /proc/sys/net/ipv4/ip_forward echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p |
如果你想添加开机启动,那么:
1 |
systemctl enable wg-quick@wg0 |
使用 ifconfig 等命令查看你的网卡信息,找到那个使用外网的网卡,如果你有多个,就选其中一个,用来给wireguard服务监听。
你得到的结果大致如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 128.199.152.999 netmask 255.255.192.0 broadcast 128.199.191.255 inet6 fe80::bc10:f7ff:feb7:226b prefixlen 64 scopeid 0x20<link> ether be:10:f7:b7:22:6b txqueuelen 1000 (Ethernet) RX packets 23440 bytes 56095614 (56.0 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 9140 bytes 714939 (714.9 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 166 bytes 13998 (13.9 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 166 bytes 13998 (13.9 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
比如这里的例子,显然网卡名称就是 eth0 ,要记下这个,一会写配置要用到。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 = 443 DNS = 8.8.8.8 MTU = 1420 [Peer] PublicKey = $(cat client_publickey) AllowedIPs = 10.0.0.2/32 " > wg0.conf |
直接生成配置,你也可以手动编写,不过就需要自己去读取密钥对了,注意名字,不要搞错。另外代码块中高亮的两行,之前我们查看的网卡名,就要写在这里面,如果你的网卡不是 eth0 ,那么请自行手动替换。
考虑到密钥对都在服务器上,这里我们再顺便生成客户端配置:
1 2 3 4 5 6 7 8 9 10 11 12 |
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 = 128.199.152.999:443 AllowedIPs = 0.0.0.0/0, ::0/0 PersistentKeepalive = 25 " > client.conf |
注意高亮行,把远端 IP 改成你服务器的 IP。
启动
至此,配置完成!
1 2 3 4 5 6 7 8 |
# 启动WireGuard wg-quick up wg0 # 停止WireGuard wg-quick down wg0 # 查看WireGuard运行状态 wg |
就是这么简单~
多用户
首先停止服务 wg-quick down wg0
然后生成新用户的密钥对:
1 |
wg genkey | tee client0_privatekey | wg pubkey > client0_publickey |
然后在服务端配置中增加,注意这是一条命令,不要分行执行:
1 2 3 4 |
echo " [Peer] PublicKey = $(cat client0_publickey) AllowedIPs = 10.0.0.3/32" >> wg0.conf |
注意高亮行,这个内网 IP 段要写个不同的,每一个 “Peer” 用一个 ip,比如上文用的是 10.0.0.2,这里就用 10.0.0.3,如果还需要更多用户,那么就以此类推。
创建客户端配置文件,这里就和上文中的一样了,只是注意密钥对用新的,这同样也是一个命令,不要分行执行:
1 2 3 4 5 6 7 8 9 10 11 12 |
echo " [Interface] PrivateKey = $(cat client0_privatekey) Address = 10.0.0.3/24 DNS = 8.8.8.8 MTU = 1420 [Peer] PublicKey = $(cat server_publickey) Endpoint = 1.2.3.4:443 AllowedIPs = 0.0.0.0/0, ::0/0 PersistentKeepalive = 25 " > client0.conf |
然后启动服务: wg-quick up wg0
参考文献:
一个高速、安全、可以复活被墙IP的VPN —— WireGuard 服务端手动教程
本文由 落格博客 原创撰写:落格博客 » Ubuntu 超快部署 wireguard 服务端
转载请保留出处和原文链接:https://www.logcg.com/archives/3197.html
文章不错非常喜欢