在Debian12中快速安装Wireguard,并简单的组网使用。

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

环境准备

开启 BBR

# 运行命令 输出是 bbr 则开启
sudo sysctl net.ipv4.tcp_congestion_control
# 查询是否支持
sudo modprobe tcp_bbr

# 开启
sudo sh -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo sh -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
# OR
echo -e "\nnet.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf 

# 立即生效
sysctl -p

OR

sudo sysctl net.ipv4.ip_forward=1
sudo sysctl net.ipv6.conf.all.forwarding=1
sysctl -p

打开防火墙转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.accept_ra=2" >> /etc/sysctl.conf
sysctl -p

安装使用

安装基础环境

sudo apt update && sudo apt install wireguard resolvconf openresolv -y

创建配置文件

服务器

# 私匙,自动读取上面刚刚生成的密匙内容
PrivateKey = sprivatekey
# VPN中本机的内网IP,一般默认即可,除非和你服务器或客户端设备本地网段冲突
Address = 10.0.0.1/24, fd10:db31:203:ab31::1/64 
# 运行 WireGuard 时要执行的 iptables 防火墙规则,用于打开NAT转发之类的。
# 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。
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 = 9999
# 服务端请求域名解析 DNS
DNS = 8.8.8.8, 2001:4860:4860::8888 
# 保持默认
MTU = 1420
[Peer]
# 公匙,自动读取上面刚刚生成的密匙内容
PublicKey = cpublickey
# VPN内网IP范围,一般默认即可,除非和你服务器或客户端设备本地网段冲突
AllowedIPs = 10.0.0.2/32, fd10:db31:203:ab31::2/64

客户端

# 私匙,自动读取上面刚刚生成的密匙内容
PrivateKey = cprivatekey
# VPN内网IP范围
Address = 10.0.0.2/24,fd10:db31:203:ab31::2/64
# 解析域名用的DNS
DNS = 8.8.8.8, 2001:4860:4860::8888
# 保持默认
MTU = 1300
# Wireguard客户端配置文件加入PreUp,Postdown命令调用批处理文件
PreUp = start   .\route\routes-up.bat
PostDown = start  .\route\routes-down.bat
#### 正常使用Tunsafe点击connect就会调用routes-up.bat将国内IP写进系统路由表,断开disconnect则会调用routes-down.bat删除路由表。
#### 连接成功后可上 http://ip111.cn/ 测试自己的IP。
[Peer]
# 公匙,自动读取上面刚刚生成的密匙内容
PublicKey = spublickey
# 服务器地址和端口,下面的 X.X.X.X 记得更换为你的服务器公网IP,端口根据服务端配置时的监听端口填写
Endpoint = serverip:9009
# 转发流量的IP范围,下面这个代表所有流量都走VPN
AllowedIPs = 0.0.0.0/0, ::0/0
# 保持连接,如果客户端或服务端是 NAT 网络(比如国内大多数家庭宽带没有公网IP,都是NAT),
# 那么就需要添加这个参数定时链接服务端(单位:秒),如果你的服务器和你本地都不是 NAT 网络,
# 那么建议不使用该参数(设置为0,或客户端配置文件中删除这行)
PersistentKeepalive = 25

配置生成

Wireguard Config Generator
https://www.wireguardconfig.com/
https://dbca-wa.github.io/wg-webcfg/wg-webcfg.html
https://upvpn.app/wireguard-config-generator/

基本操作

启动和关闭

wg-quick up wg0
wg-quick down wg0

创建开机启动服务

systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0

防火墙开启

sudo ufw allow 51820/udp
# 关闭防火墙
sudo ufw disable

查看连接

show wg show

How To Set Up WireGuard Firewall Rules in Linux
https://www.cyberciti.biz/faq/how-to-set-up-wireguard-firewall-rules-in-linux/

周边项目

UpVPN是世界上第一个无服务器VPN。
VPN应用程序适用于macOS、Linux、Windows、tvOS、iOS和Android。
UpVPN服务还可以通过Web设备功能与任何WireGuard兼容的客户端一起使用。
https://github.com/upvpn/upvpn-app

Amnezia VPN Client (Desktop+Mobile)
包含多协议支持的Xray Wiregaurd等支持的服务端和客户端
https://amnezia.org/en/self-hosted
https://github.com/amnezia-vpn/amnezia-client

Tailscale 控制服务器的开源、自托管实现。
https://github.com/juanfont/headscale
https://github.com/tailscale/tailscale

NetBird将无需配置的点对点专用网络和集中式权限改造系统结合在一个平台中,可以轻松地为您的组织或家庭创建安全的专用网络。
https://github.com/netbirdio/netbird

Firezone是一个开源平台,可安全地管理任何规模组织的远程访问。
与大多数VPN不同,Firezone采用精细、特权最低的访问管理方法,使用基于组的策略来控制对单个应用程序、整个子网以及介于两者之间的所有内容的访问。
https://github.com/firezone/firezone

最简单易用的轻量级、高性能WireGuard服务端软件,可广泛用于异地组网、远程办公、内网穿透等场景。
https://github.com/Safe3/firefly/
https://github.com/Safe3/firefly/blob/main/README_CN.md
商业版
https://qq.uusec.com

Cross-platform, unofficial CLI for Cloudflare Warp
Cloudflare Warp 快速配置
https://github.com/ViRb3/wgcf

Securely connect anything with WireGuard® and manage all your networks from a single place
https://github.com/seashell/drago

组网工具
https://github.com/wg-easy/wg-easy

资料

在云端设置个人 VPN。
https://github.com/trailofbits/algo

WireGuard VPN installer for Linux servers
https://github.com/angristan/wireguard-install
https://stanislas.blog/2019/01/how-to-setup-vpn-server-wireguard-nat-ipv6/

一款基于 Sing-box 通用代理工具的跨平台代理客户端。Hiddify 提供了较全面的代理功能,例如自动选择节点、TUN 模式、使用远程配置文件等。
Hiddify 无广告,并且代码开源。它为大家自由访问互联网提供了一个支持多种协议的、安全且私密的工具。
https://github.com/hiddify/hiddify-next/blob/main/README_cn.md

Amnezia is an open-source VPN client, with a key feature that enables you to deploy your own VPN server on your server.
https://github.com/amnezia-vpn/amnezia-client

The Mullvad VPN client app for desktop and mobile
支持Wireguard的商业VPN服务商
https://mullvad.net/en
https://github.com/mullvad/mullvadvpn-app

REST api
https://github.com/suquant/wgrest
https://github.com/FokiDoki/WireRest

Wesher使用wireGuard跨一组节点创建和管理加密网状覆盖网络。它的主要用例是为公共云网络添加低维护安全性或连接不同的云提供商。
https://github.com/costela/wesher

Userspace WireGuard® Implementation in Rust
https://github.com/cloudflare/boringtun

MESH组网
https://github.com/topics/mesh-networks

自托管服务
https://github.com/mikeroyal/Self-Hosting-Guide

总结

WireGuard 是一种开源的、轻量级的 VPN 协议,旨在通过互联网在两个或多个设备之间建立安全的网络连接。
它被设计用于在各种操作系统(如 Linux、Windows、macOS、Android 和 iOS)之间实现高效且安全的通信。
与传统的 VPN 协议(如 IPsec 和 OpenVPN)相比,WireGuard 在设计理念上更加简洁,代码量更少,这使得它在性能和安全性方面都具有一定的优势。
其缺点主要来源UDP协议,容易被阻断,协议特征容易被识别。

标签: none

添加新评论