0%

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服务端

  1. 服务端打开端口转发

    # 打开转发
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

    # 应用规则
    sysctl -p
  2. 查看连接外网的网卡名称 ip addr,一般是 lo 后面那一个,比如 eth0。

  3. 新建配置文件 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 就可以了, 操作同上
  4. 提权, 免得出问题 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 部署及注意事项
官方连接