惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
U
Unit 42
H
Help Net Security
博客园_首页
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
Recorded Future
Recorded Future
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Cloudflare Blog
S
Security @ Cisco Blogs
M
MIT News - Artificial intelligence
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
Spread Privacy
Spread Privacy
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
K
Kaspersky official blog
MyScale Blog
MyScale Blog
阮一峰的网络日志
阮一峰的网络日志
C
CERT Recently Published Vulnerability Notes
V
Vulnerabilities – Threatpost
WordPress大学
WordPress大学
C
Cisco Blogs
G
Google Developers Blog
N
News and Events Feed by Topic
P
Palo Alto Networks Blog
Apple Machine Learning Research
Apple Machine Learning Research
Schneier on Security
Schneier on Security
博客园 - 聂微东
Security Latest
Security Latest
Security Archives - TechRepublic
Security Archives - TechRepublic
O
OpenAI News
云风的 BLOG
云风的 BLOG
IT之家
IT之家
PCI Perspectives
PCI Perspectives
Microsoft Security Blog
Microsoft Security Blog
NISL@THU
NISL@THU
小众软件
小众软件
Scott Helme
Scott Helme
大猫的无限游戏
大猫的无限游戏
L
LINUX DO - 最新话题
Microsoft Azure Blog
Microsoft Azure Blog
Simon Willison's Weblog
Simon Willison's Weblog
N
News and Events Feed by Topic
F
Fortinet All Blogs
The Last Watchdog
The Last Watchdog

lololowe的博客

《防火墙项目化实战 (基于华为eNSP)》笔记 华为VLAN高级特性与协议详解 DNS 跨平台托管 CVE-2026-0073 安卓调试桥漏洞复现 使用 Bettercap 进行 HTTPS 中间人攻击:SSL 剥离和 HSTS 绕过 Yakit测试PortSwigger靶场-未授权访问 visio导入Mermaid流程图(SVG格式) 什么是 TiT (TLS in TLS) 特征以及如何消除特征 Redis未授权访问漏洞复现 实现防御ARP劫持与主动反击 华为VRP系统基本操作 mrs文件转换与查看 电脑垃圾清理技巧分享 QQ音乐 2015-2025 年度听歌报告链接汇总 基于DevStack快速部署OpenStack
部署 Wireguard VPN 实现异地组网
lololowe · 2026-04-09 · via lololowe的博客
环境配置Linux内网穿透VPN

1. 前言

最近在家里的小主机上面部署了eve-ng实验环境,为了在外地也能无差别的连接实验设备的CLI,便用Wireguard VPN实现了异地组网。

主要是通过Wireguard创建虚拟网卡wg0,关联10.0.100.0/24网段,并用物理网卡vmbr0做SNAT,以将VPN网段的流量能路由到内网10.0.0.0/24以及公网0.0.0.0/0。

Wireguard白皮书(中文翻译)PDF:https://lololowe.lanzoul.com/ibaM33mv14gd

2. 安装Wireguard

官方下载地址(被墙):https://www.wireguard.com/install/

Linux用自己的包管理器安装Wireguard:

1
apt install wireguard -y  

Windows下载Wireguard(官网被墙,这里提供蓝奏云下载链接):https://lololowe.lanzoul.com/insD53muxc1c

3. 生成密钥对

1
2
3
4
5
mkdir -p /etc/wireguard/keys/server/  && cd /etc/wireguard/keys/server/  
wg genkey | tee server_private.key | wg pubkey > server_public.key

mkdir -p /etc/wireguard/keys/clients/ && cd /etc/wireguard/keys/clients/
wg genkey | tee client_private.key | wg pubkey > client_public.key

4. 创建配置文件

4.1. 服务端

服务端配置文件为 /etc/wireguard/wg0.conf。按照注释,结合自己的需求,修改配置文件中的相关参数即可。如果要创建多个Wireguard网关,只需要在/etc/wireguard目录下创建多个配置文件即可,例如wg1.confwg2.conf等。使用systemctl enable wg-quick@wg0实现开机自启。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[Interface]
PrivateKey = wKw5Psf10VsW4O0jwYF043oHm6ScX2jRafUIH6xwuGE=
Address = 10.0.100.254/24
ListenPort = 63421


PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = ufw allow 63421/udp comment 'WG-VPN'
PostUp = iptables -t nat -A POSTROUTING -s 10.0.100.0/24 -o vmbr0 -j MASQUERADE
PostUp = ufw allow from 10.0.100.0/24 comment 'WG-VPN'
PostUp = ufw route allow in on wg0 out on vmbr0 from 10.0.100.0/24 to 10.0.0.0/24 comment 'WG-VPN'


PostDown = sysctl -w net.ipv4.ip_forward=0
PostDown = ufw delete allow 63421/udp comment 'WG-VPN'
PostDown = iptables -t nat -D POSTROUTING -s 10.0.100.0/24 -o vmbr0 -j MASQUERADE
PostDown = ufw delete allow from 10.0.100.0/24 comment 'WG-VPN'
PostDown = ufw route delete allow in on wg0 out on vmbr0 from 10.0.100.0/24 to 10.0.0.0/24 comment 'WG-VPN'

[Peer]

PublicKey = IsmN4lGhjBXC4FOcQ9HgPzXAJhwl5KauIDkCsj93Xhs=

AllowedIPs = 10.0.100.1/32

配置创建完成后可以使用wg-quick up wg0wg-quick down wg0命令启停WireGuard服务:

alt text

如果需要仅允许特定接口转发数据包,可以在配置文件中添加以下内容:

1
2
3
4
5
6
7

PostUp = sysctl net.ipv4.conf.wg0.forwarding=1
PostUp = sysctl net.ipv4.conf.vmbr0.forwarding=1


PreDown = sysctl net.ipv4.conf.wg0.forwarding=0
PreDown = sysctl net.ipv4.conf.vmbr0.forwarding=0

Peer可以添加多个,每个客户端都有自己的公钥和IP地址。

服务端有时候会因为和iptables/ufw 资源竞争的问题,导致自启失败,推荐添加以下配置到到/etc/systemd/system/wg-quick@.service.d/override.conf

1
2
3
4
5
6
7
8
9
10
11
[Unit]

After=network-online.target nss-lookup.target ufw.service iptables.service
StartLimitIntervalSec=0

[Service]

ExecStartPre=/bin/sleep 20
TimeoutStartSec=120
Restart=on-failure
RestartSec=20

4.2. 客户端

填写自己的私钥和服务器的公钥时注意不要填写错误,否则会导致连接失败。

1
2
3
4
5
6
7
8
9
10
[Interface]
PrivateKey = 2OWcybcWYBROqQ6cBg4sB1YdoVCbXtVQAprV4ca6K3s=
Address = 10.0.100.1/24
DNS = 52.80.53.83, 52.80.59.89

[Peer]
PublicKey = kw9pe5keuglH2EhL5L5RPY74rWL/1g0eeW6ncbmJgBg=
AllowedIPs = 10.0.0.0/24, 10.0.100.0/24
Endpoint = test.lololowe.com:63421
PersistentKeepalive = 25

客户端的DNS配置会接管本机的全部DNS解析,因此如果到服务端的延迟比较高,建议将DNS设置为公共DNS;AllowedIPs如果设置为0.0.0.0/0,则本机的所有流量都会被WireGuard接管并路由到服务端。

alt text

5. 测试

使用wg show命令查看WireGuard连接状态:

alt text

客户端和服务端可以互相ping通:

alt text

iperf3进行速度测试可以稳定跑满服务端50Mbps的上行带宽:

alt text

头像头像

lololowe

恬淡无为

打赏作者

感谢你赐予我前进的力量

  • Bitcoin

    Bitcoin

  • Ethereum

    Ethereum

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lololowe的博客