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

推荐订阅源

V
Vulnerabilities – Threatpost
V
V2EX
GbyAI
GbyAI
Recent Announcements
Recent Announcements
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
Y
Y Combinator Blog
C
Check Point Blog
爱范儿
爱范儿
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
美团技术团队
雷峰网
雷峰网
IT之家
IT之家
WordPress大学
WordPress大学
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
N
News and Events Feed by Topic
罗磊的独立博客
S
SegmentFault 最新的问题
S
Security Affairs
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
H
Hacker News: Front Page
Google DeepMind News
Google DeepMind News
B
Blog
O
OpenAI News
C
Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
Hacker News: Ask HN
Hacker News: Ask HN
博客园_首页
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Help Net Security
Help Net Security
月光博客
月光博客
J
Java Code Geeks
L
LangChain Blog
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Apple Machine Learning Research
Apple Machine Learning Research
T
The Exploit Database - CXSecurity.com
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

Kenvix's Blog

实现带有Nvidia GPU+Rootless Podman+Docker+Systemd+自动驱动注入支持的systemd nspawn容器 | Kenvix's Blog 手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题 免Telent/TTL屏蔽运营商新版光猫的远控、TR069和RMS,获取动态随机超级管理员密码并固化权限 | Kenvix's Blog 利用Windows卷影副本(Volume Shadow)找回被覆盖和删除的数据 | Kenvix's Blog 在Windows下实现WireGuard动态DNS解析(DDNS)的正确方法:避免无意义的开销 | Kenvix's Blog 解决 Windows 打开视频/图片文件夹很慢的问题 | Kenvix's Blog AltA2DP - 向支持Sony LDAC协议的耳机提供Windows下蓝牙LDAC音频编码器支持 | Kenvix's Blog (2024更新)修复黑群晖 DSM7.0 + Btrfs 存储空间/磁盘损毁/堪用 的问题 校园网白嫖思路分享:局域网中转-不花钱、不认证、高速上网 | Kenvix's Blog 在 Windows 上配置网卡多个 VLAN、多个虚拟网卡、实现单线多拨网速叠加(无需驱动支持) | Kenvix's Blog 解决视频彩铃、语音通话自动转视频通话导致打电话自动挂断的问题 | Kenvix's Blog 超低成本廉价考研教程:如何用小于¥500甚至¥300的开销考个研 | Kenvix's Blog 在 Ubuntu 21.10 上启用蓝牙 LDAC/AAC/AptX 高质量音频编码支持 在 VMware Workstation 桥接模式的网卡上让虚拟机使用 VLAN 的正确方法 在 Windows 上设置 NAT 或网络共享的正确方法——避免Wi-Fi热点无法使用 自编译 红米 AC2100 OpenWRT R21.7.26 Linux 内核结构和子系统简介 | Kenvix's Blog Java 快速读取文本 (算法竞赛适用) | Kenvix's Blog 利用 ThreadLocal + Lambda,实现有状态变量的单例模式 | Kenvix's Blog 状态压缩的动态规划问题:骨牌完全覆盖棋盘问题 | Kenvix's Blog 我的 Windows 10 2004 新增 Bug 解决办法记录 解决 Android Studio 及 IDEA 中 Gradle 错误信息乱码的问题 Kotlin 的那些骚操作 | Kenvix's Blog 在普通的 Gradle Java/Kotlin 项目中使用 BuildConfig 修复国行 MIUI 打开 Google Play 始终提示 DF-DFERH-01 的问题 解决 VSCode 持续调用 WMIC 导致一个 CPU 核心完全被占满的问题 扔鸡蛋问题 | Kenvix's Blog 计算机幻觉从入门到入土 | Kenvix's Blog Java 注解预处理 Annotation Processing & 代码生成 Ubuntu 上通过以太网分享网络连接(NAT) | Kenvix's Blog Windows 选择指定的网卡来开承载网络型热点 | Kenvix's Blog 修复升级 Windows10 版本后所有内置应用闪退+第三方应用参数错误的问题 | Kenvix's Blog 配置用于 Gradle6.x + MySQL 8 的 jOOQ 3.14 代码自动生成 (已更新) 修复 Windows 环境下的程序访问 WSL 中的 MySQL 提示 Access Denied 的问题 修复 WSL 下 PHP+FastCGI 卡死的问题 使用任意磁盘或路径保存 Windows 文件历史记录 | Kenvix's Blog [1.12.2+Mod] MoeCraft :: 自由开放的科技向公益 Mod 服务器 Kenvix's Blog 禁用使用Intel核显的Windows笔记本自动调节亮度功能 | Kenvix's Blog 真正实现Minecraft高级登录(外置登录)的几种方案 | Kenvix's Blog 谈谈神舟的两艘贼船,Z7M-KP7S1 / Z7M-KP7SC USBCopyer: 插上U盘自动按需复制文件 | Kenvix's Blog USBCopyer 回调功能详细说明 | Kenvix's Blog C# 实现自定义"应用程序设置"的配置文件(user.config)存储路径 | Kenvix's Blog Win10 资源管理器为所有格式激活“编辑”按钮并修改文本文件“编辑”按钮的编辑器 | Kenvix's Blog 留言板 | Kenvix's Blog 又一次 Hello world | Kenvix's Blog Java 学习笔记 (仍在更新) | Kenvix's Blog 在Win10 Pro下挂载NFS(网络文件系统) | Kenvix's Blog Nginx 反向代理 Aria2 JSONRPC | Kenvix's Blog (Android6.0~9.0) 清除锁屏密码 | Kenvix's Blog WordPress 更换站点地址后批量修改文章/评论中的旧地址 | Kenvix's Blog 修复一加3/3T因固件过老导致刷入ROM时提示错误7的问题 | Kenvix's Blog 修复Android DM-Verity 警告 | Kenvix's Blog 贴吧云签到 资源索引(下载|文档|插件) | Kenvix's Blog 继续监控!使用树莓派+Motion实现实时视频监控并通过浏览器查看 | Kenvix's Blog 自动获取Pixiv每日排行榜第一张图片(600x600 | 可用于博客背景图) | Kenvix's Blog 使用树莓派实现定时拍照监控并发送邮件到邮箱 | Kenvix's Blog 好压 V2.7 Beta1 绿色版——功能强大,良心的压缩软件 | Kenvix's Blog 任意语言实现读取压缩包注释 | Kenvix's Blog 自己实现QQ群自定义分享(管理员开启了群交易?) | Kenvix's Blog MoeCDN - 加速Gravatar/GoogleAPIs等无法在国内访问的资源 | Kenvix's Blog [Minecraft] WebLogin-连接到你的服务器来检查玩家是否可以登录 | Kenvix's Blog Android卡刷包提示This package is for device: ... this device is ...的解决方案 Kenvix's Blog 给EMLOG评论框加上复选框[√]防止垃圾评论 | Kenvix's Blog 欢迎使用emlog | Kenvix's Blog
OpenWRT/DNSMasq 配置DHCP静态路由主动推送 实现流量直达和旁路由流量零代价分载 | Kenvix's Blog
2023-08-28 · via Kenvix's Blog

背景

通常来说,如果我们划分了另一个网段,流量是需要通过网关来进行路由的。例如 LAN 网段为 172.20.0.0/24,然后我们在家庭 PVE 服务器上创建了一个用于虚拟机的 172.20.1.0/24 网段,其中 PVE 服务器的网卡的 IP 为 172.20.0.3 ,为了能够使得 LAN 的设备能直接访问虚拟机的 IP 段 172.20.1.0/24,就需要在网关设备上添加一个静态路由,指向 172.20.1.0/24,如下图。

诚然,这样做确实可以实现 LAN 的设备能直接访问虚拟机的 IP 段而不需要设置代理,但是这样做有一个缺点:所有访问虚拟机的流量都需要经过网关处理!这就导致了网关的 CPU 负载会变高,而且网关的网络带宽也会被内网访问虚拟机的流量占用。

注意到 PVE 服务器的网卡的 IP 为 172.20.0.3,和 LAN 位于同一网段,有没有什么办法可以直接让 LAN 的设备访问 172.20.1.0/24 段时,直接到达 172.20.0.3 而不要经过网关?

答案是有的,那就是静态路由主动推送。这个功能在 OpenWRT 上可以通过直接在 LUCI 上设置来实现,而在其他 Linux 发行版上可以通过修改 /etc/dnsmasq.conf 来实现。

实现方法

OpenWRT LUCI

如下图所示,打开 接口 – LAN – 修改 – 高级,填入两个 DHCP 选项

121,172.20.1.0/24,172.20.0.3,172.20.2.0/24,172.20.0.3,172.20.70.0/24,172.20.0.3,172.20.50.0/24,172.20.0.3
249,172.20.1.0/24,172.20.0.3,172.20.2.0/24,172.20.0.3,172.20.70.0/24,172.20.0.3,172.20.50.0/24,172.20.0.3

这将配置推送 172.20.1.0/24 段,网关重设为 172.20.0.3,推送 172.20.2.0/24 段,网关重设为 172.20.0.3,…, 推送 172.20.50.0/24 段,网关重设为 172.20.0.3

其中代码121指的是标准的 RFC Classless Static Route Option,249 是微软私有的无类域间路由推送协议。两者在 功能上一致,后者主要用于支持 Windows 系统(Windows XP和Windows Server 2003只支持DHCP选项249,而其他操作系统可以支持DHCP选项121),因此内容上也应该保持一致。

注意:受 DHCP 包的 255 字节大小限制,最多只能配置有限个静态路由推送。如果你的路由数量超过了限制,请设法缩小掩码缩减路由数量。

Linux DNSMasq

修改 /etc/dnsmasq.conf

dhcp-option=121,172.20.1.0/24,172.20.0.3,172.20.2.0/24,172.20.0.3,172.20.70.0/24,172.20.0.3,172.20.50.0/24,172.20.0.3
dhcp-option=249,172.20.1.0/24,172.20.0.3,172.20.2.0/24,172.20.0.3,172.20.70.0/24,172.20.0.3,172.20.50.0/24,172.20.0.3

效果

配置完毕后保存,然后重新连接电脑网络,命令行输入 ROUTE PRINT | FINDSTR 172.20. 将能看到我们推送的路由:

进行路由跟踪

修改前,流量先经过默认网关 172.20.0.1 再转发到 PVE 172.20.0.3

修改后,发现流量确实不再经过默认网关 172.20.0.1 而是直达 PVE 172.20.0.3

局限性

  • 受 DHCP 包的 255 字节大小限制,最多只能配置有限个静态路由推送。如果你的路由数量超过了限制,请设法缩小掩码缩减路由数量。
  • 已知 Android 不会接受推送的静态路由,因此这个方法 Android 设备没有效果。此外,Android 设备亦不会响应 ICMP Redirect,可以说安卓的网络栈就是纯纯的废物。
  • IPv6 不支持此种方法