debian/ubuntu/windows配置wiregurad内网服务器(包含掉线自启动)

这篇具有很好参考价值的文章主要介绍了debian/ubuntu/windows配置wiregurad内网服务器(包含掉线自启动)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文主要用来讲解如何配置wireguard服务器、客户端及掉线自启动的全套流程。

WireGuard 是一种轻量级的虚拟专用网协议,旨在提供快速、安全、简单的网络连接。它是由 Jason Donenfeld 在 2015 年发明的,并于 2018 年正式发布。

WireGuard 与其他常见的协议相比,有许多优点,如更小的代码库、更快的速度、更低的系统资源消耗、更简单的架构和更安全的加密方式。它通常用于个人电脑、服务器、移动设备等,可以帮助用户保护其在线隐私、提高网络安全性、解除网络限制等。

WireGuard 使用了自己的加密协议,使用了高效的数据包格式和高效的握手机制,可以提高网络速度和效率。它还使用了新型的密钥管理方式,可以更快地完成握手和通信。

总的来说,WireGuard 是一种非常优秀的协议,它提供了快速、安全、简单的网络连接,可以帮助用户保护其在线隐私、提高网络安全性、解除网络限制等。

IPsec 和 Open微皮恩等大多数其他解决方案是几十年前开发的。安全研究人员和内核开发人员 Jason Donenfeld 意识到它们速度慢且难以正确配置和管理。

这让他创建了一个新的开源 微皮恩协议和解决方案,它更加快速、安全、易于部署和管理。

WireGuard 最初是为 Linux 开发的,但现在可用于 Windows、macOS、BSD、iOS 和 Android。它仍在活跃开发中。

除了可以跨平台之外,WireGuard 的最大优点之一就是易于部署。配置和部署 WireGuard 就像配置和使用 SSH 一样容易。

一、服务器配置

安装wireguard软件

sudo apt update && sudo apt install wireguard

目前 WireGuard 已经被合并到 Linux 5.6 内核中了,如果你的内核版本 >= 5.6,就可以用上原生的 WireGuard 了,只需要安装 wireguard-tools 即可,内核版本<5.6,可能需要首先更新内核,否则可能会报错:Unable to access interface: Protocol not supported

生成私钥公钥

wg genkey | sudo tee /etc/wireguard/privatekey-wg0 | wg pubkey | sudo tee /etc/wireguard/publickey-wg0

生成的密钥保存在/etc/wireguard/privatekey-wg0/etc/wireguard/publickey-wg0

配置服务器参数

#创建,编辑配置文件
sudo touch /etc/wireguard/wg0.conf
sudo nano /etc/wireguard/wg0.conf

粘贴如下:

[Interface]
Address = 10.100.1.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51800
PrivateKey = SERVER_PRIVATE_KEY  #服务器端生成的私钥

使用/etc/wireguard/privatekey-wg0中的值替换SERVER_PRIVATE_KEY

使用如下命令获取网卡名称,替换eth0

ip -o -4 route show to default | awk '{print $5}'

如果希望这个客户端只能访问内网,则设置如下,丢弃所有非10.100.1.0网段的请求

PostUp = iptables -A FORWARD -p all -i wg0 ! -d 10.100.1.0/24 -j DROP
PostDown = iptables -D FORWARD -p all -i wg0 ! -d 10.100.1.0/24 -j DROP

这里附上博主搜索到两篇对于iptables整理的比较好的文章,一并附上

CSDN - Linux iptables 防火墙软件命令详解
CSDN - iptables学习笔记

如果想要配置多个端口服务,可生成如/etc/wireguard/privatekey-wg1/etc/wireguard/publickey-wg1的密钥,增加wg1.conf后按照原流程即可。

配置服务器sysctl参数

如果要正常使用wg0的转发,需要启用电脑的ip转发,使用你喜欢的编辑器打开文件/etc/sysctl.conf

添加或者取消注释行net.ipv4.ip_forward=1

使用sudo sysctl -p 应用修改

启动、停止服务端

#启动服务端
$ sudo wg-quick up wg0

## 输出如下
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.100.1.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 停止服务端
$ sudo wg-quick down wg0

## 输出如下
[#] wg showconf wg0
[#] ip link delete dev wg0
[#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

校验服务端状态:

sudo wg
## 输出
interface: wg0
  public key: ********************
  private key: (hidden)
  listening port: 51800

二、用户端配置

安装wireguard软件

软件官方下载连接:www.wireguard.com

debian 安装wirguard,debian,ubuntu,windows

由于greatwall的存在,可以关注微信公众号:机器人梦想家下载。

debian 安装wirguard,debian,ubuntu,windows

windows 64位安装 *amd64.msi

windows 32位安装 *x86.msi

windows arm安装 *arm64.msi

安卓安装 *.apk

ubuntu或debian使用命令安装sudo apt-get install wireguard

生成私钥公钥

使用wiregurad的工具wg genkeywg pubkey生成公钥和私钥并保存在/etc/wireguard/目录。windows会自动生成,记下来即可。

wg genkey | sudo tee /etc/wireguard/privatekey-wg0 | wg pubkey | sudo tee /etc/wireguard/publickey-wg0

配置客户端参数

#创建,编辑配置文件
sudo touch /etc/wireguard/wg0.conf
sudo nano /etc/wireguard/wg0.conf

粘贴如下:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY  #客户端生成的私钥
Address = 10.100.1.2/32 #改为想给本机分配的ip

[Peer]
PublicKey = SERVER_PUBLIC_KEY  #服务器端生成的公钥
Endpoint = SERVER_IP_ADDRESS:51800  #服务器的公网IP和端口
AllowedIPs = 10.100.1.0/24	#这里是限制只有10.100.1 网段的请求走WireGuard,不影响其它应用上网,设为0.0.0.0/0则是所有请求均走WireGuard
PersistentKeepalive = 120	#握手时间,每隔120s ping一次客户端

替换其中的CLIENT_PRIVATE_KEYSERVER_PUBLIC_KEYSERVER_IP_ADDRESS,按照自己本地生成的配置

多台client注意修改Address为不同的ip地址。

启动、停止客户端

#启动客户端
$ sudo wg-quick up wg0

## 输出如下
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.100.1.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 停止客户端
$ sudo wg-quick down wg0

## 输出如下
[#] wg showconf wg0
[#] ip link delete dev wg0
[#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

配置服务开机启动

sudo systemctl enable wg-quick@wg0

可以通过下边指令检查服务运行状态:

sudo systemctl status wg-quick@wg0

三、服务器添加、删除客户

# 添加客户端
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.100.1.2

#删除客户端
sudo wg set wg0 peer CLIENT_PUBLIC_KEY remove

可以通过在服务器端运行sudo wg查看client状态

sudo wg
## 输出
interface: wg0
  public key: ***********************
  private key: (hidden)
  listening port: 51800

peer: ***********************
  endpoint: *.*.*.*:36875
  allowed ips: 10.100.1.2/32
  latest handshake: 10 seconds ago
  transfer: 392 B received, 184 B sent

四、配置掉线自启动

配置掉线自启动脚本

掉线自启动一般只需要配置客户端

新建脚本,用于检测是否掉线

touch /home/dev/Documents/pingwireguard.sh
chmod +x /home/dev/Documents/pingwireguard.sh
vim /home/dev/Documents/pingwireguard.sh

粘贴如下:

#!/bin/sh
if ! ping -c 3 10.100.1.1 > /dev/null 2>&1 ;then
echo `date` " The network is down! Now try restarting wg0!\n" 
sudo systemctl restart wg-quick@wg0.service
else
echo `date` "Wireguard network is alive.\n"
fi

配置定时程序

这里使用crontab定时呼叫校验脚本

$ crontab -e

每隔10min执行一遍校验网络是否通畅,增加条如下:

*/10 * * * *  /home/dev/Documents/pingwireguard.sh 

配置脚本sudo免密执行权限

sudo visudo
## 增加如下,dev是你本地运行crontab的用户名
%dev ALL=(ALL:ALL) NOPASSWD :/bin/systemctl restart wg-quick@wg0.service

请注意用户是否有执行root的权限,若没有同时增加如下这句

sudo visudo

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
## 为你的用户增加sudo权限, 注意dev修改为你本地运行crontab的用户
dev     ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
## 增加如下, 注意dev修改为你本地运行crontab的用户名
%dev ALL=(ALL:ALL) NOPASSWD :/bin/systemctl restart wg-quick@wg0.service

# See sudoers(5) for more information on "@include" directives:

@includedir /etc/sudoers.d
admin ALL=(ALL)  NOPASSWD:ALL

判断crontab是否执行

# 判断之前运行情况
sudo tail -f /var/log/syslog | grep CRON
# ==========OUT PUT==========
# Nov 17 16:25:01 debian11 CRON[5863]: (dev) CMD (/home/dev/Documents/pingwireguard.sh >> /home/dev/Documents/crontab.log 2>&1)

# 输出运行过程到日志
*/10 * * * *  /home/dev/Documents/pingwireguard.sh >> /home/dev/Documents/crontab.log 2>&1

结尾

至此结束所有的配置,本文参考大量的博客进行汇总,最终得到一套比较简单能够配置的方法可以应用于工程实际情况,希望能对大家起到一些帮助。文章来源地址https://www.toymoban.com/news/detail-786679.html

到了这里,关于debian/ubuntu/windows配置wiregurad内网服务器(包含掉线自启动)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FRP 进行内网穿透,在一台客户端上配置多台服务器连接,winsw 配置多个 windows 自启动服务,Windows 远程桌面连接时目标客户端断开 WIFI连接解决办法

    本篇博客建立在已经使用 FRP 实现通过一台服务器范围一台客户端的基础上,不会从头开始对如何配置 FRP 实现内网穿透进行介绍。有需要这方面的同学可以参考下面这篇文章:【计算机网络相关】内网穿透介绍以及使用FRP实现内网穿透Windows远程桌面_frp内网穿透-CSDN博客 本篇

    2024年02月01日
    浏览(50)
  • 如何在Debian中配置代理服务器?

    开始搭建代理服务器 首先我参考如下文章进行搭建代理服务器,步骤每一个命令都执行过报了各种错,找了博客  目前尚未开始,我已经知道我的路很长,很难走呀,加油,go!go!go! 第一个教程: Ubuntu/Debian/CentOS搭建Socks5代理一键脚本_socks5一键搭建脚本-CSDN博客 安装 下载

    2024年02月15日
    浏览(42)
  • 如何在Debian(kali)中配置代理(agent)服务器?

    开始搭建代理服务器 首先我参考如下文章进行搭建代理服务器,步骤每一个命令都执行过报了各种错,找了博客  目前尚未开始,我已经知道我的路很长,很难走呀,加油,go!go!go! 第一个教程: Ubuntu/Debian/CentOS搭建Socks5代理一键脚本_socks5一键搭建脚本-CSDN博客 安装 下载

    2024年02月10日
    浏览(23)
  • frp内网穿透(windows和服务器)

     1.frp下载 https://github.com/fatedier/frp/releases  windows端可以下载windows版本,服务器和客户端尽量保持版本一致,当前最新版本为0.43.0. 2.外网服务器frp服务端配置    2.1  使用    命令创建一个新的文件夹frp,然后在文件夹下使用命令:   2.2 解压,并进入解压文件夹   2 .3 删掉

    2024年02月05日
    浏览(48)
  • win10远程桌面控制Ubuntu服务器 - 内网穿透实现公网远程

    转载自远程穿透文章:Windows通过RDP异地远程桌面Ubuntu【内网穿透】 XRDP是一种开源工具,它允许用户通过Windows RDP访问Linux远程桌面。 除了Windows RDP外,xrdp工具还接受来自其他RDP客户端(如FreeRDP、rdesktop和NeutrinoRDP )的连接。 相较于VNC,xrdp更加的轻量级。下面简单几步实现ubu

    2024年02月03日
    浏览(38)
  • 如何在Ubuntu系统部署RabbitMQ服务器并公网访问【内网穿透】

    RabbitMQ是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。 由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出,里面存放的内容

    2024年02月08日
    浏览(53)
  • 搭建FRP内网穿透服务器来远程访问本地windows/linux中的web服务

    什么是FRP? FRP 是一个免费开源的用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。 FRP有服务端和客户端,你将服务端安装在你买的便宜云服务器上,FRP客户端安装在你自己的电脑上,配置好暴露的端口,就可以实现你访问服务器

    2024年02月05日
    浏览(45)
  • StableDiffusion-webUI环境配置、部署、汉化、扩展超详细步骤 || 服务器Linux Ubuntu/本地Windows || 比官方安装更高自定义度 || anaconda虚拟环境下

    目录 一、代码下载 以下指令用git下载代码(可能不能直接跑通,后续需要修改一些代码,见“ 四、代码修改”部分) 1. 下载 stable-diffusion-webui 仓库 2. 下载其他仓库 二、环境配置 0. 安装anaconda、CUDA、cuDNN 1. 建立并激活新 conda 环境 2. 安装 requirements.txt 中的依赖包 3

    2024年02月10日
    浏览(51)
  • 无需服务器内网穿透Windows下快速搭建个人WEB项目

    本文主要是windows下内网穿透文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 本次教程中,我们将实现在windows上搭建一个web站点,并通过cpolar内网穿透,将该站点免

    2024年02月20日
    浏览(35)
  • 内网搭建Jenkins自动化远程部署项目到Windows服务器

    War Jenkins Packages 不赘述 一个小诀窍;去有外网的PC上面,部署Jenkins正常搜索插件安装,然后找到安装目录,有个.Jenkins的文件夹,里面有个plug的文件夹,这个就是我们所需所有插件,然后把它拷贝到内网中。  捷径(Jenkins2.346.1版本所需插件):https://download.csdn.net/download/b

    2024年02月17日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包