您现在的位置是:首页> 操作系统> Linux> CentOS 7

CentOS7手动安装WireGuard

  • 6739人已阅读
  • 时间:2021-09-07 23:23:16
  • 分类:CentOS 7
  • 作者:祥哥

祥哥看过很教程都是一键脚本。一键呢很简单也太多了,我就不说了。谈谈手动。

看官方的文档,大至就分为,升级系统内核、安装WireGuard,配置、运行。

#升级系统内核
yum -y install epel-release curl
sed -i "0,/enabled=0/s//enabled=1/" /etc/yum.repos.d/epel.repo
yum remove -y kernel-devel
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum -y --enablerepo=elrepo-kernel install kernel-ml
sed -i "s/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
yum -y --enablerepo=elrepo-kernel install kernel-ml-devel

#安装WireGuard
yum install -y yum-utils epel-release
yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
yum install -y kernel-plus wireguard-tools

#修改内核
sed -i "s/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

#关闭防火墙并禁止开机启动
systemctl stop firewalld
systemctl disable firewalld

#安装防火墙和生成二唯码工具
yum install -y qrencode iptables-services
systemctl enable iptables
systemctl start iptables
iptables -F
service iptables save

#在中继服务器上开启 IP 地址转发
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

#建立配置文件并生成服务器和客户端的公钥私钥
mkdir /etc/wireguard
cd /etc/wireguard
wg genkey | tee sprivatekey | wg pubkey > spublickey
wg genkey | tee cprivatekey | wg pubkey > cpublickey
chmod -R 777 /etc/wireguard

#生成服务端配置文件
cat > /etc/wireguard/wg0.conf <<-EOF
[Interface]
PrivateKey = #对应服务器的私钥即sprivatekey
Address = 10.88.0.1/16 
PostUp  = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -I FORWARD -s 10.88.80.1/24 -d 10.88.80.1/24 -j DROP; iptables -t nat -A POSTROUTING -o 对应自己的网卡名一般为etho -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D FORWARD -s 10.88.80.1/24 -d 10.88.80.1/24 -j DROP; iptables -t nat -D POSTROUTING -o 对应自己的网卡名一般为etho -j MASQUERADE
#端口号自定义
ListenPort = 12345
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = #对应客户端公钥
AllowedIPs = 10.88.80.2/32
EOF

#对配置文件多说两句,服务器端是用公钥解锁私钥,客户端用私钥解锁公钥
#也就是说如果配置多用户在继续生成密钥有服务端加入
[Peer]
PublicKey = #对应客户端公钥
AllowedIPs = 10.88.80.3/32
[Peer]
PublicKey = #对应客户端公钥
AllowedIPs = 10.88.80.4/32

#为了方便客户端在生成客户端
cat > /etc/wireguard/client.conf <<-EOF
[Interface]
PrivateKey = 客户端私钥
Address = 10.88.80.2/32 客户端ip对应服务端配置
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = 服务端公钥
Endpoint = 服务器IP:端口
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25
EOF

#设置开机启动WireGuard并重启服务器
systemctl enable wg-quick@wg0
reboot

#机器重启后看是否运行可以直接输入命令
wg

#可以下载生成的客户端到电脑上上网了。
#手机端可以用我们安装的二唯码工具生成二维码
#这里可以建立一个q.sh脚本
cd /etc/wireguard/
vi q.sh
echo '用户0配置'
content=$(cat /etc/wireguard/client.conf)
qrencode -o - -t UTF8 "${content}"

#保存退出后
chmod 777 q.sh
./q.sh
生成二唯码后可以用手机扫描了。


Top