新出的 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 服务端