Wireguard

作者: 水妖 | 来源:发表于2022-05-14 16:10 被阅读0次

    1 Linux docker wireguard 服务端

    1.1 Docker 容器配置
     docker run -d \
      --name=wireguard \
      --cap-add=NET_ADMIN \
      --cap-add=SYS_MODULE \
      -e PUID=1000 \
      -e PGID=1000 \
      -e TZ=Asia/Shanghai \
      -e SERVERPORT=51820 `#optional` \
      -e SERVERURL=服务端的域名或IP `#optional` \
      -e INTERNAL_SUBNET=10.13.13.0 `#optional` \
      -e PEERS=1 `#optional` \
      -e PEERDNS=auto `#optional` \
      -e ALLOWEDIPS=0.0.0.0/0 `#optional` \
      -e LOG_CONFS=true `#optional` \
      -p 51820:51820/udp \
      -v /root/docker/container/wireguard/config:/config \
      -v /lib/modules:/lib/modules \
      --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
      --restart always \
      linuxserver/wireguard
      
     #说明:
     `#optional` //参数可选
      -e SERVERPORT=51820 // 服务器端口
      -e INTERNAL_SUBNET=10.13.13.0 //子网掩码
      -v /lib/modules:/lib/modules  //指定模块地址安装地址系统自带则不会安装
      -e ALLOWEDIPS=0.0.0.0/0  //允许的IPs
      -v /root/docker/container/wireguard/config:/config //配置地址
    
    1.2 获取服务端公钥
    // 公钥配置文件 /root/docker/container/wireguard/config/server/publickey-server
    // 如:AAAAAAAAAAAAAAA=
    cat /root/docker/container/wireguard/config/server/publickey-server
    

    2 Linux wireguard 客户端

    2.1 安装wireguard
    apt update
    apt install wireguard
    
    2.2 生成私钥/公钥
    //  没有/etc/wireguard就创建 
    cd /etc/wireguard  
    wg genkey | tee privateKey | wg pubkey > publicKey
    
    2.3 获取客户端私钥
    // 配置文件/etc/wireguard/privateKey    
    // 如:BBBBBBBBBBBBBBB=
    cat /etc/wireguard/privateKey
    
    2.4 获取客户端公钥
    // 配置文件/etc/wireguard/publicKey   
    // 如:CCCCCCCCCCCCCCC=
    cat /etc/wireguard/publicKey
    
    2.5 创建配置文件并写入 wg0.conf
    cat << EOF > /etc/wireguard/wg0.conf
    [Interface]
    # 客户端分配的IP
    Address = 10.13.13.3/32
    # 客户端的私钥  BBBBBBBBBBBBBBB=  ,见2.3
    PrivateKey = 客户端的私钥
    # 监听端口
    ListenPort = 51820
    # 配置DNS
    DNS = 10.13.13.1
    
    [Peer]
    # 服务端的公钥 AAAAAAAAAAAAAAA= ,见1.2
    PublicKey = 填入服务端的公钥
    # 对端(即为服务端域名或IP)
    Endpoint = 服务端域名或IP:51820
    # 允许的IP地址
    AllowedIPs = 0.0.0.0/0
    EOF
    
    2.6 启动
    // 启动 wg0 即 wg0.conf 文件
    wg-quick up wg0
    
    // 其它命令如下:
    // 停止
    wg-quick down wg0
    // 查看状态
    wg
    // 设置开机启动
    systemctl enable wg-quick@wg0
    // 取消开机启动
    systemctl disable wg-quick@wg0
    
    2.7 防火墙-如果需要(debian)
    sudo ufw allow ssh
    sudo ufw allow 51820/udp
    

    3 再次配置服务端

    3.1 配置客户端公钥

    服务端下找到文件 /root/docker/container/wireguard/config/wg0.conf,添加如下

    [Peer]
    # 客户端配置
    # 客户端公钥CCCCCCCCCCCCCCCC=
    PublicKey = 填入客户端公钥,见2.4
    # 客户端分配的IP,与2.4保持一直
    AllowedIPs = 10.13.13.3/32
    
    3.2 重新启动服务端
    //方法1.docker 容器中
    wg-quick down wg0 
    wg-quick up wg0
    //方法2.重启容器
    docker restart wireguard
    

    4 结语

    个人简单理解:
    服务器好比路由器,客户端就是手机/电脑(linux/mac/win ...), 各个客户端之间通过服务器的转发相互通信.

    相关文章

      网友评论

          本文标题:Wireguard

          本文链接:https://www.haomeiwen.com/subject/glzpurtx.html