A veces, las personas no están en la empresa y necesitan equipos remotos de la empresa para manejar las cosas temporalmente. Sabemos que la computadora de la empresa está en la intranet y no se puede acceder directamente desde casa. Por lo general, utilizamos herramientas que admiten asistencia remota, como QQ, pero esto requiere que alguien lo ayude a iniciar una solicitud. También hay software gratuito que admite operaciones remotas desatendidas, pero generalmente la velocidad es limitada y el período pico a menudo se congela. La empresa tiene un servidor de Alibaba Cloud con mucho tráfico gratuito, que se puede utilizar para instalar un servicio wg, y luego puede comunicarse conectando la computadora de la intranet de la empresa y la computadora de casa como cliente.
La versión centos 7 system.kernel utilizada por el servidor Alibaba Cloud de la empresa :
# uname -r3.10.0-1160.15.2.el7.x86_64
Puede utilizar los siguientes pasos para instalar:
#! / bin / bash # 判断 系统 if [! -e '/ etc / redhat-release']; luego echo "仅 支持 centos7" exit fi if [-n "$ (grep '6 \.' / etc / redhat-release)"]; luego echo "仅 支持 centos7" exit fi # 更新 内核 update_kernel () { yum - y instale 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" sed -i "s / GRUB_DEFAULT = guardado / GRUB_DEFAULT = 0 /" / etc / default / grub grub2-mkconfig -o /boot/grub2/grub.cfg wget https://elrepo.org/linux/kernel/el7/x86_64 /RPMS/kernel-ml-devel-4.19.1-1.el7.elrepo.x86_64.rpm rpm -ivh kernel-ml-devel-4.19.1-1.el7.elrepo.x86_64.rpm yum -y --enablerepo = elrepo-kernel install kernel-ml-devel read -p "¿Necesita reiniciar el VPS, ejecutar el script nuevamente para elegir instalar wireguard, reiniciar ahora? [Y / n]:" yn [-z "$ {yn}" ] && yn = "y" if [[$ yn == [Yy]]]; luego echo -e "VPS reiniciando ..." reboot fi } #Generar un puerto aleatorio rand () { min = $ 1 max = $ ( ($ 2- $ min + 1)) num = $ (gato / dev / urandom | head -n 10 | cksum | awk -F '''{imprimir $ 1}') echo $ (($ num% $ max + $ min)) } wireguard_update () { yum update -y wireguard -dkms wireguard-tools echo "Actualización completa" } wireguard_remove () { wg-quick down wg0 yum remove -y wireguard-dkms wireguard-tools rm -rf / etc / wireguard / echo "卸载 完成" } config_client () { cat> /etc/wireguard/client.conf << - EOF [Interfaz] PrivateKey = $ c1 Dirección = 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.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 / wireguard cd / etc / wireguard wg genkey | tee sprivatekey | wg pubkey> spublickey wg genkey | tee cprivatekey | wg pubkey> cpublickey s1 = $ (cat sprivatekey) s2 = $ (cat spublickey) c1 = $ (cat cprivatekey) c2 = $ (cat cpublickey) serverip = $ (curl ipv4.icanhazip.com) systemctl detener firewalld systemctl deshabilitar firewalld puerto = $ (rand 10000 60000 ) eth = $ (ls / sys / class / net | awk '/ ^ e / {print}') chmod 777 -R / etc / wireguard yum install -y iptables-services systemctl enable iptables systemctl start iptables iptables -P INPUT ACCEPT iptables -P SALIDA ACEPTAR iptables -P FORWARD ACEPTAR iptables -F servicio iptables guardar servicio iptables reiniciar echo 1> / proc / sys / net / ipv4 / ip_forward echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p cat> /etc/wireguard/wg0.conf << - EOF [Interfaz] PrivateKey = $ s1 Dirección = 10.0.0.1/24 PostUp = echo 1> / proc / sys / net / ipv4 / ip_forward; iptables -A ADELANTE -i wg0 -j ACEPTAR; iptables -A FORWARD -o wg0 -j ACEPTAR; iptables -t nat -A POSTROUTING -o $ eth -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACEPTAR; iptables -D FORWARD -o wg0 -j ACEPTAR; iptables -t nat -D POSTROUTING -o $ eth -j MASQUERADE ListenPort = $ port DNS = 114.114.114 MTU = 1420 [Peer] PublicKey = $ c2 AllowIPs = 10.0.0.2/24 EOF config_client wg-quick up wg0 systemctl enable wg -quick @ wg0 content = $ (cat /etc/wireguard/client.conf) echo "电脑 端 请 下载 client.conf , 手机 端 可 直接 使用 软件 扫 码" echo "$ {content}" | qrencode -o - -t UTF8 } add_user () { echo -e "\ 033 [37; 41m Asigne al nuevo usuario un nombre, que no se pueda repetir con el usuario existente \ 033 [0m" read -p "Introduzca el nombre de usuario:" newname wg set wg0 peer $ (cat tempubkey) permitido-ips 10.0.0. $ newnum / 32 cd / etc / wireguard / cp client.conf $ newname.conf wg genkey | tee temprikey | wg pubkey> tempubkey ipnum = $ (grep Permitido /etc/wireguard/wg0.conf | tail -1 | awk -F '[./]' '{print $ 6}') newnum = $ ((10 # $ {ipnum} +1)) sed -i 's% ^ PrivateKey. * $%' "PrivateKey = $ (cat temprikey)" '%' $ newname.conf sed -i 's% ^ Address. * $%' "Address = 10.0 .0. $ Newnum \ / 24 "'%' $ newname.conf cat >> /etc/wireguard/wg0.conf << - EOF [Peer] PublicKey = $ (cat tempubkey) AllowIPs = 10.0.0. $ Newnum / 24 EOF echo -e "\ 033 [37; 41m 添加 完成 , 文件 : /etc/wireguard/$newname.conf \ 033 [0m" Echo "Introducción: Aplicable a CentOS7" echo "Autor: atrandys" echo "Sitio web: www.atrandys.com" echo "Youtube: atrandys" echo "================ == ====== " echo" 1. Actualizar el kernel del sistema " echo" 2. Instalar wireguard " echo" 3. Actualizar wireguard " echo" 4. Desinstalar wireguard " echo" 5. Mostrar el código QR del cliente " echo" 6. Aumentar usuarios " echo" 0. Salir del script " echo read -p" Por favor ingrese un número: "num case" $ num "en 1) update_kernel ;; 2) wireguard_install ;; 3) wireguard_update ;; 4) wireguard_remove ;; 5) contenido = $ (cat /etc/wireguard/client.conf) echo "$ {content}" | qrencode -o - t UTF8 ;; 6) add_user ;; 0) exit 1 ;; *) clear echo "Por favor ingrese el número correcto" sleep 5s start_menu ;; esac } start_menu
Copie el código anterior en un archivo de secuencia de comandos como install_wireguard.sh y agregue permisos ejecutables al archivo. Utilice el usuario root o sudo para ejecutar el archivo de script:
# ./install_wireguard.sh ========================= Introducción: Aplicable a CentOS7 Autor: sitio web de atrandys : www.atrandys.com Youtube: atrandys = ======================== 1. Actualizar el kernel del sistema 2. Instalar wireguard 3. Actualizar wireguard 4. Desinstalar wireguard 5. Mostrar el código QR del cliente 6. Aumentar usuarios 0. Salir de la secuencia de comandos Introduzca un número: 2
Al ver que el menú 2 es para instalar wireguard, ingrese 2 para comenzar a instalar wg.
Después de ejecutar el script, ejecute systemctl status wg-quick @ wg0 para verificar si la instalación es exitosa:
# systemctl status wg-quick @ wg0
● [email protected] - WireGuard a través de wg-quick (8) para wg0
Cargado: cargado (/usr/lib/systemd/system/[email protected]; habilitado; proveedor preestablecido: desactivado)
Activo: activo (salido) desde el viernes 12 de marzo de 2021 a las 10:31:12 CST; Hace 44 segundos
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
Proceso: 28364 ExecStart = / usr / bin / wg- rápido% i (código = salido, estado = 0 / ÉXITO)
PID principal: 28364 (código = salido, estado = 0 / ÉXITO)
Ver activo significa que la instalación se ha realizado correctamente.
A continuación, puede generar el archivo de configuración del cliente.
O ejecute install_wireguard.sh y vea la entrada del directorio 6, que es la opción de aumentar los usuarios:
========================= Introducción: Aplicable a CentOS7 Creador: sitio web de atrandys : www.atrandys.com Youtube: atrandys ====== = ================== 1. Actualizar el kernel del sistema 2. Instalar wireguard 3. Actualizar wireguard 4. Desinstalar wireguard 5. Mostrar el código QR del cliente 6. Aumentar el usuario 0. Salir del script Por favor ingrese el número: 6 para darle al nuevo usuario un nombre, que no se puede repetir con el usuario existente Por favor ingrese el nombre de usuario: inicio
El nombre de usuario puede ser recogido por usted mismo, simplemente no lo repita y lo distinga bien. Recuerde presionar enter después de ingresar el nombre de usuario .
Después de que la ejecución sea exitosa, puede encontrar el archivo de configuración del cliente correspondiente en el directorio / etc / wirguard / , como home.conf.
Vuelva a ejecutarlo para generar el archivo company.conf .
Copie el archivo home.conf y el archivo company.conf en las computadoras de la oficina doméstica y de la empresa respectivamente. Las computadoras de la casa y de la empresa son sistemas Windows. Simplemente descargue el paquete de instalación correspondiente e instálelo, al igual que instalar un software normal. Después de la instalación, ábralo, importe el archivo de configuración del cliente y haga clic en Activar.
Se puede ejecutar en la computadora de la oficina:
ping 10.0.0.1
Si se puede hacer ping, significa que la red es exitosa.
Luego, puede usar la computadora de su hogar (10.0.0.3) para acceder de forma remota a la computadora de la empresa (10.0.0.4). La dirección IP específica está relacionada con el orden en que se agrega el cliente. Puede consultar el archivo de configuración del cliente correspondiente para determinar su IP:
[Interfaz]
PrivateKey = aCfyRy96aMx / gLM + SRpnmYWUBGqr + 9bdSLk2OyNK7k8 =
Dirección = 10.0.0.3/24
DNS = 114.114.114.114
MTU = 1420[Mirar]
.......
Si necesita instalar wirguard sin conexión, puede descargar el archivo rpm correspondiente directamente , o puede usar yumdownloader para descargar el archivo rpm en una máquina que pueda conectarse a Internet.
Después de la descarga, ingrese al directorio donde se encuentra el archivo rpm de wirguard y ejecute:
rpm -ivh * .rpm --nodeps --force
Si el sistema no ha instalado iptables-service previamente, debe ingresar a la carpeta rpm correspondiente y ejecutar el comando anterior para instalar.
Después de que la instalación sea exitosa, modifique la función de instalación correspondiente al script install_wireguard.sh anterior :
# centos7 安装 wireguardwireguard_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 / wireguard cd / etc / wireguard wg genkey | tee sprivatekey | wg pubkey> spublickey wg genkey | tee cprivatekey | wg pubkey> cpublickey s1 = $ (cat sprivatekey) s2 = $ (cat spublickey) c1 = $ (cat cprivatekey) c2 = $ (cat cpublickey) serverip = $ (curl ipv4.icanhazip.com) puerto = $ (rand 10000 60000) eth = $ (ls / sys / class / net | awk '/ ^ e / {print}') chmod 777 -R / etc / wireguard systemctl detener firewalld systemctl deshabilitar firewalld # yum install -y iptables-services systemctl habilitar iptables systemctl iniciar iptables iptables -P ENTRADA ACEPTAR iptables -P SALIDA ACEPTAR iptables -P FORWARD ACCEPT iptables -F servicio iptables guardar servicio iptables reiniciar echo 1> / proc / sys / net / ipv4 / ip_forward echo "net. ipv4.ip_forward = 1 ">> /etc/sysctl.conf sysctl -p
Es decir, se comentan todas las operaciones que requieren Internet. Luego ejecute el script, elija 2: instale wireguard en él. El método para agregar un cliente es el mismo que en el servidor de Alibaba Cloud , así que no lo repetiré.
Al ver esto, todo salió bien y la instalación sin conexión forzada aún no se ha reflejado . Esto menciona una experiencia de instalación fuera de línea. La versión del sistema también es Centos7, pero la versión del kernel es: 3.10.0-862. Es básicamente la misma que la versión del kernel del servidor Alibaba Cloud de la compañía, excepto por una pequeña diferencia al final del número de versión, pero con tal pequeña diferencia, la instalación no se realizó correctamente. Después de instalar wg sin conexión de la forma anterior, use systemctl status wg-quick @ wg0 para verificar la falla en ejecución. Utilice wg-quick up wg0 para iniciar el informe de wg:
#sudo wg-quick up wg0
[#] enlace IP agregar protector de cable tipo wg0
No se puede acceder a la interfaz: protocolo no admitido
[#] enlace IP eliminar dev wg0
No se puede encontrar el dispositivo "wg0"
La mayoría de los problemas de búsqueda a través de mensajes de error se resuelven actualizando el kernel, pero el entorno y el tiempo actuales no permiten actualizar el kernel. Tiene que continuar explorando, intente recompilar e instalar wireguard usando dkms build:
dkms build wirguard / 1.0.20210219-1
Se informó un error. Según el mensaje de error, hay un error en el archivo socket.c. Busque la línea de código correspondiente al archivo fuente correspondiente. Descubrí que la función del viaje de negocios está relacionada con ipv6. Afortunadamente, no usamos ipv6 y comentamos el código de error directamente:
¡Ejecute dkms build nuevamente con éxito! Y luego ejecutar
dkms instalar wirguard / 1.0.20210219-1
¡Ejecute wg-quick up wg0 nuevamente para iniciar wg y tendrá éxito!