Construya su propia red de oficina remota y fuerce la instalación fuera de línea de registros wg

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!


Supongo que te gusta

Origin blog.51cto.com/14256460/2661075
Recomendado
Clasificación