• 组网神器WireGuard安装与配置教程(超详细)


    01 引言

    wireguard官网地址:https://www.wireguard.com

    在这里插入图片描述
    wireguard是什么?维基百科是这样描述的:

    通过描述,我们知道了wireguard其实就是一个FAST(速度快)、MODERN(流行)、SECURE (安全)的VPN TUNNEL(VPN隧道)

    ok,那么如何安装呢?本文来讲解下:

    02 安装教程

    注意本文讲解的安装教程是wireguard能在外网的条件下使用的,内网间的调试就不讲解了,区别只是互联网的不稳定性或防火墙等因素

    安装视频与教程:

    2.1 前提条件

    如果在外网的情况下使用wireguard,安装之前需要满足以下条件:

    1. 需要有公网的ip地址(这些地址可以直接在腾讯云、阿里云等厂商购买);
    2. 如果Linux内核版本<5.6,可能需要首先更新内核(本文不介绍内核升级教程);
    3. 不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致(例如:Red Hat、CentOS、Fedora 等系统的内核源码包,内核头文件包名分别为 kernel、kernel-devel、kernel-headersDebian、Ubuntu 等系统的内核源码包,内核头文件包名分别为 kernel、linux-headers)。

    2.2 wireguard安装

    安装的总体流程如下:

    • step1: 安装wireguard
    • step2: 服务端生成秘钥对
    • step3: 配置文件生成(服务端与客户端)
    • step4: 启动(服务端与客户端)
    • step5: 测试

    2.2.1 步骤一: 安装wireguard

    官方安装教程https://www.wireguard.com/install

    使用命令安装:

    sudo apt-get install wireguard
    

    2.2.2 步骤二: 服务端生成秘钥对

    ① 开启ipv4流量转发:

    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p
    

    ② 创建并进入WireGuard文件夹:

    mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard
    cd /etc/wireguard
    umask 077
    

    ③ 生成服务器和客户端密钥对:

    wg genkey | tee server_privatekey | wg pubkey > server_publickey
    wg genkey | tee client_privatekey | wg pubkey > client_publickey
    

    2.2.3 步骤三: 配置文件生成

    2.2.3.1 服务端配置文件生成

    生成的配置文件路径/etc/wireguard/wg0.conf,命令如下:

    echo "
    [Interface]
    PrivateKey = $(cat server_privatekey) # 填写本机的privatekey 内容
    Address = 10.0.8.1/24
    PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    ListenPort = 50814 # 注意该端口是UDP端口
    DNS = 8.8.8.8
    MTU = 1420
    [Peer]
    PublicKey =  $(cat client_publickey)  # 填写对端的publickey 内容
    AllowedIPs = 10.0.8.10/24 " > wg0.conf
    

    注意:

    • 如果名字不是eth0, 以下PostUpPostDown处里面的eth0替换成自己服务器显示的名字;
    • ListenPort为端口号,可以自己设置想使用的数字;
    • 以上内容一次性粘贴执行,不要分行执行

    还需要设置开机启动:

    systemctl enable wg-quick@wg0
    
    2.2.3.2 客户端配置文件生成

    生成的配置文件路径/etc/wireguard/client.conf,命令如下:

    echo "
    [Interface]
      PrivateKey = $(cat client_privatekey)  # 填写本机的privatekey 内容
      Address = 10.0.8.10/24
      DNS = 8.8.8.8
      MTU = 1420
    
    [Peer]
      PublicKey = $(cat server_publickey)  # 填写对端的publickey 内容
      Endpoint = server公网的IP:50814
      AllowedIPs = 0.0.0.0/0, ::0/0
      PersistentKeepalive = 25 " > client.conf
    

    2.2.4 步骤四: 启动

    2.2.4.1 服务端启动

    启动或停止wireguard服务端的命令如下:

    # 启动WireGuard
    wg-quick up wg0
    # 停止WireGuard
    wg-quick down wg0
    

    查看wireguard服务端运行状态命令:

    wg
    

    在这里插入图片描述

    2.2.4.2 客户端启动

    启动或停止wireguard客户端的命令如下:

    # 启动WireGuard
    wg-quick up client
    # 停止WireGuard
    wg-quick down client
    

    查看wireguard客户端运行状态命令:

    wg
    

    在这里插入图片描述
    还可以在客户端配置路由

    ip route add 103.52.188.136 via 192.168.1.2 
    ip route add 0.0.0.0/0 via 10.0.8.1   # 所有的流量都走这个ip
    

    当然,最简单的方式就是直接导入2.2.3.2 生成客户端的配置文件/etc/wireguard/client.conf),不过要下载wireguard客户端
    在这里插入图片描述

    2.2.5 步骤五: 测试

    多台机器互ping即可:

    ping 10.0.8.1
    

    服务器也可以安装tcpdump来监听网络接口的数据包:

    apt -y install tcpdump 
    tcpdump -i wg0  # 我们的转发都是经过这个私网来进行的可以客户ping的同时,服务端进行抓包查看
    

    03 其它

    至此,wireguard安装成功了!下面的内容,有兴趣的也可以继续阅读。

    3.1 命令

    可以通过添加一个新接口ip-link(8),它应该自动处理模块加载(非 Linux 用户将改为编写wireguard-go wg0.):

    ip link add dev wg0 type wireguard
    

    一个 IP 地址和对等体可以被分配ifconfig(8)ip-address(8)

    ip address add dev wg0 192.168.2.1/24
    

    或者,如果总共只有两个对等点,则可能更需要这样的操作:

    ip address add dev wg0 192.168.2.1 peer 192.168.2.2
    

    该接口可以使用包含的wg(8)实用程序配置密钥和对等端点:

    wg setconf wg0 myconfig.conf
    

    或者

    wg set wg0 listen-port 51820 private-key /path/to/private-key peer ABCDEF... allowed-ips 192.168.88.0/24 endpoint 209.202.254.14:8172
    

    最后,可以使用 ifconfig(8) 或激活接口ip-link(8)

    ip link set up dev wg0
    

    还有wg showwg showconf命令,用于查看当前配置。

    调用wg不带参数默认为wg show所有WireGuard接口。

    3.2 密钥生成

    WireGuard 需要 base64 编码的公钥和私钥。这些可以使用该wg(8)实用程序生成:

    $ umask 077
    $ wg genkey > privatekey
    

    这将privatekey在包含新私钥的stdout上创建。


    然后,您可以从您的私钥派生您的公钥:

    $ wg pubkey < privatekey > publickey
    

    privatekey将从标准输入读取并将相应的公钥写入publickey标准输出。


    当然,您可以一次完成所有这些:

    $ wg genkey | tee privatekey | wg pubkey > publickey
    

    04 文末

    参考文献:

    本文主要讲解了wireguard的安装与配置教程,希望能帮助到大家,谢谢大家的阅读,本文完!

  • 相关阅读:
    [NOIP2000 提高组] 乘积最大
    Hugging News #0821: 新的里程碑:一百万个代码仓库!
    [附源码]计算机毕业设计疫情防控管理系统Springboot程序
    计算机网络-计算机网络的体系结构
    Qt utc时间字符串转为本地时间
    R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
    嵌入式硬件VS软件,到底哪个更难?
    面试经典-MySQL篇
    爬虫入门教程:爬虫概述
    最新AI智能聊天对话问答系统源码(图文搭建部署教程)+AI绘画,文生图,TTS语音识别输入,文档分析
  • 原文地址:https://blog.csdn.net/qq_20042935/article/details/127089626