隧道中转一键脚本

WireGuard是一个极简而快速的加密VPN实现,以Linux内核模块的形式运行,比起传统的 IPSec、OpenVN 等,效率更高、搭建更便捷,通过UDP协议进行数据传输,即使IP被墙也能使用。通过在两台服务器之间组建WireGuard隧道,变成伪 IPLC专线,这种利用软件手段实现的也叫做MPLS专线。

安装WireGuard

yum update -y && yum install curl -y
reboot # unless there were no updates
curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum install epel-release -y
yum install wireguard-dkms wireguard-tools -y

注意:因为Wireguard对内核的版本有要求,部分操作也需要自定义内核做支持,所以部分bbr内核不支持自定义的是没法安装了。利用yum安装的时候会把内核升级到最低版本要求(如果比最低版本低的话),所以常规安装后不需要再去特定调整内核,但是不要在日后的软件安装中进行内核的更换就好了。

生成公钥和私钥

进入到Wireguard默认配置目录,通常为/etc/wireguard目录,由于Wireguard通信需要依靠公钥和私钥进行相互鉴权,所以我们需要在服务器上生成公钥和私钥文件,执行下列命令:

cd /etc/wireguard
wg genkey | tee privatekey | wg pubkey > publickey 
chmod 777 -R /etc/wireguard

配置服务端/客户端

这里的服务端和客户端是对等的,服务器既可叫客户端也可叫服务端(意思就是可以相互连接),我们这里为了区分定义为:国内机为客户端,国外机为服务端;文章源自技术白-https://jishubai.com/112.html

1、在服务端和客户端的/etc/wireguard目录下分别创建一个名称为wg0.conf的文件,直接命令行输入下列命令:

vi wg0.conf

在服务端也就是国外机的wg0.conf文件输入以下内容,在命令行输入cat privatekey和cat publickey命令可分别查看内容,##号及后面为注释内容,不用复制粘贴这个内容;

[Interface]
Address = 192.168.1.1/24   ##这里是自定义的服务端内网IP
[Interface]
Address = 192.168.1.1/24
ListenPort = 51820
PrivateKey = < 这里填写 服务端 上 privatekey 的内容 >
DNS = 1.0.0.1
MTU = 1300
 
# Client
[Peer]
PublicKey = < 这里填写 客户端 上 publickey 的内容 >
AllowedIPs = 192.168.1.1/24

在客户端的也就是国内机的wg0.conf文件内容如下:

[Interface]
PrivateKey = < 这里填写 客户端 上 privatekey 的内容 >
Address = 192.168.1.2/24
DNS = 1.0.0.1
MTU = 1300
 
# Server
[Peer]
PublicKey = < 这里填写 服务端 上 publickey 的内容 >
Endpoint = <填写服务端公网IP>:51820  
AllowedIPs = 192.168.1.1/24
PersistentKeepalive = 25

最后在两台服务器上分别输入下方启动命令启动服务:

wg-quick up wg0  ##启动wg0虚拟网卡
wg-quick down wg0 ##关闭wg0网络 
wg                ##查看当前的运行情况

5、输入wg命令可以查看到隧道已建立,可以互相在服务器上ping对方的内网IP查看是否有延时数据,比如在192.168.1.1服务器上输入:ping 192.168.1.2

隧道中转:此时在国外服务器中,搭建各类服务或转发流量到其它机器,通过国内机公网IP连接,流量就会通过WG内网隧道传输。

最后更新于