自己搭建远程办公网络及强制离线安装wireguard记录

2024-03-13 03:50

本文主要是介绍自己搭建远程办公网络及强制离线安装wireguard记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有时候人不在公司,临时有事需要远程公司电脑处理事情。我们知道公司电脑是在内网中的的,在家里是不能直接访问到的。我们一般使用QQ等支持远程协助的工具,但这样需要有人帮你发起请求,也有免费的软件支持无人值守远程操作,但一般会限速,高峰期经常卡顿。公司正好有台阿里云服务器流量空闲的比较多正好可以用来装个wireguard服务,然后在把公司内网电脑和家里的电脑做为客户端连接上就可以互通 了。

公司阿里云服务器使用的centos 7系统.kernel版本:

# uname -r
3.10.0-1160.15.2.el7.x86_64

可以使用下面的脚步安装:

#!/bin/bash#判断系统
if [ ! -e '/etc/redhat-release' ]; then
echo "仅支持centos7"
exit
fi
if  [ -n "$(grep ' 6\.' /etc/redhat-release)" ] ;then
echo "仅支持centos7"
exit
fi#更新内核
update_kernel(){yum -y install epel-release curlsed -i "0,/enabled=0/s//enabled=1/" /etc/yum.repos.d/epel.repoyum remove -y kernel-develrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpmyum --disablerepo="*" --enablerepo="elrepo-kernel" list availableyum -y --enablerepo=elrepo-kernel install kernel-mlsed -i "s/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/" /etc/default/grubgrub2-mkconfig -o /boot/grub2/grub.cfgwget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.1-1.el7.elrepo.x86_64.rpmrpm -ivh kernel-ml-devel-4.19.1-1.el7.elrepo.x86_64.rpmyum -y --enablerepo=elrepo-kernel install kernel-ml-develread -p "须要重启VPS,再次执行脚本选择安装wireguard,是否如今重启 ? [Y/n] :" yn[ -z "${yn}" ] && yn="y"if [[ $yn == [Yy] ]]; thenecho -e "VPS 重启中..."rebootfi
}#生成随机端口
rand(){min=$1max=$(($2-$min+1))num=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')echo $(($num%$max+$min))  
}wireguard_update(){yum update -y wireguard-dkms wireguard-toolsecho "更新完成"
}wireguard_remove(){wg-quick down wg0yum remove -y wireguard-dkms wireguard-toolsrm -rf /etc/wireguard/echo "卸载完成"
}config_client(){
cat > /etc/wireguard/client.conf <<-EOF
[Interface]
PrivateKey = $c1
Address = 10.0.0.2/24 
DNS = 114.114.114.114
MTU = 1420[Peer]
PublicKey = $s2
Endpoint = $serverip:$port
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25
EOF}#centos7安装wireguard
wireguard_install(){curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repoyum install -y dkms gcc-c++ gcc-gfortran glibc-headers glibc-devel libquadmath-devel libtool systemtap systemtap-develyum -y install wireguard-dkms wireguard-toolsyum -y install qrencodemkdir /etc/wireguardcd /etc/wireguardwg genkey | tee sprivatekey | wg pubkey > spublickeywg genkey | tee cprivatekey | wg pubkey > cpublickeys1=$(cat sprivatekey)s2=$(cat spublickey)c1=$(cat cprivatekey)c2=$(cat cpublickey)serverip=$(curl ipv4.icanhazip.com)port=$(rand 10000 60000)eth=$(ls /sys/class/net | awk '/^e/{print}')chmod 777 -R /etc/wireguardsystemctl stop firewalldsystemctl disable firewalldyum install -y iptables-services systemctl enable iptables systemctl start iptables iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -Fservice iptables saveservice iptables restartecho 1 > /proc/sys/net/ipv4/ip_forwardecho "net.ipv4.ip_forward = 1" >> /etc/sysctl.confsysctl -p
cat > /etc/wireguard/wg0.conf <<-EOF
[Interface]
PrivateKey = $s1
Address = 10.0.0.1/24 
PostUp   = echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o $eth -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o $eth -j MASQUERADE
ListenPort = $port
DNS = 114.114.114
MTU = 1420[Peer]
PublicKey = $c2
AllowedIPs = 10.0.0.2/24
EOFconfig_clientwg-quick up wg0systemctl enable wg-quick@wg0content=$(cat /etc/wireguard/client.conf)echo "电脑端请下载client.conf,手机端可直接使用软件扫码"echo "${content}" | qrencode -o - -t UTF8
}
add_user(){echo -e "\033[37;41m给新用户起个名字,不能和已有用户重复\033[0m"read -p "请输入用户名:" newnamecd /etc/wireguard/cp client.conf $newname.confwg genkey | tee temprikey | wg pubkey > tempubkeyipnum=$(grep Allowed /etc/wireguard/wg0.conf | tail -1 | awk -F '[ ./]' '{print $6}')newnum=$((10#${ipnum}+1))sed -i 's%^PrivateKey.*$%'"PrivateKey = $(cat temprikey)"'%' $newname.confsed -i 's%^Address.*$%'"Address = 10.0.0.$newnum\/24"'%' $newname.confcat >> /etc/wireguard/wg0.conf <<-EOF
[Peer]
PublicKey = $(cat tempubkey)
AllowedIPs = 10.0.0.$newnum/24
EOFwg set wg0 peer $(cat tempubkey) allowed-ips 10.0.0.$newnum/32echo -e "\033[37;41m添加完成,文件:/etc/wireguard/$newname.conf\033[0m"rm -f temprikey tempubkey
}
#开始菜单
start_menu(){clearecho "========================="echo " 介绍:适用于CentOS7"echo " 做者:atrandys"echo " 网站:www.atrandys.com"echo " Youtube:atrandys"echo "========================="echo "1. 升级系统内核"echo "2. 安装wireguard"echo "3. 升级wireguard"echo "4. 卸载wireguard"echo "5. 显示客户端二维码"echo "6. 增长用户"echo "0. 退出脚本"echoread -p "请输入数字:" numcase "$num" in1)update_kernel;;2)wireguard_install;;3)wireguard_update;;4)wireguard_remove;;5)content=$(cat /etc/wireguard/client.conf)echo "${content}" | qrencode -o - -t UTF8;;6)add_user;;0)exit 1;;*)clearecho "请输入正确数字"sleep 5sstart_menu;;esac
}start_menu

把上面的代码复制到脚步文件如install_wireguard.sh并为文件添加可执行权限。使用root用户或sudo执行脚本文件:

# ./install_wireguard.sh 
=========================介绍:适用于CentOS7做者:atrandys网站:www.atrandys.comYoutube:atrandys
=========================
1. 升级系统内核
2. 安装wireguard
3. 升级wireguard
4. 卸载wireguard
5. 显示客户端二维码
6. 增长用户
0. 退出脚本请输入数字:2

看到菜单2是安装wireguard的,输入2,就开始安装wireguard了。

脚本执行完成后,执行 systemctl status wg-quick@wg0检查是否安装成功:

# systemctl status wg-quick@wg0
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
   Loaded: loaded (/usr/lib/systemd/system/wg-quick@.service; enabled; vendor preset: disabled)
   Active: active (exited) since Fri 2021-03-12 10:31:12 CST; 44s ago
     Docs: man:wg-quick(8)
           man:wg(8)
           https://www.wireguard.com/
           https://www.wireguard.com/quickstart/
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
  Process: 28364 ExecStart=/usr/bin/wg-quick up %i (code=exited, status=0/SUCCESS)
 Main PID: 28364 (code=exited, status=0/SUCCESS)

看到active就代表安装成功了.

接下来就可以生成客户端配置文件了.

还是执行install_wireguard.sh,看到目录输入6,也就是增长用户选项:

=========================介绍:适用于CentOS7做者:atrandys网站:www.atrandys.comYoutube:atrandys
=========================
1. 升级系统内核
2. 安装wireguard
3. 升级wireguard
4. 卸载wireguard
5. 显示客户端二维码
6. 增长用户
0. 退出脚本请输入数字:6
给新用户起个名字,不能和已有用户重复
请输入用户名:home

用户名可以自己取,不重复好分辩就好。输入用户名后记得敲回车。

执行成功后就可以在/etc/wirguard/ 目录下找到对应的客户端配置文件了,如home.conf。

再执行一次,生成company.conf文件。

分别把home.conf文件和company.conf文件复制到家里和公司的办公电脑。家里和公司的电脑是windows系统,直接下载对应的安装包安装就可以了,跟安装普通的软件一样.安装好后打开,导入客户端配置文件再点Activate就可以了:

可以在办公电脑上执行:

ping 10.0.0.1 

如果能ping通就代表组网成功了.

接下来你就可以使用家里的电脑(10.0.0.3)远程访问公司的电脑(10.0.0.4)了。具体IP地址跟客户端添加顺序有关。你可以查看对应客户端配置文件确定其IP:

[Interface]
PrivateKey = aCfyRy96aMx/gLM+SRpnmYWUBGqr+9bdSLk2OyNK7k8=
Address = 10.0.0.3/24
DNS = 114.114.114.114
MTU = 1420

[Peer]

.......

如果需要离线安装wirguard可以直接下载对应的rpm文件,也可以使用yumdownloader在可以联互联网的机器上下载好的rpm文件.

下载好后进入wirguard rpm文件所在目录执行:

rpm -ivh *.rpm --nodeps --force

如果系统先前没有安装iptables-service还需要进入相应rpm文件夹,执行上面的命令安装.

安装成功后修改上面的install_wireguard.sh脚本对应的安装函数:

#centos7安装wireguard
wireguard_install(){# 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 -y dkms gcc-c++ gcc-gfortran glibc-headers glibc-devel libquadmath-devel libtool systemtap systemtap-devel# yum -y install wireguard-dkms wireguard-tools# yum -y install qrencode# mkdir /etc/wireguardcd /etc/wireguardwg genkey | tee sprivatekey | wg pubkey > spublickeywg genkey | tee cprivatekey | wg pubkey > cpublickeys1=$(cat sprivatekey)s2=$(cat spublickey)c1=$(cat cprivatekey)c2=$(cat cpublickey)serverip=$(curl ipv4.icanhazip.com)port=$(rand 10000 60000)eth=$(ls /sys/class/net | awk '/^e/{print}')chmod 777 -R /etc/wireguardsystemctl stop firewalldsystemctl disable firewalld# yum install -y iptables-services systemctl enable iptables systemctl start iptables iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -Fservice iptables saveservice iptables restartecho 1 > /proc/sys/net/ipv4/ip_forwardecho "net.ipv4.ip_forward = 1" >> /etc/sysctl.confsysctl -p

也就是注释掉了所有需要互联网的操作。然后再执行脚本,选择2:安装wireguard就可以了。添加客户端的方式跟先前在阿里云服务器上一样,不再赘述。

看到这里,都挺顺利的,还没体现强制离线安装。这样提到一次离线安装经历。系统版本也是Centos7,但内核版本是:3.10.0-862.与公司阿里云服务器内核版本基本一样,只是在版本号的最后有点小差别,但就是这么小的差别,安装就是不成功。按照上面的方式离线安装wirguard后,使用systemctl status wg-quick@wg0查看运行失败。使用wg-quick up wg0启动wireguard报:

#sudo wg-quick up wg0

[#] ip link add wg0 type wireguard

Unable to access interface: Protocol not supported

[#]ip link delete dev wg0

Cannot find device "wg0"

通过错误信息搜索问题大多是选择升级内核解决,但目前环境和时间不允许做升级内核操作。只得继续探索,尝试使用dkms build重新编译安装wireguard:

dkms build wirguard/1.0.20210219-1 

竟然报错了,根据错误提示信息是socket.c文件中有错误,找到对应源码文件对应代码行。发现出差的函数跟ipv6有关,还好我们没用ipv6,直接注释掉出错的代码:

再次执行dkms build成功!然后在执行

dkms install wirguard/1.0.20210219-1 

再次执行wg-quick up wg0启动wireguard就成功了!!!

 

这篇关于自己搭建远程办公网络及强制离线安装wireguard记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/803560

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~