Centos 7 下安装 Wireguard

https://www.wireguard.com/

一 wireguard 介绍:

wireguard简介

wireguard是一个新的高性能V**,wireguard相对于OpenV**来说,配置起来更加简单,运行速度也更快,linux内核5.6中了合并了它,以后的版本大概率能用上原生的wireguard了.

二 centos7 下部署wireguard:

官方安装文档: https://www.wireguard.com/install/

# Wireguard 是内核级别的特性,对内核的版本是有要求的,最好先升级一下内核. 官方给出来了3种安装方式,任选一种即可:
# 此处选择centos7的安装内容,其他的系统在列表里面自行查找.
系    统:  centos 7.x
内核要求:  > 3.10 (uname -r)

### Method 1: a signed module is available as built-in to CentOS's kernel-plus:
$ sudo yum install yum-utils epel-release
$ sudo yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
$ sudo sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
$ sudo yum install kernel-plus wireguard-tools
$ sudo reboot

### Method 2: users wishing to stick with the standard kernel may use ELRepo's pre-built module:
$ sudo yum install epel-release elrepo-release
$ sudo yum install yum-plugin-elrepo
$ sudo yum install kmod-wireguard wireguard-tools

### Method 3: users running non-standard kernels may wish to use the DKMS package instead:
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
$ sudo yum install wireguard-dkms wireguard-tools

三 wireguard 配置:

# 3.1) 创建目录:
mkdir -p /etc/wireguard

# 3.2) 创建server端的公私钥:
wg genkey | tee privatekey-server | wg pubkey > publickey-server 

# 3.3) 创建client端的公私钥:
wg genkey | tee privatekey-client | wg pubkey > publickey-client

# 3.4) 创建配置文件:

[root@bj-vnp wireguard]# cat wg0.conf
[Interface]
Address = 10.10.0.1/24
SaveConfig = false
DNS = 8.8.8.8
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = UG0DrMJ1jQmaExSy6LOOwanDFyplfSgBtzCUKmL772k=

# 添加新用户,就新生成一组秘钥对,此处加入peer,后面可以有很多.
# office 
[Peer]
PublicKey = zy3IkHgq6SdM
AllowedIPs = 10.10.0.2                                              

# home
[Peer]
PublicKey = t6ab6f6j2
AllowedIPs = 10.10.0.3


################################################################################################
Interface:   服务端的配置端口 DNS  IP  规则, 私钥都在这个栏目下配置
Address  :   服务端IP地址, 主要要加上 子网掩码,内网服务可以写内网地址,在路由器上做好端口映射即可.
SaveConfig:  
DNS      :  取得的DNS地址 8.8.8.8 
PostUp   :  服务端启动后,添加这个规则,用于伪装和转发各种流量.
PostDown :  服务端关闭后,执行这个命令规则,清理启动时添加的规则.
ListenPort: wireguard 默认端口51820.
PrivateKey: 注意此处填写的是服务端的私钥.

[Peer]   :   声明一个节点
PublicKey:  该节点的公钥
ALLowedIPs: 连接后获取的地址.  注意此处只需要分配一个固定的IP地址即可.


# 3.5) 开启内核转发功能,系统其它设置打开转发:

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p

四 启动,停止,查看状态:

# 4.0 )不中断活跃连接的情况下重新加载配置文件:
wg syncconf wg0 <(wg-quick strip wg0)

# 4.1 ) 启动 wireguard:
wg-quick down wg0 && wg-quick up wg0

wg-quick up wg0

[root@bj-vpn wireguard]# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] mount `8.8.8.8' /etc/resolv.conf
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 4.2 ) 停止 wireguard:
wg-quick down wg0

[root@bj-vpn wireguard]# wg-quick down wg0
[#] ip link delete dev wg0
[#] umount /etc/resolv.conf
[#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 4.3 ) 查看wireguard 客户端状态:
wg

[root@bj-vpn wireguard]# wg
interface: wg0
  public key: sIPp+stGXBz
  private key: (hidden)
  listening port: 51820

peer: zy3IkHgq6Sd
  allowed ips: 10.10.0.2/32

peer: t6ab6f6j2Rw
  allowed ips: 10.10.0.3/32

五 客户端的下载安装:

https://www.wireguard.com/install/

# windows:
https://download.wireguard.com/windows-client/wireguard-installer.exe

打开软件 - 左下角 新建空隧道 - (填写内容) - 起个名字 


[Interface]
PrivateKey =  < 这里填写 Client 上 privatekey 的内容 >    
ListenPort = 51820
Address = 10.10.0.2/24
DNS = 8.8.8.8      # 连接后使用的 DNS, 如果要防止 DNS 泄露,建议使用内网的 DNS 服务器

[Peer]
PublicKey =  < 这里填写 Server 上 publickey 的内容 >
AllowedIPs = 10.10.0.0/16, 192.168.10.0/24, 192.168.2.0/23     # 指定要访问的服务端网段,或者设置0.0.0.0/0来进行全局代理.
Endpoint = 公网IP:51820    # 服务端公网暴露地址,51280 指定的端口,可以更改.
PersistentKeepalive = 25

*** 如果有其他的就按照上面的[Peer]继续添加即可.

保存后直接点-连接-就能看到是否连接上,日志项也能查看过程.


**** 重要提示 ****:
    server 端[Peer]下的AllowedIPs 是写链接过来后获取的IP地址. 类似分配一个固定的IP地址
    client 端[Peer]下的AllowedIPs 是写的那些网段的路由可以通过WG0转发,如果全局都要走wireguard就设置成0.0.0.0/0 。

示意图:

posted @ 2022-03-24 13:16  风满楼9527  阅读(5045)  评论(0编辑  收藏  举报