Linux WireGuard 一键安装脚本

安装安装

wget https://raw.githubusercontent.com/yobabyshark/wireguard/master/wireguard_install.sh && chmod +x wireguard_install.sh && ./wireguard_install.sh

# 验证是否安装成功
[root@localhost ~]# modprobe wireguard && lsmod | grep wireguard
wireguard             204791  0 
ip6_udp_tunnel         12755  1 wireguard
udp_tunnel             14423  1 wireguard

安装后配置文件目录(/etc/wireguard/)里的文件:

wireguard/
├── client.conf     #客户端配置文件
├── cprivatekey     #客户端私钥
├── cpublickey         #客户端公钥
├── sprivatekey     #服务端私钥
├── spublickey         #服务端公钥
└── wg0.conf         #服务端配置信息

配置说明

WireGuard的多用户配置特别简单,只需要生成一对客户端密匙(公匙+私匙),在服务端配置文件中新增一段 [Peer] 写上新的客户端公匙和客户端的内网IP地址即可。(当然我们可以用命令快捷添加,或者手动修改服务端配置文件也行。)

而各客户端账号配置文件的区别也只是 [Interface] 中的客户端私匙和客户端内网IP地址不同罢了。

另外我们需要明白一个对等原则:

服务端配置文件中的 [Interface] 是保存自己的服务端私匙,而客户端配置文件中的 [Interface] 同样保存自己的客户端私匙。
服务端配置文件中的 [Peer] 是保存客户端的公匙,而客户端配置文件中的 [Peer] 是保存服务端的公匙。
服务端与客户端都是互相保存自己的私匙在 [Interface] 中,互相保存对方公匙在 [Peer] 中。

如果在Centos7操作,注意跑下yum update(对内核版本有要求)
系统转发注意开启

net.ipv4.ip_forward = 1

#服务器常用命令:
    wg show wg0                     #查看wg0虚拟网卡当前状态
    systemctl status wg-quick@wg0
    systemctl restart wg-quick@wg0

#开启关闭wg指令:
wg-quick up wg0
wg-quick down wg0

# 默认wg0.conf文件:
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = firewall-cmd --zone=public --add-port 3306/udp && firewall-cmd --zone=public --add-masquerade
PostDown = firewall-cmd --zone=public --remove-port 3306/udp && firewall-cmd --zone=public --remove-masquerade
ListenPort = 3306
PrivateKey = 4KQWlx+Md0I5uHj+D9DjJZAwpTFFjG7E03/9FFjjJ3o=

[Peer]
PublicKey = 6enJBddxwwaIrD4lV6g9Uiz+RDmh7NGmyYrFbGpJuF0=
AllowedIPs = 10.0.0.2/32

WireGuard 配置说明

[Interface]
ListenPort = 8002  #本机监听 WireGuard 端口
PrivateKey = 填写本机的 privatekey 内容  #本机加密私钥
DNS = 1.1.1.1  #强制本机使用 DNS 服务器
MTU = 1300  #强制本机使用指定 MTU 值
#Table = 100 #强制本机将注入系统的路由的 table 指定为 100 ( 系统默认为 255 和 254 )
#PostUp = ip rule add from 10.10.1.0/24 table 100 ; ip rule add from 10.10.2.0/24 table 100
#PreDown = ip rule delete from 10.10.1.0/24 table 100 ; ip rule delete from 10.10.2.0/24 table 100

[Peer]
PublicKey = 填写对端的 publickey 内容  #本机加密的对端公钥(加密后数据仅对端可以解密)
AllowedIPs = 172.16.1.11/32  #本机允许的对端设备的 IP 地址段,其实就是在本机中这个虚拟网卡对端都有哪些设备 IP 地址(多 peer 不可重复)
Endpoint = another.domain.name:8001  #对端 WireGuard 的外部 IP(可以有一侧的 IP 地址是虚假的公网 IP)
PersistentKeepalive = 25   #当会话存在一端 IP 地址为 NAT 地址或虚假公网 IP 地址时,由该方阶段性每 25 秒发送 keepalive 报文保持会话的可用性,防止被设备终止。

在上方基础上,额外要注意的是
1、如果你存在多个 [Peer] ,则在下面直接增加一个新的 [Peer] 栏目
2、如果多个 Peer 存在不同的 IP,请不要让 AllowedIPs 存在重叠的 IP 地址段(比如配置多个相同/24 只有一个生效)
3、Endpoint 既支持以域名的方式访问,也支持以 IP 的方式访问。
4、会话链接的建立只要保证两端数据在一台设备上成功协商,即使有一端 IP 地址后期变更过也不会影响 VPN 的稳定性。
5、使用命令 wg 可以看到当前服务的运行情况。
6、如果你是本来打算连服务器的移动端,则在配置中你需要将移动端的 "AllowedIPs =" 补写一条内容 0.0.0.0/0,::0 以允许所有流量
7、前面标注 # 的三条内容,作为 iproute2 的使用方式,通过指定路由条目的 table 与 ip rule 联动控制策略流量转发。
8、PreUp,PostUp,PreDown,PostDown 这四个命令参数,是作为 wg-quick 快速设置/删除接口之前/之后由 bash(1)执行的四条命令,常用于配置自定义 DNS 或防火墙规则。 特殊字符串 %i 作为变量替代所控制的 INTERFACE 配置名。 每个命令参数都支持多条命令,参数内的多条命令将按前后顺序依次执行。

非特殊说明,本博所有文章均为博主原创。

备注:相关侵权、举报、投诉及建议等,请联系站长

添加新评论

昵称
邮箱
网站