标题:使用TunSafe+WireGuard以安全访问互联网
作者:Moses Mason
日期:2018-11-08 19:17:18
内容:
File
菜单,再点击 Generate Key Pair
,即可出现公钥私钥生成界面。Randomize
按钮,软件会生成一对密钥,其中Private Key为私钥,Public Key为公钥,为了方便配置服务端和客户端,我们需要生成至少两对密钥。Edit Config
按钮,可以打开编辑文件进行编辑。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
[Interface] # [Interface] 以下为本机(客户端)的配置情况。 PrivateKey = +ERZhs7mDpIXjcnabVl+WytG80xjKCUEWlFsQrKtaUc= # 此行为客户端私钥(Private Key),请在生成的密钥对中选取客户端的公钥并粘贴进来。 ListenPort = 9876 # 此行为指定监听的端口,也作为发送(源)端口,可自行修改,不要求和服务器一致。 DNS = 8.8.8.8 # 此行为设定连接后客户端所使用的DNS服务器。 Address = 10.0.2.1/24 # 此行为设定客户端连接后所使用的IP地址,可以维持默认,也可以自行指定,但是需要和服务端配置在同一网段(如都在 10.0.2.0/24网段),不然会被丢弃。 # BlockInternet = route, firewall # 此行为TunSafe的专有选项,意思为是否要屏蔽所有不安全的互联网流量,建议维持默认关闭(注释, # )的状态。 [Peer] # [Peer] 以下为连接服务器的配置。 PublicKey = R8m0mgZWEH1b+synpBYyqSTOuEsw1gU46u457IzsohA= # 此行为服务器的公钥,请在生成的密钥对中选取服务端的公钥并粘贴进来。 # PresharedKey = SNz4BYc61amtDhzxNCxgYgdV9rPU+WiC8woX47Xf/2Y= # 此行为预共享密钥,对于一般安全要求,无需指定。 AllowedIPs = 0.0.0.0/0 # 此行为指定允许数据包发送的IP范围,如果要允许发送至所有IP的数据包,设置为 0.0.0.0/0 即可。 Endpoint = 123.45.67.89:9876 # 此行为指定你的服务端的IP和端口,如果已知服务器的IP和端口,可以先填写进去。 PersistentKeepalive = 25 # 此行为定期发送“保持活动”的数据包,维持默认的 25 (秒)即可。 |
apt-get update
和 apt-get dist-upgrade
进行更新。apt-get
所使用的 source.list
,增加 unstable
源分支,具体操作详见: https://www.wireguard.com/install/ 。dpkg -i
命令安装即可。sysctl -a |grep net.ipv4.ip_forward
命令,检查 net.ipv4.ip_forward
参数是否为1,如果不为1,则需要修改 /etc/sysctl.conf
文件,找到 net.ipv4.ip_forward
修改为1,或者新增一行 net.ipv4.ip_forward = 1
,保存退出后使用 sysctl -p
命令使设置立刻生效。
/etc/wireguard/
目录下的配置文件,本例中为 /etc/wireguard/wg0.conf
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[Interface] # [Interface] 以下为本机(服务器)参数指定。 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 此行为定义启动该配置文件后,所执行的命令,该iptables命令用于创建一条转发规则。注意:如果服务器的网卡不叫 eth0 ,请注意修改,详见末尾疑难解答。 PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE # 此行为定义停止该配置文件后,所执行的命令,该iptables命令用于删除所创建的转发规则。注意:如果服务器的网卡不叫 eth0 ,请注意修改,详见末尾疑难解答。 ListenPort = 9876 # 此行为定义服务端所监听的端口。 PrivateKey = +LAP1sZG1T6ljf6SQ/f2XOOiUyFzn5UrY8gd/tyJK2I= # 此行为服务器的私钥,请在生成的密钥对中选取服务端的私钥并粘贴进来。 [Peer] # [Peer] 以下为接入客户端的设定。 PublicKey = /09mvABMFRs3fONigHcMlyK9rbnAj87ELDTA7tLmzDI= # 此行为客户端的公钥,请在生成的密钥对中选取客户端的公钥并粘贴进来。 AllowedIPs = 10.0.2.0/24 # 此行为允许客户端所使用的IP地址范围,需要和客户端所设置的IP地址位于同一网段,如客户端的IP为 10.0.2.1/24 ,那么这里可以设置为 10.0.2.0/24 ;如果客户端为 172.16.0.1/24 ,那么这里则需要设置为 172.16.0.0/24 。 |
wg-quick up wg0
即可基于我们刚写好的配置文件(wg0.conf)启动服务端。systemctl enable wg-quick@wg0
命令,其中 wg0 为配置文件的文件名(不含扩展名)。
Connect
按钮,如果没有任何错误,且提示 Connected ,则说明连接成功。iptables
或 ufw
等策略是否正确。[Interface]
下的 Address
设置的是 10.0.2.1/24
,那么服务端 [Peer]
下的 AllowedIPs
则需要设置为 10.0.2.0/24
。sysctl -a |grep net.ipv4.ip_forward
命令检查 net.ipv4.ip_forward
是否为 1 ,如果不是,请检查是否正确编辑了 /etc/sysctl.conf
文件,或者 sysctl
是否已经生效。net.ipv4.ip_forward
确认为1,请使用 ifconfig
或 ip addr
命令检查设置了公网IPv4或IPv6的网卡是否叫 eth0
,如果不是 eth0
,请重新编辑服务器端的配置文件,将 PostUp
和 PostDown
参数中的 eth0
部分修改为你的网卡名,某些网卡可能叫 enoXX
、 ensXX
、 enpXsXX
,请以你的系统为准。PostUp
所添加的 iptables 策略位于 FORWARD
链的顶部。