WireGuard配置
之前配置过一次,失败了,连不上。因为有时候astrill在多端登陆后,会出现只显示部分线路的异常,观察了这么久wireguard还挺稳,是时候自己试试看了,这周再试一次。
2021-02-22
终于成功了,初试的速度还是不错的,但是会有时快时慢的时候,astrill就完全没有😂。
安装
第一次用的 centos8没成功,这次就换成熟悉的 ubuntu 18 好了。
wireguard
因为用的 18 所以自带了 wireguard,方便的 apt install wireguard
就可以了。
密钥
umask 077
# 私钥
wg genkey > privatekey
# 公钥
wg pubkey < privatekey > publickey
# 或者一条命令搞定
wg genkey | tee privatekey | wg pubkey > publickey
配置及配置文件
虽然 wireguard 听来的说不用分客户端还是服务端,谁先发起请求谁就是客户端,但是一般vps路线的都是默认vps服务端
-
服务端打开端口转发
# 打开转发 echo 1 > /proc/sys/net/ipv4/ip_forward echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 应用规则 sysctl -p
-
查看连接外网的网卡名称
ip addr
,一般是 lo 后面那一个,比如 eth0。 -
新建配置文件
vim /etc/wireguard/wg0.conf
[Interface] # 服务器私钥, 就是上面生成的 privatekey PrivateKey = server_private_key_value # 绑定地址 Address = 10.0.0.1/24 # 是否保存配置, 可以在运行中通过命令行添加新客户端, 并保存到此配置 SaveConfig = true # 启动动作, 这里就要把 eth0 替换成之前记下的外网网卡名称 , wg0 是等下创建的虚拟网卡名称 # 配置防火墙规则 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -A FORWARD -o wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 关闭动作, 操作同上 PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE # 监听端口 ListenPort = 56660 # 客户端配置 [Peer] # 客户端公钥, 生成步骤同服务器, 两端都可生成 PublicKey = client_public_key_value # 分配给客户端的地址, 我这里让他随便选, 你也可以指定给他 AllowedIPs = 10.0.0.0/24 #AllowedIPs = 10.0.0.2/32 # 加客户端就在 Peer 节点下加公钥和 IP 就可以了, 操作同上
-
提权, 免得出问题
chmod 777 -R /etc/wireguard
服务端启动
# 启动
wg-quick up wg0
# 关闭
wg-quick down wg0
# 查看状态
wg
客户端配置
下载 wireguard 就好了,都到美区下载。
配置文件如下,根据自己做相应修改。
[Interface]
# 上文生成的客户端私钥
PrivateKey = client_private_key_value
# 使用的 DNS 服务器
DNS = 1.1.1.1,8.8.8.8
# 绑定地址
Address = 10.0.0.3/24
[Peer]
# 上文生成的服务器公钥
PublicKey = server_public_key_value
# 要代理的地址, 这里是全局代理, 可根据需求调整
AllowedIPs = 0.0.0.0/0
# 服务器地址
Endpoint = server_ip:port
# 心跳包间隔时间
PersistentKeepalive = 25
电脑端还好,手机端折腾了一晚上都不行,后面发现是手输的原因,就算你输入正确也不行,还好有个 qrcode 导入方法,用 qrencode 生成,然后扫码就导入成功了 qrencode -t ansiutf8 < test.conf
参考
很酷的生成qrcode的方式qrencode : 命令行下生成二维码图片
记 WireGuard 部署及注意事项
官方连接