<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>HiFeng&#039;s Blog</title><link>https://www.hicairo.com/</link><description>记录学习中的点点滴滴......</description><item><title>PowerDNS  权威服务器基于 LUA Records 实现 CNAME Flattening</title><link>https://www.hicairo.com/post/83.html</link><description>&lt;p&gt;&lt;strong&gt;1. 背景与问题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在 DNS 中，CNAME 记录不能设置在 zone apex（根域名）上，例如 example.com 本身不能是 CNAME，只有子域名如 www.example.com 可以。这是 DNS 标准的限制。&lt;/p&gt;&lt;p&gt;CNAME Flattening 是一种技术手段，允许在根域名上实现类似 CNAME 的效果，即将根域名指向另一个域名，并动态解析出真实 IP 返回给客户端。&lt;/p&gt;&lt;p&gt;PowerDNS 提供了 ALIAS 记录类型来解决这个问题，但 ALIAS 类型存在一个缺陷：不支持 DNSSEC live-signing（实时签名）。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #F79646;&quot;&gt;&lt;strong&gt;使用 LUA Records 可以同时解决 CNAME Flattening 和 DNSSEC 签名两个问题&lt;/strong&gt;&lt;/span&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 环境要求&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在开始之前，请确认以下条件：&lt;/p&gt;&lt;p&gt;•PowerDNS Authoritative Server 4.x 及以上版本&lt;/p&gt;&lt;p&gt;•编译时包含 lua-records 支持（运行 pdns_server --version 确认 Features 中包含 lua-records）&lt;/p&gt;&lt;p&gt;•使用 gmysql 或其他数据库后端&lt;/p&gt;&lt;p&gt;•DNSSEC 使用 live-signing 模式（不是预签名模式）&lt;/p&gt;&lt;p&gt;验证 LUA records 支持：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdns_server&amp;nbsp;--version&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;输出的 Features 字段中应包含 lua-records。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. PowerDNS 配置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.1 启用 LUA Records&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;编辑 PowerDNS 配置文件（通常是 /etc/powerdns/pdns.conf 或 /etc/powerdns/pdns.d/ 目录下的配置文件），添加以下配置：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;enable-lua-records=yes&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;同时确保配置了 resolver，LUA records 解析目标域名时需要用到：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;resolver=8.8.8.8:53&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;重启 PowerDNS 使配置生效：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;restart&amp;nbsp;pdns&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;3.2 完整配置示例&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;以下是一份包含 LUA records 的完整配置示例：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;launch=gmysql
gmysql-host=localhost
gmysql-user=root
gmysql-dbname=powerdns
gmysql-password=yourpassword
gmysql-dnssec=yes
enable-lua-records=yes
resolver=8.8.8.8:53
local-address=0.0.0.0&amp;nbsp;::
local-port=53&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;4. 创建 Zone 并添加 LUA 记录&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.1 创建 Zone&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 pdnsutil 创建 zone（如果已存在可跳过）：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdnsutil&amp;nbsp;create-zone&amp;nbsp;example.com&amp;nbsp;ns1.example.com&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;4.2 添加 LUA CNAME 记录&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 pdnsutil 在根域名上添加 LUA 类型的 CNAME 记录：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdnsutil&amp;nbsp;add-record&amp;nbsp;example.com&amp;nbsp;@&amp;nbsp;LUA&amp;nbsp;&amp;quot;CNAME&amp;nbsp;\&amp;quot;;return&amp;nbsp;&amp;#39;target.example.net.&amp;#39;\&amp;quot;&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;实际命令示例（将 example.com 指向 hicairo.com）：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdnsutil&amp;nbsp;add-record&amp;nbsp;example.com&amp;nbsp;@&amp;nbsp;LUA&amp;nbsp;&amp;quot;CNAME&amp;nbsp;\&amp;quot;;return&amp;nbsp;&amp;#39;hicairo.com.&amp;#39;\&amp;quot;&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;注意：LUA 记录中的域名需要用单引号包裹，作为 Lua 字符串返回。末尾的点（.）表示绝对域名，建议保留。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;4.3 验证记录&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;查看 zone 中的所有记录：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdnsutil&amp;nbsp;list-zone&amp;nbsp;example.com&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;预期输出应包含：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;example.com&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;LUA&amp;nbsp;&amp;nbsp;CNAME&amp;nbsp;&amp;quot;;return&amp;nbsp;&amp;#39;hicairo.com.&amp;#39;&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;5. 启用 DNSSEC&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5.1 对 Zone 签名&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 pdnsutil 对 zone 启用 DNSSEC：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdnsutil&amp;nbsp;secure-zone&amp;nbsp;example.com&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;更新 NSEC 排序信息：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdnsutil&amp;nbsp;rectify-zone&amp;nbsp;example.com&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;5.2 查看签名信息&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;查看 zone 的 DNSSEC 详情，包括 DS 记录（需要提交到上级域）：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;pdnsutil&amp;nbsp;show-zone&amp;nbsp;example.com&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;输出示例：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ID&amp;nbsp;=&amp;nbsp;1&amp;nbsp;(CSK),&amp;nbsp;flags&amp;nbsp;=&amp;nbsp;257,&amp;nbsp;tag&amp;nbsp;=&amp;nbsp;52822,&amp;nbsp;algo&amp;nbsp;=&amp;nbsp;13,&amp;nbsp;bits&amp;nbsp;=&amp;nbsp;256&amp;nbsp;&amp;nbsp;Active&amp;nbsp;&amp;nbsp;Published
DS&amp;nbsp;=&amp;nbsp;example.com.&amp;nbsp;IN&amp;nbsp;DS&amp;nbsp;52822&amp;nbsp;13&amp;nbsp;2&amp;nbsp;99ebc97b...&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;注意：需要将 DS 记录提交到域名注册商，才能完成 DNSSEC 信任链的建立。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6. 测试验证&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6.1 测试 CNAME 查询&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;直接查询权威服务器：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;dig&amp;nbsp;@127.0.0.1&amp;nbsp;example.com&amp;nbsp;CNAME&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;预期返回：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;example.com.&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;CNAME&amp;nbsp;&amp;nbsp;hicairo.com.&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;6.2 测试 A 记录查询&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;查询 A 记录，递归解析器会自动跟随 CNAME 解析出 IP：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;dig&amp;nbsp;@8.8.8.8&amp;nbsp;example.com&amp;nbsp;A&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;预期返回 CNAME 记录以及目标域名的 A 记录（IP 地址）。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;6.3 测试 DNSSEC 签名&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 +dnssec 参数验证签名：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;dig&amp;nbsp;@127.0.0.1&amp;nbsp;example.com&amp;nbsp;CNAME&amp;nbsp;+dnssec&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;预期返回中应包含 RRSIG 记录：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;example.com.&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;CNAME&amp;nbsp;&amp;nbsp;hicairo.com.
example.com.&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;RRSIG&amp;nbsp;&amp;nbsp;CNAME&amp;nbsp;13&amp;nbsp;2&amp;nbsp;3600&amp;nbsp;...&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;通过公网 DNS（如 8.8.8.8）验证，响应 flags 中应包含 ad（Authenticated Data）标志，表示 DNSSEC 验证通过：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;dig&amp;nbsp;@8.8.8.8&amp;nbsp;example.com&amp;nbsp;CNAME&amp;nbsp;+dnssec
;;&amp;nbsp;flags:&amp;nbsp;qr&amp;nbsp;rd&amp;nbsp;ra&amp;nbsp;ad;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;7. LUA Records 语法说明&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;7.1 基本格式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;LUA records 的存储格式为：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;LUA&amp;nbsp;&amp;nbsp;&amp;lt;DNS类型&amp;gt;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;lt;Lua代码&amp;gt;&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;其中 Lua 代码需要用双引号包裹，代码本身返回一个字符串作为 DNS 记录的内容。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;7.2 固定 CNAME 示例&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;将域名固定指向另一个域名：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;LUA&amp;nbsp;&amp;nbsp;CNAME&amp;nbsp;&amp;nbsp;&amp;quot;;return&amp;nbsp;&amp;#39;target.example.net.&amp;#39;&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;7.3 与 ALIAS 类型的区别&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table cellspacing=&quot;0&quot; width=&quot;602&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td width=&quot;133&quot; valign=&quot;middle&quot; style=&quot;padding: 5px 8px; border-width: 1px; border-color: rgb(204, 204, 204); background: rgb(46, 117, 182);&quot; align=&quot;center&quot;&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial;color: #FFFFFF;font-size: 15px&quot;&gt;特性&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;middle&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top-width: 1px; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(46, 117, 182);&quot; align=&quot;center&quot;&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial;color: #FFFFFF;font-size: 15px&quot;&gt;ALIAS 类型&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;middle&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top-width: 1px; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(46, 117, 182);&quot; align=&quot;center&quot;&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-family: Arial;color: #FFFFFF;font-size: 15px&quot;&gt;LUA 类型&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;133&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;CNAME Flattening&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;支持&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;支持&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;133&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(255, 255, 255);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;DNSSEC live-signing&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(255, 255, 255);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;不支持&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(255, 255, 255);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;支持&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;133&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;zone apex 使用&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;支持&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;支持&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;133&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(255, 255, 255);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;灵活性&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(255, 255, 255);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;固定指向&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(255, 255, 255);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;可编程，支持条件逻辑&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;133&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;PowerDNS 版本要求&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;4.x+&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width=&quot;234&quot; valign=&quot;top&quot; style=&quot;padding: 5px 8px; border-left: none; border-right-width: 1px; border-right-color: rgb(204, 204, 204); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); background: rgb(245, 245, 245);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family:Arial;font-size:15px&quot;&gt;4.x+&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;8. 常见问题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;8.1 查询返回 SERVFAIL&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;检查 LUA 代码语法是否正确，查看 PowerDNS 日志：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;journalctl&amp;nbsp;-fu&amp;nbsp;pdns.service&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;日志中会显示 Lua record reported 错误信息，根据提示修正 Lua 代码。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;8.2 A 记录查询只返回 CNAME 不返回 IP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这是正常行为。PowerDNS 作为权威服务器返回 CNAME，客户端的递归解析器会自动继续解析目标域名的 A 记录。使用 8.8.8.8 等公共递归解析器测试可以看到完整结果。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;8.3 DNSSEC 验证失败&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;确认已执行以下步骤：&lt;/p&gt;&lt;p&gt;•pdnsutil secure-zone 对 zone 签名&lt;/p&gt;&lt;p&gt;•pdnsutil rectify-zone 更新 NSEC 排序&lt;/p&gt;&lt;p&gt;•DS 记录已提交到域名注册商&lt;/p&gt;&lt;p&gt;•等待 DS 记录在全球 DNS 传播（通常需要几小时到 24 小时）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;9. 总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 LUA Records 实现 CNAME Flattening 的优势：&lt;/p&gt;&lt;p&gt;•完全支持 DNSSEC live-signing，解决了 ALIAS 类型的历史遗留问题&lt;/p&gt;&lt;p&gt;•只需要 gmysql 单后端，无需额外的 HTTP 后端服务&lt;/p&gt;&lt;p&gt;•配置简单，只需一条 LUA 记录即可实现&lt;/p&gt;&lt;p&gt;•支持复杂的条件逻辑（如按地理位置返回不同的目标域名）&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;关键命令速查：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;添加&amp;nbsp;LUA&amp;nbsp;CNAME&amp;nbsp;记录
pdnsutil&amp;nbsp;add-record&amp;nbsp;example.com&amp;nbsp;@&amp;nbsp;LUA&amp;nbsp;&amp;quot;CNAME&amp;nbsp;\&amp;quot;;return&amp;nbsp;&amp;#39;target.example.net.&amp;#39;\&amp;quot;&amp;quot;

#&amp;nbsp;启用&amp;nbsp;DNSSEC
pdnsutil&amp;nbsp;secure-zone&amp;nbsp;example.com
pdnsutil&amp;nbsp;rectify-zone&amp;nbsp;example.com

#&amp;nbsp;验证
dig&amp;nbsp;@127.0.0.1&amp;nbsp;example.com&amp;nbsp;CNAME&amp;nbsp;+dnssec&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;s Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/83.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/83.html&quot;&gt;https://www.hicairo.com/post/83.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Wed, 04 Mar 2026 12:14:07 +0800</pubDate></item><item><title>将 HiDNS 免费域名托管到 gcore.com</title><link>https://www.hicairo.com/post/82.html</link><description>&lt;p&gt;&lt;a href=&quot;https://www.hidoha.net&quot; target=&quot;_blank&quot;&gt;HiDNS&lt;/a&gt; 是一个免费的三级域名申请平台，只要你不进行滥用，原则上可以永久免费。将 HiDNS 域名托管到 &lt;a href=&quot;https://auth.gcore.com/login/signin?lang=en&quot; target=&quot;_blank&quot;&gt;Gcore&lt;/a&gt; ，可以使用 Gcore 的 CDN 服务，同时由于 Gcore 的 DNS 支持 CNAME Flattening，可以解决在根域设置 CNAME 记录的问题。&lt;/p&gt;&lt;p&gt;1、登录 HiDNS 域名的管理面板，点击“名稱伺服器”，填入 Gcore 的 NS 服务器地址后，点击“提交”按钮。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;Gcore&amp;nbsp;的&amp;nbsp;NS&amp;nbsp;服务器地址为：
ns1.gcorelabs.net
ns2.gcdn.services&lt;/pre&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237217516446.webp&quot; title=&quot;01.webp&quot; alt=&quot;01.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;2、登录 Gcore 的管理面板，首先点击左侧菜单中的“Managed DNS”按钮，然后点击右侧面板中的“添加区域”。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237235680316.webp&quot; title=&quot;02.webp&quot; alt=&quot;02.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;3、以 example.hidns.co 为例，输入域名后点击“Create Zone”按钮。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237251513985.webp&quot; title=&quot;03.webp&quot; alt=&quot;03.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;4、点击“确认”按钮。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237263652524.webp&quot; title=&quot;04.webp&quot; alt=&quot;04.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;5、再次点击“确认”按钮。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237275315377.webp&quot; title=&quot;05.webp&quot; alt=&quot;05.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;6、出现以下界面，说明域名已经成功托管到 Gcore，您可以点击“添加”按钮，添加 A / AAAA / CNAME 记录等。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237288712797.webp&quot; title=&quot;06.webp&quot; alt=&quot;06.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;7、有关 CNAME 记录。由于 RFC 1034 &amp;amp; RFC 2181 规定 CNAME 不能与其他记录共存，但根域必须有 SOA（Start of Authority）和 NS（Name Server）记录，以便 DNS 解析系统正常工作，如果在根域设置 CNAME，就无法再设置 NS 和 SOA，会导致整个 DNS 解析失败。因此我们发现传统 DNS 服务提供商，均不支持在根域上设置 CNAME 记录。Gocre 采用了 CNAME Flattening 机制，很好的解决了在根域上设置 CNAME 的问题。例如我们想为 example.hidns.co 设置指向 example.github.io 的 CNAME 记录，就可以使用 Gocre 来实现。&lt;/p&gt;&lt;p&gt;同上一步，点击“添加”按钮后，然后将类型选择为“CNAME”，在内容文本框内填入“example.github.io”最后点击“添加”按钮即可。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;注意：如果添加 CNAME 记录失败，请检查是否已经存在 A / AAAA 记录，删除即可。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237309347975.webp&quot; title=&quot;07.webp&quot; alt=&quot;07.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #E36C09; text-decoration: none;&quot;&gt;以下为非必须的操作&lt;/span&gt;&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;8、开启 DNSSEC ，解决传统 DNS 存在的安全问题。在 Gcore 的管理面板里打开“接口模式”按钮，然后打开“DNSSEC”按钮，这时弹出的菜单询问“Are you sure you want to enable DNSSEC?”，点击“Yes,enable”按钮。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237331581639.webp&quot; title=&quot;08.webp&quot; alt=&quot;08.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;9、点击 DS record 后面的“COPY”按钮，将 copy 出来的内容粘贴到一个记事本文件中。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237355243540.webp&quot; title=&quot;09.webp&quot; alt=&quot;09.webp&quot;/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;example.hidns.co.&amp;nbsp;3600&amp;nbsp;IN&amp;nbsp;DS&amp;nbsp;1036&amp;nbsp;13&amp;nbsp;2&amp;nbsp;3E6CBD9ACC39A930AA29843BBF6B7B222D2470C2937667CF519BA3B70A1009C1
1036&amp;nbsp;13&amp;nbsp;2&amp;nbsp;3E6CBD9ACC39A930AA29843BBF6B7B222D2470C2937667CF519BA3B70A1009C1&lt;/pre&gt;&lt;p&gt;10、再次登录 HiDNS 域名的管理面板，为 example.hidns.co 新建一条 DS 记录。如下图，Type 选择“DS”，Name 输入“@”,Value输入“1036 13 2 3E6CBD9ACC39A930AA29843BBF6B7B222D2470C2937667CF519BA3B70A1009C1”，最后点击后面的“加号”。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;注意：在添加DS记录时，我们去掉了上一步copy出来内容中的前段部分“example.hidns.co. 3600 IN DS ”。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2025/03/202503291743237369289033.webp&quot; title=&quot;10.webp&quot; alt=&quot;10.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;11、验证 example.hidns.co 是否开启 DNSSEC 成功。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@hcss-ecs-c37d:~#&amp;nbsp;dig&amp;nbsp;@8.8.8.8&amp;nbsp;example.hidns.co&amp;nbsp;+dnssec
;&amp;nbsp;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&amp;nbsp;DiG&amp;nbsp;9.18.28-0ubuntu0.22.04.1-Ubuntu&amp;nbsp;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&amp;nbsp;@8.8.8.8&amp;nbsp;example.hidns.co&amp;nbsp;+dnssec
;&amp;nbsp;(1&amp;nbsp;server&amp;nbsp;found)
;;&amp;nbsp;global&amp;nbsp;options:&amp;nbsp;+cmd
;;&amp;nbsp;Got&amp;nbsp;answer:
;;&amp;nbsp;-&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;-&amp;nbsp;opcode:&amp;nbsp;QUERY,&amp;nbsp;status:&amp;nbsp;NOERROR,&amp;nbsp;id:&amp;nbsp;52677
;;&amp;nbsp;flags:&amp;nbsp;qr&amp;nbsp;rd&amp;nbsp;ra;&amp;nbsp;QUERY:&amp;nbsp;1,&amp;nbsp;ANSWER:&amp;nbsp;6,&amp;nbsp;AUTHORITY:&amp;nbsp;0,&amp;nbsp;ADDITIONAL:&amp;nbsp;1
;;&amp;nbsp;OPT&amp;nbsp;PSEUDOSECTION:
;&amp;nbsp;EDNS:&amp;nbsp;version:&amp;nbsp;0,&amp;nbsp;flags:&amp;nbsp;do;&amp;nbsp;udp:&amp;nbsp;512
;;&amp;nbsp;QUESTION&amp;nbsp;SECTION:
;example.hidns.co.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A
;;&amp;nbsp;ANSWER&amp;nbsp;SECTION:
example.hidns.co.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CNAME&amp;nbsp;&amp;nbsp;&amp;nbsp;example.github.io.
example.hidns.co.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRSIG&amp;nbsp;&amp;nbsp;&amp;nbsp;CNAME&amp;nbsp;13&amp;nbsp;3&amp;nbsp;600&amp;nbsp;20250331093148&amp;nbsp;20250329043148&amp;nbsp;37058&amp;nbsp;example.hidns.co.&amp;nbsp;tzHTSQ5bXz+92T4DSJmUdYvLd6EY0FVqfjCoouQ+6ydvQc+DvVEcoCjM&amp;nbsp;CRbuSRFOd6xeDo9gp3+KxI5djBFSuA==
example.github.io.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;185.199.110.153
example.github.io.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;185.199.109.153
example.github.io.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;185.199.111.153
example.github.io.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3600&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;185.199.108.153
;;&amp;nbsp;Query&amp;nbsp;time:&amp;nbsp;628&amp;nbsp;msec
;;&amp;nbsp;SERVER:&amp;nbsp;8.8.8.8#53(8.8.8.8)&amp;nbsp;(UDP)
;;&amp;nbsp;WHEN:&amp;nbsp;Sat&amp;nbsp;Mar&amp;nbsp;29&amp;nbsp;15:31:48&amp;nbsp;CST&amp;nbsp;2025
;;&amp;nbsp;MSG&amp;nbsp;SIZE&amp;nbsp;&amp;nbsp;rcvd:&amp;nbsp;252&lt;/pre&gt;&lt;p&gt;我们可以看到，dig 的返回结果中包含了 RRSIG 记录，这表明 DNSSEC 已经生效，并且返回的 CNAME 记录也经过了签名。说明 DNSSEC 已成功启用。&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;s Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/82.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/82.html&quot;&gt;https://www.hicairo.com/post/82.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Sat, 29 Mar 2025 16:22:22 +0800</pubDate></item><item><title>在 Ubuntu 22.04 上配置 MySQL 数据库同步（主从复制）</title><link>https://www.hicairo.com/post/81.html</link><description>&lt;p&gt;这篇教程我将带领大家在 Ubuntu 22.04 上配置 MySQL 数据库的同步，实现 MySQL 数据库一主一从复制，我们将采用 GTID 模式进行配置。&lt;/p&gt;&lt;p&gt;GTID（Global Transaction Identifier，全球事务标识符）模式是 MySQL 5.6 引入的一个重要特性，相比传统的基于日志位置的复制方式，GTID 模式具有以下优点：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;简化复制配置：&lt;/strong&gt;GTID 模式不需要手动记录二进制日志的文件名和位置，复制配置更加简洁。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;事务一致性：&lt;/strong&gt;每个事务都有唯一的 GTID，能够确保主从服务器之间的事务一致性。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自动故障转移：&lt;/strong&gt;当主服务器发生故障时，可以更容易地选择新的主服务器并自动恢复复制。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;避免数据丢失：&lt;/strong&gt;GTID 模式避免了传统复制中可能出现的数据丢失问题，确保主从之间的同步更为可靠。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 在主从服务器上分别安装 MySQL&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先，更新系统并安装 MySQL 服务：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;apt&amp;nbsp;update
sudo&amp;nbsp;apt&amp;nbsp;upgrade&amp;nbsp;-y
sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;mysql-server&amp;nbsp;mysql-client&lt;/pre&gt;&lt;p&gt;安装完毕后，你可以通过以下命令查看 MySQL 的版本：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mysql&amp;nbsp;-V&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;2. 主服务器配置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;主服务器是所有数据写入的地方，以下是配置主服务器的步骤。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.1 编辑 MySQL 配置文件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;打开 MySQL 配置文件进行修改：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;vi&amp;nbsp;/etc/mysql/mysql.conf.d/mysqld.cnf&lt;/pre&gt;&lt;p&gt;在 &lt;span style=&quot;background-color: #F2F2F2; color: #F79646;&quot;&gt;[mysqld]&lt;/span&gt;&lt;span style=&quot;background-color: #F2F2F2;&quot;&gt; &lt;/span&gt;部分添加或修改以下设置：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;[mysqld]
server-id=1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;主服务器唯一&amp;nbsp;ID
log-bin=mysql-bin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;启用二进制日志
gtid_mode=ON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;启用&amp;nbsp;GTID&amp;nbsp;模式
enforce-gtid-consistency=ON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;强制&amp;nbsp;GTID&amp;nbsp;一致性
log-slave-updates=ON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;允许从库更新记录到&amp;nbsp;binlog
binlog-format=ROW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;使用行格式的&amp;nbsp;binlog（推荐）
binlog_expire_logs_seconds=604800&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;设置&amp;nbsp;binlog&amp;nbsp;的过期时间为&amp;nbsp;7&amp;nbsp;天
innodb_buffer_pool_size=6G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;设置&amp;nbsp;InnoDB&amp;nbsp;存储引擎的缓冲池大小，建议设置为服务器总内存的&amp;nbsp;50%-70%
binlog-do-db=mydatabase&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;仅记录指定数据库的操作到&amp;nbsp;binlog
bind-address=0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;允许外部连接&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;2.2 重启 MySQL 服务&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;配置完成后，重启 MySQL 服务以使设置生效：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;systemctl&amp;nbsp;restart&amp;nbsp;mysql&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;2.3 创建复制用户&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;登录 MySQL，并创建用于复制的用户：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mysql&amp;nbsp;-u&amp;nbsp;root&amp;nbsp;-p&lt;/pre&gt;&lt;p&gt;在 MySQL 中执行以下命令：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CREATE&amp;nbsp;USER&amp;nbsp;&amp;#39;slave&amp;#39;@&amp;#39;%&amp;#39;&amp;nbsp;IDENTIFIED&amp;nbsp;WITH&amp;nbsp;mysql_native_password&amp;nbsp;BY&amp;nbsp;&amp;#39;your_password&amp;#39;;
GRANT&amp;nbsp;REPLICATION&amp;nbsp;SLAVE&amp;nbsp;ON&amp;nbsp;*.*&amp;nbsp;TO&amp;nbsp;&amp;#39;slave&amp;#39;@&amp;#39;%&amp;#39;;
FLUSH&amp;nbsp;PRIVILEGES;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;3. 从服务器配置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;从服务器将从主服务器接收数据并进行同步，以下是配置从服务器的步骤。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.1 编辑 MySQL 配置文件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;打开从服务器的 MySQL 配置文件并进行修改：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;vi&amp;nbsp;/etc/mysql/mysql.conf.d/mysqld.cnf&lt;/pre&gt;&lt;p&gt;在 &lt;span style=&quot;background-color: #F2F2F2; color: #F79646;&quot;&gt;[mysqld]&lt;/span&gt;&lt;span style=&quot;background-color: #F2F2F2;&quot;&gt; &lt;/span&gt;部分添加或修改以下设置：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;[mysqld]
server-id=2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;从服务器唯一&amp;nbsp;ID
log-bin=mysql-bin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;启用二进制日志
gtid_mode=ON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;启用&amp;nbsp;GTID&amp;nbsp;模式
enforce-gtid-consistency=ON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;强制&amp;nbsp;GTID&amp;nbsp;一致性
log-slave-updates=ON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;允许从库更新记录到&amp;nbsp;binlog
binlog-format=ROW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;使用行格式的&amp;nbsp;binlog
binlog_expire_logs_seconds=604800&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;设置&amp;nbsp;binlog&amp;nbsp;的过期时间为&amp;nbsp;7&amp;nbsp;天
relay_log=relay-bin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;设置中继日志
relay_log_recovery=ON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;启用中继日志恢复
binlog-do-db=mydatabase&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;仅记录指定数据库的操作到&amp;nbsp;binlog&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;3.2 重启 MySQL 服务&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;配置完成后，重启 MySQL 服务以使设置生效：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;systemctl&amp;nbsp;restart&amp;nbsp;mysql&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;3.3 配置复制&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;登录 MySQL，并配置从服务器的复制：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mysql&amp;nbsp;-u&amp;nbsp;root&amp;nbsp;-p&lt;/pre&gt;&lt;p&gt;停止当前的复制任务（如果有）：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;STOP&amp;nbsp;SLAVE;&lt;/pre&gt;&lt;p&gt;配置从服务器复制任务，使用主服务器的 IP、复制用户和密码，并启用 GTID 自动定位：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CHANGE&amp;nbsp;MASTER&amp;nbsp;TO
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MASTER_HOST=&amp;#39;master_server_ip&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MASTER_USER=&amp;#39;slave&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MASTER_PASSWORD=&amp;#39;your_password&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MASTER_AUTO_POSITION=1;&amp;nbsp;&amp;nbsp;#&amp;nbsp;启用&amp;nbsp;GTID&amp;nbsp;自动定位&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;3.4 启动复制&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;启动复制任务：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;START&amp;nbsp;SLAVE;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;3.5 检查复制状态&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用以下命令检查复制状态，确保以下两项为 &lt;span style=&quot;background-color: #F2F2F2; color: #F79646;&quot;&gt;Yes&lt;/span&gt;：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SHOW&amp;nbsp;SLAVE&amp;nbsp;STATUS\G;
.....
Slave_IO_Running:&amp;nbsp;Yes
Slave_SQL_Running:&amp;nbsp;Yes
.....&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;4. 数据同步验证&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在主服务器上创建需要同步的数据库：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mysql&amp;nbsp;-uroot&amp;nbsp;-p
CREATE&amp;nbsp;DATABASE&amp;nbsp;mydatabase;&lt;/pre&gt;&lt;p&gt;在从服务器上验证数据库是否同步：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mysql&amp;nbsp;-uroot&amp;nbsp;-p
SHOW&amp;nbsp;DATABASES;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;5. 防火墙配置（以 UFW 为例）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;配置主服务器的防火墙仅允许从服务器通过 3306 端口连接到主服务器。修改主服务器的防火墙配置：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;&amp;lt;slave_ip&amp;gt;&amp;nbsp;to&amp;nbsp;any&amp;nbsp;port&amp;nbsp;3306&amp;nbsp;proto&amp;nbsp;tcp&lt;/pre&gt;&lt;p&gt;UFW 的详细使用方法请参考：&lt;a href=&quot;https://www.hicairo.com/post/80.html&quot; target=&quot;_blank&quot;&gt;https://www.hicairo.com/post/80.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6. 备份与恢复&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;6.1 在主服务器上备份数据库&lt;/p&gt;&lt;p&gt;使用 mysqldump 备份数据库：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mysqldump&amp;nbsp;-uroot&amp;nbsp;-p&amp;nbsp;mydatabase&amp;nbsp;--triggers&amp;nbsp;--routines&amp;nbsp;--events&amp;nbsp;--source-data=2&amp;nbsp;--set-gtid-purged=ON&amp;nbsp;&amp;gt;&amp;nbsp;mydatabase.sql&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;6.2 在从服务器上恢复数据库&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 &lt;span style=&quot;background-color: #F2F2F2;&quot;&gt;scp&lt;/span&gt; 将备份的数据库下载到从服务器：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;scp&amp;nbsp;root@master_server_ip:/root/mydatabase.sql&amp;nbsp;./&lt;/pre&gt;&lt;p&gt;在从服务器上恢复数据库：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mysql&amp;nbsp;-uroot&amp;nbsp;-p&amp;nbsp;mydatabase&amp;nbsp;&amp;lt;&amp;nbsp;mydatabase.sql&lt;/pre&gt;&lt;p&gt;检查 GTID 设置：确保目标服务器的 GTID 设置与主服务器一致，特别是在恢复后，检查 &lt;span style=&quot;background-color: #F2F2F2;&quot;&gt;gtid_mode&lt;/span&gt; 和 &lt;span style=&quot;background-color: #F2F2F2;&quot;&gt;enforce-gtid-consistency&lt;/span&gt; 设置：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SHOW&amp;nbsp;VARIABLES&amp;nbsp;LIKE&amp;nbsp;&amp;#39;gtid%&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;6.3&amp;nbsp;重新配置从服务器&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;参考 3.3-3.5 配置复制&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;s Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/81.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/81.html&quot;&gt;https://www.hicairo.com/post/81.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 21 Feb 2025 11:45:34 +0800</pubDate></item><item><title>Ubuntu 操作系统中使用 UFW 配置防火墙</title><link>https://www.hicairo.com/post/80.html</link><description>&lt;p&gt;&lt;strong&gt;1. 什么是 UFW？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;UFW (Uncomplicated Firewall) 是 Ubuntu 提供的一个简化的防火墙管理工具，基于 iptables，旨在让防火墙配置变得更加简单易用。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 安装 UFW&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在大多数 Ubuntu 版本中，UFW 已经默认安装。你可以通过以下命令确认是否已安装：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;ufw&amp;nbsp;status&lt;/pre&gt;&lt;p&gt;如果未安装，可以通过以下命令进行安装：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;apt&amp;nbsp;update
sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;ufw&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;3. 设置默认防火墙规则&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在启用 UFW 之前，建议先设置默认规则，避免意外断开 SSH 连接：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;默认拒绝所有传入连接
sudo&amp;nbsp;ufw&amp;nbsp;default&amp;nbsp;deny&amp;nbsp;incoming

#&amp;nbsp;默认允许所有传出连接
sudo&amp;nbsp;ufw&amp;nbsp;default&amp;nbsp;allow&amp;nbsp;outgoing

#&amp;nbsp;允许&amp;nbsp;SSH&amp;nbsp;(22端口)，避免开启防火墙后无法连接服务器
sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;22/tcp&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;4. 启用和禁用 UFW&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;启用&amp;nbsp;UFW
sudo&amp;nbsp;ufw&amp;nbsp;enable

#&amp;nbsp;禁用&amp;nbsp;UFW
sudo&amp;nbsp;ufw&amp;nbsp;disable&lt;/pre&gt;&lt;p&gt;⚠️ 注意：在远程服务器上启用防火墙前，务必确保已允许 SSH 端口，否则可能会被锁在服务器外面！&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. 检查 UFW 状态&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sudo&amp;nbsp;ufw&amp;nbsp;status&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;6. UFW 基本命令&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;允许其他常用端口&amp;nbsp;(示例:&amp;nbsp;80&amp;nbsp;端口用于&amp;nbsp;HTTP,&amp;nbsp;443&amp;nbsp;端口用于&amp;nbsp;HTTPS)
sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;80/tcp
sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;443/tcp

#&amp;nbsp;拒绝特定端口
sudo&amp;nbsp;ufw&amp;nbsp;deny&amp;nbsp;23

#&amp;nbsp;查看&amp;nbsp;UFW&amp;nbsp;详细状态
sudo&amp;nbsp;ufw&amp;nbsp;status&amp;nbsp;verbose

#&amp;nbsp;以编号形式显示所有规则
sudo&amp;nbsp;ufw&amp;nbsp;status&amp;nbsp;numbered

#&amp;nbsp;删除编号为&amp;nbsp;3&amp;nbsp;的规则
sudo&amp;nbsp;ufw&amp;nbsp;delete&amp;nbsp;3

#&amp;nbsp;删除规则（非编号方式）
sudo&amp;nbsp;ufw&amp;nbsp;delete&amp;nbsp;allow&amp;nbsp;80

#&amp;nbsp;重置&amp;nbsp;UFW&amp;nbsp;所有规则
sudo&amp;nbsp;ufw&amp;nbsp;reset&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;7. UFW 复杂规则示例&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;仅允许特定&amp;nbsp;IP&amp;nbsp;通过&amp;nbsp;TCP&amp;nbsp;协议访问指定端口&amp;nbsp;(例如&amp;nbsp;MySQL&amp;nbsp;3306&amp;nbsp;端口)
sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;192.168.1.100&amp;nbsp;to&amp;nbsp;any&amp;nbsp;port&amp;nbsp;3306&amp;nbsp;proto&amp;nbsp;tcp

#&amp;nbsp;允许特定&amp;nbsp;IP&amp;nbsp;通过&amp;nbsp;UDP&amp;nbsp;协议访问指定端口&amp;nbsp;(例如&amp;nbsp;1194&amp;nbsp;端口，用于&amp;nbsp;OpenVPN)
sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;192.168.1.100&amp;nbsp;to&amp;nbsp;any&amp;nbsp;port&amp;nbsp;1194&amp;nbsp;proto&amp;nbsp;udp

#&amp;nbsp;开放一个端口范围&amp;nbsp;(例如&amp;nbsp;10000&amp;nbsp;到&amp;nbsp;20000&amp;nbsp;端口，用于&amp;nbsp;VoIP&amp;nbsp;或游戏服务器)
sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;10000:20000/tcp

#&amp;nbsp;限制&amp;nbsp;SSH&amp;nbsp;(防止暴力破解)
sudo&amp;nbsp;ufw&amp;nbsp;limit&amp;nbsp;ssh

#&amp;nbsp;细化限制：每&amp;nbsp;IP&amp;nbsp;每&amp;nbsp;30&amp;nbsp;秒最多&amp;nbsp;6&amp;nbsp;次连接，超过则拒绝&amp;nbsp;(默认规则)
sudo&amp;nbsp;ufw&amp;nbsp;limit&amp;nbsp;22/tcp

#&amp;nbsp;你也可以为其他服务设置类似的连接限制，例如&amp;nbsp;HTTP&amp;nbsp;服务
sudo&amp;nbsp;ufw&amp;nbsp;limit&amp;nbsp;80/tcp&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;8. 防火墙日志&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;启用日志（建议在排查问题时使用）
sudo&amp;nbsp;ufw&amp;nbsp;logging&amp;nbsp;on

#&amp;nbsp;查看&amp;nbsp;UFW&amp;nbsp;日志
sudo&amp;nbsp;tail&amp;nbsp;-f&amp;nbsp;/var/log/ufw.log&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;s Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/80.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/80.html&quot;&gt;https://www.hicairo.com/post/80.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Thu, 20 Feb 2025 10:09:46 +0800</pubDate></item><item><title>Debian 12 / Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程</title><link>https://www.hicairo.com/post/79.html</link><description>&lt;p&gt;　　本文将指导如何在 Debian 12 和 Ubuntu 24.04 下安装 Docker 以及 Docker Compose。&lt;/p&gt;&lt;p&gt;　　PS：本文同时适用于 Debian 11 以及 Ubuntu 20.04, Ubuntu 22.04。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、什么是 Docker？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;　　Docker 是一种容器化技术，可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件，而不再需要安装配置各种环境。开源 &lt;a href=&quot;https://www.docker.com/&quot; target=&quot;_blank&quot;&gt;Docker 社区&lt;/a&gt;致力于改进这类技术，并免费提供给所有用户，使之获益。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、什么是 Docker Compose？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;　　传统模式下运维人员需要运行 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;docker run&lt;/span&gt; 来启动各种容器，一旦容器过多，就无法一次性记住所有的运行参数和命令，这时候我们可以使用 &lt;a href=&quot;https://docs.docker.com/compose/&quot; target=&quot;_blank&quot;&gt;Docker Compose&lt;/a&gt; 来解决这个问题。&lt;/p&gt;&lt;p&gt;　　Docker Compose 是一个用于在单个主机上定义和运行多个 Docker 容器的工具。它使用 YAML 文件来配置应用程序的服务，然后使用一个命令就可以创建并启动所有服务。使用 Docker Compose 可以大大简化 Docker 容器的管理和部署，特别是对于具有多个互相依赖的容器的复杂应用。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、使用官方源安装 Docker&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;以下操作需要在 root 用户下完成，请使用 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;sudo -i&lt;/span&gt; 或 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;su root&lt;/span&gt; 切换到 root 用户进行操作。&lt;/p&gt;&lt;p&gt;首先，安装一些必要的软件包：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;apt&amp;nbsp;update
apt&amp;nbsp;upgrade&amp;nbsp;-y
apt&amp;nbsp;install&amp;nbsp;curl&amp;nbsp;vim&amp;nbsp;wget&amp;nbsp;gnupg&amp;nbsp;dpkg&amp;nbsp;apt-transport-https&amp;nbsp;lsb-release&amp;nbsp;ca-certificates&lt;/pre&gt;&lt;p&gt;然后加入 Docker 的 GPG 公钥和 apt 源：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;Debian
curl&amp;nbsp;-sSL&amp;nbsp;https://download.docker.com/linux/debian/gpg&amp;nbsp;|&amp;nbsp;gpg&amp;nbsp;--dearmor&amp;nbsp;&amp;gt;&amp;nbsp;/usr/share/keyrings/docker-ce.gpg
echo&amp;nbsp;&amp;quot;deb&amp;nbsp;[arch=$(dpkg&amp;nbsp;--print-architecture)&amp;nbsp;signed-by=/usr/share/keyrings/docker-ce.gpg]&amp;nbsp;https://download.docker.com/linux/debian&amp;nbsp;$(lsb_release&amp;nbsp;-sc)&amp;nbsp;stable&amp;quot;&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list.d/docker.list

#&amp;nbsp;Ubuntu
curl&amp;nbsp;-sSL&amp;nbsp;https://download.docker.com/linux/debian/gpg&amp;nbsp;|&amp;nbsp;gpg&amp;nbsp;--dearmor&amp;nbsp;&amp;gt;&amp;nbsp;/usr/share/keyrings/docker-ce.gpg
echo&amp;nbsp;&amp;quot;deb&amp;nbsp;[arch=$(dpkg&amp;nbsp;--print-architecture)&amp;nbsp;signed-by=/usr/share/keyrings/docker-ce.gpg]&amp;nbsp;https://download.docker.com/linux/ubuntu&amp;nbsp;$(lsb_release&amp;nbsp;-sc)&amp;nbsp;stable&amp;quot;&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list.d/docker.list&lt;/pre&gt;&lt;p&gt;国内机器可以用&lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/&quot; target=&quot;_blank&quot;&gt;清华 TUNA&lt;/a&gt; 的国内源：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;Debian
curl&amp;nbsp;-sS&amp;nbsp;https://download.docker.com/linux/debian/gpg&amp;nbsp;|&amp;nbsp;gpg&amp;nbsp;--dearmor&amp;nbsp;&amp;gt;&amp;nbsp;/usr/share/keyrings/docker-ce.gpg
echo&amp;nbsp;&amp;quot;deb&amp;nbsp;[arch=$(dpkg&amp;nbsp;--print-architecture)&amp;nbsp;signed-by=/usr/share/keyrings/docker-ce.gpg]&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian&amp;nbsp;$(lsb_release&amp;nbsp;-sc)&amp;nbsp;stable&amp;quot;&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list.d/docker.list

#&amp;nbsp;Ubuntu
curl&amp;nbsp;-sS&amp;nbsp;https://download.docker.com/linux/debian/gpg&amp;nbsp;|&amp;nbsp;gpg&amp;nbsp;--dearmor&amp;nbsp;&amp;gt;&amp;nbsp;/usr/share/keyrings/docker-ce.gpg
echo&amp;nbsp;&amp;quot;deb&amp;nbsp;[arch=$(dpkg&amp;nbsp;--print-architecture)&amp;nbsp;signed-by=/usr/share/keyrings/docker-ce.gpg]&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu&amp;nbsp;$(lsb_release&amp;nbsp;-sc)&amp;nbsp;stable&amp;quot;&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list.d/docker.list&lt;/pre&gt;&lt;p&gt;然后更新系统后即可安装 Docker CE 和 Docker Compose 插件：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;apt&amp;nbsp;update
apt&amp;nbsp;install&amp;nbsp;docker-ce&amp;nbsp;docker-ce-cli&amp;nbsp;containerd.io&amp;nbsp;docker-compose-plugin&lt;/pre&gt;&lt;p&gt;此时可以使用 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;docker version&lt;/span&gt; 命令检查是否安装成功：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@debian&amp;nbsp;~&amp;nbsp;#&amp;nbsp;docker&amp;nbsp;version
Client:&amp;nbsp;Docker&amp;nbsp;Engine&amp;nbsp;-&amp;nbsp;Community
&amp;nbsp;Version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;26.1.4
&amp;nbsp;API&amp;nbsp;version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.45
&amp;nbsp;Go&amp;nbsp;version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;go1.21.11
&amp;nbsp;Git&amp;nbsp;commit:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5650f9b
&amp;nbsp;Built:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wed&amp;nbsp;Jun&amp;nbsp;&amp;nbsp;5&amp;nbsp;11:29:22&amp;nbsp;2024
&amp;nbsp;OS/Arch:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;linux/amd64
&amp;nbsp;Context:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default
Server:&amp;nbsp;Docker&amp;nbsp;Engine&amp;nbsp;-&amp;nbsp;Community
&amp;nbsp;Engine:
&amp;nbsp;&amp;nbsp;Version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;26.1.4
&amp;nbsp;&amp;nbsp;API&amp;nbsp;version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.45&amp;nbsp;(minimum&amp;nbsp;version&amp;nbsp;1.24)
&amp;nbsp;&amp;nbsp;Go&amp;nbsp;version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;go1.21.11
&amp;nbsp;&amp;nbsp;Git&amp;nbsp;commit:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;de5c9cf
&amp;nbsp;&amp;nbsp;Built:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wed&amp;nbsp;Jun&amp;nbsp;&amp;nbsp;5&amp;nbsp;11:29:22&amp;nbsp;2024
&amp;nbsp;&amp;nbsp;OS/Arch:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;linux/amd64
&amp;nbsp;&amp;nbsp;Experimental:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;true
&amp;nbsp;containerd:
&amp;nbsp;&amp;nbsp;Version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.6.33
&amp;nbsp;&amp;nbsp;GitCommit:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d2d58213f83a351ca8f528a95fbd145f5654e957
&amp;nbsp;runc:
&amp;nbsp;&amp;nbsp;Version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.1.12
&amp;nbsp;&amp;nbsp;GitCommit:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v1.1.12-0-g51d5e94
&amp;nbsp;docker-init:
&amp;nbsp;&amp;nbsp;Version:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.19.0
&amp;nbsp;&amp;nbsp;GitCommit:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;de40ad0&lt;/pre&gt;&lt;p&gt;如果需要某个特定用户可以用 Docker &lt;a href=&quot;https://docs.docker.com/engine/security/rootless/&quot; target=&quot;_blank&quot;&gt;rootless&lt;/a&gt; 模式运行 Docker，那么可以把这个用户也加入 docker 组，比如我们把 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;www-data&lt;/span&gt; 用户加进去：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;apt&amp;nbsp;install&amp;nbsp;docker-ce-rootless-extras
sudo&amp;nbsp;usermod&amp;nbsp;-aG&amp;nbsp;docker&amp;nbsp;www-data&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;四、安装 Docker Compose&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;因为我们已经安装了 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;docker-compose-plugin&lt;/span&gt;，所以 Docker 目前已经自带 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;docker compose&lt;/span&gt; 命令，基本上可以替代 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;docker-compose&lt;/span&gt;：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@debian&amp;nbsp;~&amp;nbsp;#&amp;nbsp;docker&amp;nbsp;compose&amp;nbsp;version
Docker&amp;nbsp;Compose&amp;nbsp;version&amp;nbsp;v2.27.1&lt;/pre&gt;&lt;p&gt;如果某些镜像或命令不兼容，则我们还可以单独安装 Docker Compose，&lt;/p&gt;&lt;p&gt;我们可以使用 Docker 官方发布的 &lt;a href=&quot;https://github.com/docker/compose&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt; 直接安装最新版本：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;curl&amp;nbsp;-L&amp;nbsp;https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64&amp;nbsp;&amp;gt;&amp;nbsp;/usr/local/bin/docker-compose
chmod&amp;nbsp;+x&amp;nbsp;/usr/local/bin/docker-compose&lt;/pre&gt;&lt;p&gt;此时可以使用 &lt;span style=&quot;background-color: #FDEADA;&quot;&gt;docker-compose version&lt;/span&gt; 命令检查是否安装成功：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@debian&amp;nbsp;~&amp;nbsp;#&amp;nbsp;docker-compose&amp;nbsp;version
Docker&amp;nbsp;Compose&amp;nbsp;version&amp;nbsp;v2.27.1&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;五、修改 Docker 配置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;以下配置会增加一段自定义内网 IPv6 地址，开启容器的 IPv6 功能，以及限制日志文件大小，防止 Docker 日志塞满硬盘 (泪的教训)：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/docker/daemon.json&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;EOF
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;log-driver&amp;quot;:&amp;nbsp;&amp;quot;json-file&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;log-opts&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;max-size&amp;quot;:&amp;nbsp;&amp;quot;20m&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;max-file&amp;quot;:&amp;nbsp;&amp;quot;3&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;ipv6&amp;quot;:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;fixed-cidr-v6&amp;quot;:&amp;nbsp;&amp;quot;fd00:dead:beef:c0::/80&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;experimental&amp;quot;:true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;ip6tables&amp;quot;:true
}
EOF&lt;/pre&gt;&lt;p&gt;然后重启 Docker 服务：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;restart&amp;nbsp;docker&lt;/pre&gt;&lt;p&gt;　　好了，我们已经安装好了 Docker 和 Docker Compose，然后就可以开始愉快的安装各种软件，限于篇幅，我们不再赘述，今后慢慢介绍安装各种 Docker 软件的方法。&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;来源：烧饼博客&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;链接：&lt;a href=&quot;https://u.sb/debian-install-docker/&quot; target=&quot;_blank&quot;&gt;https://u.sb/debian-install-docker/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 22 Nov 2024 10:54:14 +0800</pubDate></item><item><title>IPv4 &amp;amp; IPv6 双栈家庭局域网内将客户端网关指向旁路由的探究</title><link>https://www.hicairo.com/post/78.html</link><description>&lt;p&gt;　　这篇文章是透明代理问题的一个延续，旨在解决 IPv4 &amp;amp; IPv6 双栈家庭网络环境中，将所有终端设备网关指向旁路由，实现所有设备均可正常科学上网的问题。在写这篇博客之前，我在 youtube 上翻阅了许多相关视频，发现很多 UP 主对 IPv6 避而不谈，也有 UP 主建议关闭 IPv6 网络。因此决定聊一下这个话题，算是一个探究吧，希望这篇文章对有这方面需求的小伙伴有一些启发。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、实现目标及解决思路&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;1、家庭网络中终端设备一般很少，对主路由的数据交换及网络吞吐能力要求并不高，因此在路由器选择方面，尽可能选择性价比及稳定性高、功耗低的产品。&lt;/p&gt;&lt;p&gt;2、在网络拓扑方面，遵循网络拓扑结构越简单越好，这样当出现故障时，我们更容易排查错误。&lt;/p&gt;&lt;p&gt;3、解决 IPv4 &amp;amp; IPv6 双栈家庭局域网环境下，所有终端设备均可通过旁路由科学上网的问题。&lt;/p&gt;&lt;p&gt;4、我不建议将所有功能（例如科学上网插件、分流规则等）都集中在主路由上，一方面需要将主路由替换为性能较好的软路由，另外主路由的配置会变得比较臃肿，牵一发动全身，不利于故障排查。&lt;/p&gt;&lt;p&gt;5、在这篇文章中，主路由我们使用运营商赠送的光猫，然后引入一块 Armbian 操作系统的旁路由实现全局科学上网问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、网络拓扑结构&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;/zb_users/upload/2024/05/202405031714740092479576.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;以上是本实验环境的网络拓扑结构：&lt;/p&gt;&lt;p&gt;1、主路由使用运营商赠送的华为 MA5671 光猫（IPv4地址：192.168.0.1），光猫的 LAN2/LAN4 口被定义为 IPTV 口，专门用于接运营商赠送的 IPTV 机顶盒。&lt;/p&gt;&lt;p&gt;2、光猫采用路由模式，简单配置 IPv4 dhcp 及 IPv6 相关设置后，局域网内的终端设备即获取到有效的 IP 地址，可以正常上网了，这应该是大多数普通家庭最简单的网络结构。&lt;/p&gt;&lt;p&gt;3、斐讯 N1 刷入 Armbian 操作系统（IPv4地址：192.168.0.2），当作旁路由使用，实现全局科学上网问题。旁路由已经被配置为透明代理，可以正常科学上网。具体可参考《&lt;a href=&quot;/post/77.html&quot; target=&quot;_blank&quot;&gt;在 Armbian 操作系统上使用 dae(大鹅) 搭建透明代理&lt;/a&gt;》或《&lt;a href=&quot;/post/70.html&quot; target=&quot;_blank&quot;&gt;在 Armbian 操作系统上搭建基于 Hysteria2 协议的透明代理&lt;/a&gt;》。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、修改相关设置，使局域网内客户端网关指向旁路由，实现全局科学上网&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、IPv4 DHCP 相关设置&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;由于光猫的 IPv4 DHCP Server 的设置不能修改网关地址，我们关掉光猫的 IPv4 DHCP Server 。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/09/202409021725272409888449.webp&quot; title=&quot;2.关闭光猫 IPv4 DHCP Server.webp&quot; alt=&quot;2.关闭光猫 IPv4 DHCP Server.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;然后在旁路由上安装 IPv4 DHCP Server，解决 IPv4 网关问题。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;安装&amp;nbsp;isc-dhcp-server
apt-get&amp;nbsp;install&amp;nbsp;isc-dhcp-server

#&amp;nbsp;修改&amp;nbsp;isc-dhcp-server&amp;nbsp;配置文件，定义网络接口
vi&amp;nbsp;/etc/default/isc-dhcp-server
INTERFACESv4=&amp;quot;eth0&amp;quot;
INTERFACESv6=&amp;quot;eth0&amp;quot;

#&amp;nbsp;在&amp;nbsp;dhcpd.conf&amp;nbsp;配置文件尾部添加如下配置
vi&amp;nbsp;/etc/dhcp/dhcpd.conf
subnet&amp;nbsp;192.168.0.0&amp;nbsp;netmask&amp;nbsp;255.255.255.0&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;range&amp;nbsp;192.168.0.150&amp;nbsp;192.168.0.200;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;开放的地址池
&amp;nbsp;&amp;nbsp;&amp;nbsp;option&amp;nbsp;domain-name-servers&amp;nbsp;223.5.5.5,223.6.6.6;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;NS域名服务器，如果没有就注释掉
&amp;nbsp;&amp;nbsp;&amp;nbsp;#option&amp;nbsp;domain-name&amp;nbsp;&amp;quot;internal.example.org&amp;quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;域名
&amp;nbsp;&amp;nbsp;&amp;nbsp;option&amp;nbsp;routers&amp;nbsp;192.168.0.2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;网关地址
&amp;nbsp;&amp;nbsp;&amp;nbsp;option&amp;nbsp;broadcast-address&amp;nbsp;192.168.0.255;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;广播地址
&amp;nbsp;&amp;nbsp;&amp;nbsp;default-lease-time&amp;nbsp;259200;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;默认租期，单位：秒
&amp;nbsp;&amp;nbsp;&amp;nbsp;max-lease-time&amp;nbsp;259200;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;最大租期
}

#&amp;nbsp;重启&amp;nbsp;isc-dhcp-server
systemctl&amp;nbsp;restart&amp;nbsp;isc-dhcp-server&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;这时，重启终端设备后，终端设备的 ipv4 网关便指向了旁路由（192.168.0.2）。&lt;/p&gt;&lt;p&gt;2、IPv6 相关设置&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;光猫的 IPv6 设置如下图，从 WAN 口获取 IPv6 前缀，采用无状态模式给局域网分配 IPv6 地址。 华为 MA5671 这款光猫是比较傻瓜的，没有 Router Advertisement (RA) 服务的相关设置。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/09/202409021725272425236599.webp&quot; title=&quot;3.光猫 IPv6 设置.webp&quot; alt=&quot;3.光猫 IPv6 设置.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;正常情况下，如果设备中的 Router Advertisement (RA)&amp;nbsp; 服务参数无法修改，设备生产商会将 AdvDefaultPreference 和 AdvRoutePreference 参数的优先级设置为 medium 。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;我们可以在旁路由中使用如下命令查询华为 MA5671 光猫 RA 服务中 AdvDefaultPreference 和 AdvRoutePreference 参数的优先级。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@armbian:~#&amp;nbsp;ip&amp;nbsp;-6&amp;nbsp;route&amp;nbsp;show
::1&amp;nbsp;dev&amp;nbsp;lo&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;pref&amp;nbsp;medium
240e:380:19b3:65f7::/64&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;expires&amp;nbsp;259193sec&amp;nbsp;pref&amp;nbsp;medium
fe80::ecee:eeff:feee:eeee&amp;nbsp;dev&amp;nbsp;dae0&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;pref&amp;nbsp;medium
fe80::/64&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;pref&amp;nbsp;medium
fe80::/64&amp;nbsp;dev&amp;nbsp;dae0&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;pref&amp;nbsp;medium
default&amp;nbsp;via&amp;nbsp;fe80::1&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;ra&amp;nbsp;metric&amp;nbsp;1024&amp;nbsp;expires&amp;nbsp;1793sec&amp;nbsp;mtu&amp;nbsp;1472&amp;nbsp;hoplimit&amp;nbsp;64&amp;nbsp;pref&amp;nbsp;medium&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;&lt;strong&gt;相关知识点：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;table class=&quot;boxTitle&quot; style=&quot;width: 100%;&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td style=&quot;border-color: rgb(255, 255, 255); background-color: rgb(229, 246, 250);word-break: break-all;&quot; width=&quot;100%&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一个局域网内允许同时存在多个 Router Advertisement (RA) 服务。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;AdvDefaultPreference：用于设置整个路由器作为默认网关的优先级。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;AdvRoutePreference：用于设置特定路由的优先级。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;优先级可以是 low、medium 或 high。medium 是默认值，如果设置为 high 意味着这个路由器比其他默认优先级较低的路由器更有可能被选为默认网关。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;　　鉴于此，我们可以使用光猫的 Router Advertisement (RA) 服务为局域网设备分配 IPv6 地址，同时在旁路由上安装 Router Advertisement (RA) 服务，将 IPv6 的网关指向旁路由。&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;安装&amp;nbsp;radvd
apt-get&amp;nbsp;install&amp;nbsp;radvd

#&amp;nbsp;创建&amp;nbsp;radvd&amp;nbsp;配置文件，AdvDefaultPreference&amp;nbsp;和&amp;nbsp;AdvRoutePreference&amp;nbsp;设置为&amp;nbsp;high
cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/radvd.conf&amp;nbsp;&amp;lt;&amp;lt;EOF
interface&amp;nbsp;eth0&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdvSendAdvert&amp;nbsp;on;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MinRtrAdvInterval&amp;nbsp;75;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxRtrAdvInterval&amp;nbsp;100;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdvDefaultPreference&amp;nbsp;high;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdvManagedFlag&amp;nbsp;off;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdvOtherConfigFlag&amp;nbsp;off;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;route&amp;nbsp;::/0&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdvRoutePreference&amp;nbsp;high;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AdvRouteLifetime&amp;nbsp;300;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
};
EOF

#&amp;nbsp;修改配置文件属性
chmod&amp;nbsp;755&amp;nbsp;/etc/radvd.conf

#&amp;nbsp;设置开机启动并启动&amp;nbsp;radvd&amp;nbsp;服务
systemctl&amp;nbsp;enable&amp;nbsp;radvd
systemctl&amp;nbsp;start&amp;nbsp;radvd&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;四、验证终端设备的路由情况&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;1、在Windows 客户端上，使用 tracert 命令追踪路由情况&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;C:\&amp;gt;tracert&amp;nbsp;114.114.114.114
通过最多&amp;nbsp;30&amp;nbsp;个跃点跟踪
到&amp;nbsp;public1.114dns.com&amp;nbsp;[114.114.114.114]&amp;nbsp;的路由:
&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;192.168.0.2
&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;ms&amp;nbsp;&amp;nbsp;192.168.0.1
&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;使用 tracert 命令追踪 IPv4 的路由情况，第一跳为旁路由（192.168.0.2），第二跳为光猫（192.168.0.1）。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;C:\&amp;gt;tracert&amp;nbsp;240C::6644
通过最多&amp;nbsp;30&amp;nbsp;个跃点跟踪到&amp;nbsp;240c::6644&amp;nbsp;的路由
&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;240e:380:19b3:65f7:8149:d672:24d4:7a9f
&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;ms&amp;nbsp;&amp;nbsp;240e:380:19b3:9800:1510:9453:628b:90b0
&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;使用 tracert 命令追踪 IPv6 的路由情况，第一跳为旁路由（240e:380:19b3:65f7:8149:d672:24d4:7a9f），第二跳为光猫（240e:380:19b3:9800:1510:9453:628b:90b0）。&lt;/p&gt;&lt;p&gt;2、在 Linux / Armbian 客户端上查看路由情况&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@onecloud:~#&amp;nbsp;ip&amp;nbsp;route&amp;nbsp;show
default&amp;nbsp;via&amp;nbsp;192.168.0.2&amp;nbsp;dev&amp;nbsp;eth0
192.168.0.0/24&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;scope&amp;nbsp;link&amp;nbsp;src&amp;nbsp;192.168.0.159&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;从以上结果可以看出，IPv4 默认的网关为旁路由（192.168.0.2）。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@onecloud:~#&amp;nbsp;ip&amp;nbsp;-6&amp;nbsp;route&amp;nbsp;show
::1&amp;nbsp;dev&amp;nbsp;lo&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;pref&amp;nbsp;medium
240e:380:19b3:65f7::/64&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;expires&amp;nbsp;259163sec&amp;nbsp;pref&amp;nbsp;medium
fe80::/64&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;kernel&amp;nbsp;metric&amp;nbsp;256&amp;nbsp;pref&amp;nbsp;medium
default&amp;nbsp;via&amp;nbsp;fe80::8149:d672:24d4:7a9f&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;ra&amp;nbsp;metric&amp;nbsp;1024&amp;nbsp;expires&amp;nbsp;263sec&amp;nbsp;hoplimit&amp;nbsp;64&amp;nbsp;pref&amp;nbsp;high
default&amp;nbsp;via&amp;nbsp;fe80::1&amp;nbsp;dev&amp;nbsp;eth0&amp;nbsp;proto&amp;nbsp;ra&amp;nbsp;metric&amp;nbsp;1024&amp;nbsp;expires&amp;nbsp;1763sec&amp;nbsp;mtu&amp;nbsp;1472&amp;nbsp;hoplimit&amp;nbsp;64&amp;nbsp;pref&amp;nbsp;medium&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;从以上结果可以看出，IPv6 有两个默认路由，分别为光猫（fe80::1）和旁路由（fe80::8149:d672:24d4:7a9f），由于旁路由 RA 服务的 AdvDefaultPreference 设置为 high ，操作系统会优先使用旁路由。&lt;/p&gt;&lt;p&gt;3、使用 ADB 工具连接 Android 盒子，在盒子上使用 traceroute 命令追踪路由情况&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;franklin:/&amp;nbsp;#&amp;nbsp;traceroute&amp;nbsp;114.114.114.114
traceroute&amp;nbsp;to&amp;nbsp;114.114.114.114&amp;nbsp;(114.114.114.114),&amp;nbsp;30&amp;nbsp;hops&amp;nbsp;max,&amp;nbsp;38&amp;nbsp;byte&amp;nbsp;packets
&amp;nbsp;1&amp;nbsp;&amp;nbsp;192.168.0.2&amp;nbsp;(192.168.0.2)&amp;nbsp;&amp;nbsp;1.274&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.422&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.039&amp;nbsp;ms
&amp;nbsp;2&amp;nbsp;&amp;nbsp;192.168.0.1&amp;nbsp;(192.168.0.1)&amp;nbsp;&amp;nbsp;1.705&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.707&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.367&amp;nbsp;ms
&amp;nbsp;3&amp;nbsp;&amp;nbsp;......&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;使用 traceroute 命令追踪 IPv4 的路由情况，第一跳为旁路由（192.168.0.2），第二跳为光猫（192.168.0.1）。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;franklin:/&amp;nbsp;#&amp;nbsp;traceroute&amp;nbsp;240C::6644
traceroute&amp;nbsp;to&amp;nbsp;240C::6644&amp;nbsp;(240c::6644),&amp;nbsp;30&amp;nbsp;hops&amp;nbsp;max,&amp;nbsp;64&amp;nbsp;byte&amp;nbsp;packets
&amp;nbsp;1&amp;nbsp;&amp;nbsp;240e:380:19b3:65f7:8149:d672:24d4:7a9f&amp;nbsp;(240e:380:19b3:65f7:8149:d672:24d4:7a9f)&amp;nbsp;&amp;nbsp;1.426&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.200&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.116&amp;nbsp;ms
&amp;nbsp;2&amp;nbsp;&amp;nbsp;240e:380:19b3:9800:1510:9453:628b:90b0&amp;nbsp;(240e:380:19b3:9800:1510:9453:628b:90b0)&amp;nbsp;&amp;nbsp;1.659&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.544&amp;nbsp;ms&amp;nbsp;&amp;nbsp;1.267&amp;nbsp;ms
&amp;nbsp;3&amp;nbsp;&amp;nbsp;......&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;使用 traceroute 命令追踪 IPv6 的路由情况，第一跳为旁路由（240e:380:19b3:65f7:8149:d672:24d4:7a9f），第二跳为光猫（240e:380:19b3:9800:1510:9453:628b:90b0）。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五、该方案的局限性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;该方案在 WIndows 、Linux 、macOS 等操作系统中可以完美使用，但是对于低版本的 Android 系统可能达不到预期效果。究其原因为 Android 的某些低版本对 IPv6 的支持有限，尤其是在处理路由广告（RA）消息时，可能并没有完整实现对所有 RA 选项的支持。这意味着即使广告了 AdvDefaultPreference high 或 AdvRoutePreference high，Android 设备可能不会显示或使用这些信息。实验过程中我发现其他操作系统均可以将 IPv6 网关指向旁路由，但是 Android 机顶盒始终存在问题，直到我将 Android 机顶盒的固件版本升级到 Android 9，才解决了上述问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;相关知识点：Android 对 IPv6 支持的演变&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table class=&quot;boxTitle&quot; style=&quot;width: 100%;&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td style=&quot;border-color: rgb(255, 255, 255); background-color: rgb(229, 246, 250);word-break: break-all;&quot; width=&quot;100%&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;1、早期版本（Android 4.x 及更早版本）：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;这些版本对 IPv6 支持非常有限，主要用于基础的 IPv6 连接，路由广告（RA）消息的处理也比较简单。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;例如：Android 4.4 之前的版本可能不会完全支持 RA 消息中的所有选项，比如 AdvRoutePreference。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;2、Android 5.x (Lollipop)：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;增加了对 IPv6 的支持，包括 RA 的处理，但仍然有限。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;具体支持的 RA 选项文档很少，但从用户反馈来看，RA 消息中的一些高级选项可能不会完全处理或显示。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;3、Android 6.x (Marshmallow) 及以后：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;增强了对 IPv6 的支持，包括对更多 RA 选项的处理。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;例如：引入了对 IPv6 快速切换和更好的 RA 消息处理，但具体到 AdvRoutePreference 等选项的支持情况仍然不明确。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;4、Android 8.x (Oreo) 及以后：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;进一步增强了 IPv6 支持，改进了 RA 消息的处理。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;例如：引入了对 IPv6 Dual-Stack 的更好支持，但具体到高级 RA 选项，如 AdvRoutePreference，仍然可能存在支持不完整或不显示的问题。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;s Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/78.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/78.html&quot;&gt;https://www.hicairo.com/post/78.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Mon, 02 Sep 2024 16:52:36 +0800</pubDate></item><item><title>在 Armbian 操作系统上使用 dae(大鹅) 搭建透明代理</title><link>https://www.hicairo.com/post/77.html</link><description>&lt;p&gt;　　今年年初，我在 Armbian 操作系统上使用 &lt;a href=&quot;/post/70.html&quot; target=&quot;_blank&quot;&gt;iptables 、ipset、dnsmasq + gfwlist&lt;/a&gt; 搭建了基于 hysteria 协议的透明代理，实现了旁路由的分流功能。其中使用了国内的 IPv4&amp;amp;IPv6 地址集合和被污染的域名列表，大量的命令及 iptables 数据包流向问题让很多小伙伴看起来有些有些晦涩难懂。很开心由 &lt;a href=&quot;https://github.com/mzz2017&quot; target=&quot;_blank&quot;&gt;mzz2017&lt;/a&gt; 大佬开发的 dae(大鹅) 透明代理工具完美的解决了上述问题，我已经在&lt;a href=&quot;/post/75.html&quot; target=&quot;_blank&quot;&gt;斐讯 N1&lt;/a&gt; 和&lt;a href=&quot;/post/76.html&quot; target=&quot;_blank&quot;&gt;玩客云&lt;/a&gt;上测试了 dae(大鹅)，目前运行稳定。这篇文章将带领大家进行 dae(大鹅)的安装和基本配置。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、dae(大鹅)简介&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;dae 是一款基于 eBPF 技术的 Linux 高性能透明代理工具。而 eBPF 是一个内核技术，允许在 Linux 内核中运行程序来监控网络数据包和系统事件，但不需要修改内核代码或者重新编译内核。简而言之，它可以提供内核级别执行自定义代码的能力，可以实现各种网络和性能优化的需求。它有点类似于脚本语言，只不过它是针对内核开发者的。&lt;/p&gt;&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/daeuniverse/dae&quot; target=&quot;_blank&quot;&gt;https://github.com/daeuniverse/dae&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、安装环境&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、Linux 内核版本需要&amp;gt;= 5.8，可以使用如下命令查询：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@onecloud:~#&amp;nbsp;uname&amp;nbsp;-r
6.6.29-current-meson&lt;/pre&gt;&lt;p&gt;2、dae 需要以下内核选项，可以使用如下命令查询：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@onecloud:~#&amp;nbsp;(zcat&amp;nbsp;/proc/config.gz&amp;nbsp;||&amp;nbsp;cat&amp;nbsp;/boot/{config,config-$(uname&amp;nbsp;-r)})&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;-E&amp;nbsp;&amp;#39;CONFIG_(DEBUG_INFO|DEBUG_INFO_BTF|KPROBES|KPROBE_EVENTS|BPF|BPF_SYSCALL|BPF_JIT|BPF_STREAM_PARSER|NET_CLS_ACT|NET_SCH_INGRESS|NET_INGRESS|NET_EGRESS|NET_CLS_BPF|BPF_EVENTS|CGROUPS)=|#&amp;nbsp;CONFIG_DEBUG_INFO_REDUCED&amp;nbsp;is&amp;nbsp;not&amp;nbsp;set&amp;#39;&amp;nbsp;
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
CONFIG_CGROUPS=y
CONFIG_KPROBES=y
CONFIG_NET_INGRESS=y
CONFIG_NET_EGRESS=y
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_CLS_BPF=m
CONFIG_NET_CLS_ACT=y
CONFIG_BPF_STREAM_PARSER=y
CONFIG_DEBUG_INFO=y
#&amp;nbsp;CONFIG_DEBUG_INFO_REDUCED&amp;nbsp;is&amp;nbsp;not&amp;nbsp;set
CONFIG_DEBUG_INFO_BTF=y
CONFIG_KPROBE_EVENTS=y
CONFIG_BPF_EVENTS=y&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;三、启用 IP 转发&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;echo&amp;nbsp;&amp;quot;net.ipv4.ip_forward&amp;nbsp;=&amp;nbsp;1&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.all.disable_ipv6&amp;nbsp;=&amp;nbsp;0&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.default.disable_ipv6&amp;nbsp;=&amp;nbsp;0&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.lo.disable_ipv6&amp;nbsp;=&amp;nbsp;0&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.default.use_tempaddr&amp;nbsp;=&amp;nbsp;1&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.all.forwarding&amp;nbsp;=&amp;nbsp;1&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.default.forwarding&amp;nbsp;=&amp;nbsp;1&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.all.accept_ra&amp;nbsp;=&amp;nbsp;2&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.default.accept_ra&amp;nbsp;=&amp;nbsp;2&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv6.conf.eth0.accept_ra&amp;nbsp;=&amp;nbsp;2&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf

sysctl&amp;nbsp;-p&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;本站提供的玩客云固件，BPF（Berkeley Packet Filter）JIT（Just-In-Time）编译器默认没有开启。可以使用如下命令查询开启状态。如果返回值为1，说明已经开启。&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@onecloud:~#&amp;nbsp;cat&amp;nbsp;/proc/sys/net/core/bpf_jit_enable
1&lt;/pre&gt;&lt;p&gt;如果返回值为0，请手动开启。&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@onecloud:~#&amp;nbsp;cat&amp;nbsp;/proc/sys/net/core/bpf_jit_enable
0&lt;/pre&gt;&lt;p&gt;开启BPF（Berkeley Packet Filter）JIT（Just-In-Time）编译器。&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;echo&amp;nbsp;&amp;quot;net.core.bpf_jit_enable&amp;nbsp;=&amp;nbsp;1&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf

sysctl&amp;nbsp;-p&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;四、下载并解压&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;请下载你设备对应 CPU 架构的安装包，（备注：本站提供的玩客云 dae 固件， v0.5.1正式版可以正常使用，其他较新版本尚未进行测试。）官方地址如下：&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/daeuniverse/dae/releases&quot; target=&quot;_blank&quot;&gt;https://github.com/daeuniverse/dae/releases&lt;/a&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;下载&amp;nbsp;v0.5.1&amp;nbsp;正式版
wget&amp;nbsp;https://mirror.ghproxy.com/https://github.com/daeuniverse/dae/releases/download/v0.5.1/dae-linux-armv7.zip
#&amp;nbsp;解压
unzip&amp;nbsp;-d&amp;nbsp;dae&amp;nbsp;dae-linux-armv7.zip
cd&amp;nbsp;dae&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;五、配置安装&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、配置文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;创建配置目录
mkdir&amp;nbsp;-p&amp;nbsp;/etc/dae
#&amp;nbsp;将示例配置文件移动到配置目录
mv&amp;nbsp;example.dae&amp;nbsp;/etc/dae
#&amp;nbsp;创建最小配置文件
cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/dae/config.dae&amp;nbsp;&amp;lt;&amp;lt;EOF
global{}
routing{}
EOF
#&amp;nbsp;设置配置文件权限,限制只有配置文件所有者才可以读写，不设置dae无法启动
chmod&amp;nbsp;0640&amp;nbsp;/etc/dae/config.dae&lt;/pre&gt;&lt;p&gt;2.Geo 数据库文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;创建数据目录
mkdir&amp;nbsp;-p&amp;nbsp;/usr/local/share/dae/
#&amp;nbsp;将geo数据库文件移动到数据目录
mv&amp;nbsp;geoip.dat&amp;nbsp;geosite.dat&amp;nbsp;/usr/local/share/dae/&lt;/pre&gt;&lt;p&gt;3.主程序文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;添加可执行权限
chmod&amp;nbsp;a+x&amp;nbsp;dae-linux-armv7
#&amp;nbsp;将主程序文件安装到/usr/bin/目录
mv&amp;nbsp;dae-linux-armv7&amp;nbsp;/usr/bin/dae&lt;/pre&gt;&lt;p&gt;4.服务文件&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;将服务文件下载到systemd目录
wget&amp;nbsp;-O&amp;nbsp;/etc/systemd/system/dae.service&amp;nbsp;https://mirror.ghproxy.com/https://raw.githubusercontent.com/daeuniverse/dae/main/install/dae.service
#&amp;nbsp;刷新配置
systemctl&amp;nbsp;daemon-reload&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;六、服务管理&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;1、设置开机自启动&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;enable&amp;nbsp;dae&lt;/pre&gt;&lt;p&gt;2、启动服务&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;start&amp;nbsp;dae&lt;/pre&gt;&lt;p&gt;3、查询服务状态&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;status&amp;nbsp;dae&lt;/pre&gt;&lt;p&gt;4、重载配置&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;reload&amp;nbsp;dae&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;七、config.dae 配置文件示例&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;上一步我们创建了一个最简单的配置文件（/etc/dae/config.dae），用于测试 dae(大鹅)能否正常运行。下面是一个 config.dae 配置文件示例，供参考。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;更详细的配置信息，请参考&lt;a href=&quot;https://github.com/daeuniverse/dae/blob/main/example.dae&quot; target=&quot;_blank&quot;&gt;https://github.com/daeuniverse/dae/blob/main/example.dae&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;如果你只在 &lt;span style=&quot;color: #E36C09;&quot;&gt;wan_interface&lt;/span&gt; 中填写了接口或 &lt;span style=&quot;color: #E36C09;&quot;&gt;auto&lt;/span&gt;，而未在 &lt;span style=&quot;color: #E36C09;&quot;&gt;lan_interface&lt;/span&gt; 中填写内容，那么从局域网中传来的流量将无法被代理。如果你想同时代理本机和局域网流量，请同时填写 &lt;span style=&quot;color: #E36C09;&quot;&gt;wan_interface&lt;/span&gt; 和 &lt;span style=&quot;color: #E36C09;&quot;&gt;lan_interface&lt;/span&gt;。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;下面的配置，需要注意两个地方：&lt;/p&gt;&lt;p&gt;1,lan_interface: eth0（注意看你的网口名称是不是eth0）&lt;/p&gt;&lt;p&gt;2,节点URI，请修改为你自己的节点URI&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;全局配置
global&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;绑定lan网口提供给内网设备，填自己服务器的网口，多个逗号隔开
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lan_interface:&amp;nbsp;eth0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wan_interface:&amp;nbsp;auto
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log_level:&amp;nbsp;info
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;auto_config_kernel_parameter:&amp;nbsp;true
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dial_mode:&amp;nbsp;domain
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;allow_insecure:&amp;nbsp;false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;so_mark_from_dae:&amp;nbsp;1234
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;tls配置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tls_implementation:&amp;nbsp;utls
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;utls_imitate:&amp;nbsp;chrome_auto
}
#&amp;nbsp;订阅配置
subscription&amp;nbsp;{
}
#&amp;nbsp;节点配置
node&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;节点URI
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#US:&amp;nbsp;&amp;#39;juicity://uuid:password@example.domain.com:port?congestion_control=bbr&amp;amp;sni=example.domain.com&amp;amp;allow_insecure=0&amp;amp;pinned_certchain_sha256=CERT_HASH&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HK:&amp;nbsp;&amp;#39;socks5://username:password@localhost:10808&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#US:&amp;nbsp;&amp;#39;hysteria2://authpassword@serverIP:port/?sin=domainname&amp;#39;
}
#&amp;nbsp;分组配置，以下采用固定策略，使用第一个节点
group&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ifeng_proxy&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;policy:&amp;nbsp;fixed(0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
#&amp;nbsp;dns配置
dns&amp;nbsp;{
&amp;nbsp;&amp;nbsp;upstream&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;googledns:&amp;nbsp;&amp;#39;tcp+udp://dns.google.com:53&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alidns:&amp;nbsp;&amp;#39;udp://dns.alidns.com:53&amp;#39;
&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;routing&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qname(geosite:cn)&amp;nbsp;-&amp;gt;&amp;nbsp;alidns
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fallback:&amp;nbsp;googledns
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;upstream(googledns)&amp;nbsp;-&amp;gt;&amp;nbsp;accept
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fallback:&amp;nbsp;accept
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}
#&amp;nbsp;路由配置
routing&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pname(NetworkManager)&amp;nbsp;-&amp;gt;&amp;nbsp;direct
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dip(224.0.0.0/3,&amp;nbsp;&amp;#39;ff00::/8&amp;#39;)&amp;nbsp;-&amp;gt;&amp;nbsp;direct
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dip(geoip:private)&amp;nbsp;-&amp;gt;&amp;nbsp;direct
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;###&amp;nbsp;以下是自定义规则
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;##&amp;nbsp;规则
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ip(geoip:cn)&amp;nbsp;-&amp;gt;&amp;nbsp;direct
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;domain(geosite:cn)&amp;nbsp;-&amp;gt;&amp;nbsp;direct
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;domain(geosite:category-ads)&amp;nbsp;-&amp;gt;&amp;nbsp;block
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;hysteria&amp;nbsp;配置，将进程名为&amp;nbsp;hysteria&amp;nbsp;的流量直接放行，不进行劫持和处理，强制直连。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pname(hysteria)&amp;nbsp;-&amp;gt;&amp;nbsp;must_direct
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;默认出站分组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fallback:&amp;nbsp;ifeng_proxy
}&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;八、dae(大鹅) 使用 hysteria 协议&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;dae(大鹅)从 v.0.7.0 版本开始支持 hysteria2 协议，这样旁路由上就可以少运行一个 hysteria 进程，减少旁路由的压力。经过测试，目前 v0.7.0 版本在使用 hysteria2 时，不支持混淆和端口跳跃功能，URL 中的主机名为域名时，无法正常解析。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;dae v0.7.0 版本目前可用的 URL 格式为：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;hysteria2://authpassword@serverIP:port/?sin=domainname&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;鉴于有些小伙伴想要用到混淆和端口跳跃功能，目前情况就只能多跑一个 hysteria 进程。&lt;/p&gt;&lt;p&gt;1、创建工作组和用户&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#建议尽量不要使用&amp;nbsp;root&amp;nbsp;用户运行服务，我们创建一个名为&amp;nbsp;hysteria&amp;nbsp;的用户用于运行&amp;nbsp;hysteria&amp;nbsp;。&amp;nbsp;
groupadd&amp;nbsp;--system&amp;nbsp;hysteria
useradd&amp;nbsp;--system&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--gid&amp;nbsp;hysteria&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--create-home&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--home-dir&amp;nbsp;/var/lib/hysteria&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--shell&amp;nbsp;/usr/sbin/nologin&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--comment&amp;nbsp;&amp;quot;hysteria&amp;nbsp;server&amp;quot;&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hysteria&lt;/pre&gt;&lt;p&gt;2、下载你设备对应 CPU 架构的安装包。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/apernet/hysteria/releases/latest&quot; target=&quot;_blank&quot;&gt;https://github.com/apernet/hysteria/releases/latest&lt;/a&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;下载对应&amp;nbsp;CPU&amp;nbsp;架构的安装包
wget&amp;nbsp;-q&amp;nbsp;-O&amp;nbsp;/usr/bin/hysteria&amp;nbsp;https://mirror.ghproxy.com/https://github.com/apernet/hysteria/releases/download/app%2Fv2.5.0/hysteria-linux-arm
#&amp;nbsp;设置可执行权限
chmod&amp;nbsp;a+x&amp;nbsp;/usr/bin/hysteria
#创建&amp;nbsp;hysteria&amp;nbsp;配置文件目录
mkdir&amp;nbsp;/etc/hysteria&lt;/pre&gt;&lt;p&gt;3、请参考以下示例，结合 hysteria 服务端配置，创建 hysteria 客户端配置文件，配置文件的路径为 &lt;span style=&quot;color: #E36C09;&quot;&gt;/etc/hysteria/config.json&lt;/span&gt; 。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;{
&amp;nbsp;&amp;nbsp;&amp;quot;server&amp;quot;:&amp;nbsp;&amp;quot;hy2.hicairo.com:10086:30000-35000&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;quot;obfs&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;type&amp;quot;:&amp;nbsp;&amp;quot;salamander&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;salamander&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;password&amp;quot;:&amp;nbsp;&amp;quot;*******************&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;quot;auth&amp;quot;:&amp;quot;*******************&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;transport&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;type&amp;quot;:&amp;nbsp;&amp;quot;udp&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;udp&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;hopInterval&amp;quot;:&amp;nbsp;&amp;quot;30s&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;quot;bandwidth&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;up&amp;quot;:&amp;nbsp;&amp;quot;35&amp;nbsp;mbps&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;down&amp;quot;:&amp;nbsp;&amp;quot;225&amp;nbsp;mbps&amp;quot;
&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;quot;fastOpen&amp;quot;:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;quot;lazy&amp;quot;:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;quot;socks5&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;listen&amp;quot;:&amp;nbsp;&amp;quot;:10808&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;username&amp;quot;:&amp;nbsp;&amp;quot;username&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;password&amp;quot;:&amp;nbsp;&amp;quot;password&amp;quot;
&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;http&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;listen&amp;quot;:&amp;nbsp;&amp;quot;:10809&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;username&amp;quot;:&amp;nbsp;&amp;quot;username&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;password&amp;quot;:&amp;nbsp;&amp;quot;password&amp;quot;
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;4、将 Hysteria 作为守护进程运行&lt;/p&gt;&lt;p&gt;在 /etc/systemd/system/ 目录创建 hysteria.service&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/systemd/system/hysteria.service&amp;nbsp;&amp;lt;&amp;lt;EOF
[Unit]
Description=Hysteria&amp;nbsp;client&amp;nbsp;Service&amp;nbsp;(config.json)
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/hysteria&amp;nbsp;-c&amp;nbsp;/etc/hysteria/config.json&amp;nbsp;client
WorkingDirectory=/etc/hysteria
User=hysteria
Group=hysteria
Environment=HYSTERIA_LOG_LEVEL=info
CapabilityBoundingSet=CAP_NET_ADMIN&amp;nbsp;CAP_NET_BIND_SERVICE&amp;nbsp;CAP_NET_RAW
AmbientCapabilities=CAP_NET_ADMIN&amp;nbsp;CAP_NET_BIND_SERVICE&amp;nbsp;CAP_NET_RAW
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;&lt;p&gt;5、启动 Hysteria 客户端&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;chown&amp;nbsp;-R&amp;nbsp;hysteria:hysteria&amp;nbsp;/etc/hysteria/
systemctl&amp;nbsp;daemon-reload
systemctl&amp;nbsp;enable&amp;nbsp;hysteria
systemctl&amp;nbsp;start&amp;nbsp;hysteria
#查看当前状态
systemctl&amp;nbsp;status&amp;nbsp;hysteria
#使用更改的配置文件重新加载&amp;nbsp;hysteria
systemctl&amp;nbsp;reload&amp;nbsp;hysteria&lt;/pre&gt;&lt;p&gt;6、这时 Hysteria 进程就运行起来了，提供了 socks5 和 http 协议。参考本文第七章节，修改 &lt;span style=&quot;color: #E36C09;&quot;&gt;/etc/dae/config.dae&lt;/span&gt; 配置文件中的节点配置，连接本地的 socks5 协议。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;......
#&amp;nbsp;节点配置
node&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;节点URI
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HK:&amp;nbsp;&amp;#39;socks5://username:password@localhost:10808&amp;#39;
}
......&lt;/pre&gt;&lt;p&gt;同时，请确认你的 &lt;span style=&quot;color: #E36C09;&quot;&gt;/etc/dae/config.dae&lt;/span&gt; 配置文件中包含以下这句配置。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;hysteria&amp;nbsp;配置，将进程名为&amp;nbsp;hysteria&amp;nbsp;的流量直接放行，不进行劫持和处理，强制直连。
pname(hysteria)&amp;nbsp;-&amp;gt;&amp;nbsp;must_direct&lt;/pre&gt;&lt;p&gt;最后，重启 dae(大鹅)服务即可。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;restart&amp;nbsp;dae&lt;/pre&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/77.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/77.html&quot;&gt;https://www.hicairo.com/post/77.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Sat, 27 Jul 2024 08:54:00 +0800</pubDate></item><item><title>玩客云盒子（OneCloud）刷 Armbian 系统</title><link>https://www.hicairo.com/post/76.html</link><description>&lt;p&gt;　　玩客云是 2017 年的一款矿渣产品，目前在海鲜市场一块也就 20-30 元左右，鉴于玩客云提供了一个千兆以太网口，想着玩客云能否当作旁路由使用，于是就有了这篇文档。经测试玩客云性能较低，如果用做科学上网的旁路由，会因为硬件性能原因产生降速问题，不推荐再次入手，如果想玩 Armbian 可以考虑入手&lt;a href=&quot;/post/75.html&quot; target=&quot;_blank&quot;&gt;斐讯 N1&lt;/a&gt;，目前我使用斐讯 N1 搭建基于 Armbian 系统的旁路由运行稳定，速度也可以跑满我的宽带。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、玩客云硬件参数&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;CPU为晶晨 S805 ，32位，ARM 4核 1.5GHz&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;1G(DDR3) + 8G(eMMC)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;两个USB 2.0，HDMI接口，一个千兆网口（RJ45）&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;二、刷机所需的硬件及软件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、Windows 操作系统电脑一台。经过我的测试，推荐 Win7/10操作系统。&lt;/p&gt;&lt;p&gt;2、USB 双公头线一根。&lt;/p&gt;&lt;p&gt;3、螺丝刀，卡针，一把金属镊子，用来短接用（用金属线也是可以的）。&lt;/p&gt;&lt;p&gt;4、闲置 U 盘一个，或者读卡器配合存储卡也行。&lt;/p&gt;&lt;p&gt;5、一个一字螺丝刀，或者镊子，如果都没有，一截细铁丝也行，或者其他较细且能导电的东西。&lt;/p&gt;&lt;p&gt;6、使用到的固件和相关软件：&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://drive.google.com/drive/folders/1V19083DONzVld3wTPZTHXL4E3uDf6lcw&quot; target=&quot;_blank&quot;&gt;https://drive.google.com/drive/folders/1V19083DONzVld3wTPZTHXL4E3uDf6lcw&lt;/a&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;1.&amp;nbsp;win32diskimager-1.0.0-install.exe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;写盘工具
2.&amp;nbsp;USB_Burning_Tools_v2.0.7.2_build2.exe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;晶晨线刷工具含驱动
3.&amp;nbsp;eMMC.burn.img&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;U盘引导底包镜像
4.&amp;nbsp;Armbian-unofficial_24.5.0-trunk_Onecloud_jammy_current_6.6.29_minimal.img.gz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Armbian_24.5.0&amp;nbsp;版本固件,&amp;nbsp;kernel&amp;nbsp;BPF&amp;nbsp;模块已打开,可使用&amp;nbsp;dae
5.&amp;nbsp;onecloud-emmc-install-main.zip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;USB&amp;nbsp;to&amp;nbsp;EMMC&amp;nbsp;写盘工具&lt;/pre&gt;&lt;p&gt;　　谷歌云盘里提供的 Armbian 固件是我使用 &lt;a href=&quot;https://github.com/hzyitc/armbian-onecloud&quot; target=&quot;_blank&quot;&gt;hzyitc &lt;/a&gt;大佬的仓库编译的，kernel BPF 模块已打开, 可使用 &lt;a href=&quot;/post/77.html&quot; target=&quot;_blank&quot;&gt;dae &lt;/a&gt;，U 盘引导底包镜像来自 &lt;a href=&quot;https://github.com/hzyitc/u-boot-onecloud&quot; target=&quot;_blank&quot;&gt;hzyitc &lt;/a&gt;的项目，USB to EMMC写盘工具来自 &lt;a href=&quot;https://github.com/raysworld/onecloud-emmc-install&quot; target=&quot;_blank&quot;&gt;raysworld &lt;/a&gt;大佬的项目，在此向两位大佬致敬！&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、刷机准备&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;1、请将用到的固件及软件提前下载到本地，并安装好 1. win32diskimager-1.0.0-install.exe 和 2. USB_Burning_Tools_v2.0.7.2_build2.exe 。&lt;/p&gt;&lt;p&gt;2、将 4. Armbian-unofficial_24.5.0-trunk_Onecloud_jammy_current_6.6.29_minimal.img.gz 解压，插入 U 盘后运行 Win32DiskImager 软件， 选择 Armbian-unofficial_24.5.0-trunk_Onecloud_jammy_current_6.6.29_minimal.img 写入 U 盘备用。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130047492384.webp&quot; title=&quot;1.写入 Armbian 固件.webp&quot; alt=&quot;1.写入 Armbian 固件.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、免拆刷机&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;建议优先尝试此方法，如果此方法可以刷机，可以跳过步骤五。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、在电脑上运行 USB_Burning_Tools 软件，点击 文件 -&amp;gt; 导入烧录包 ，选择 3. eMMC.burn.img 后点击“开始”按钮。（需要勾选擦除 flash（普通擦除）以及擦除 bootloader ）&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130073522457.webp&quot; title=&quot;2.刷入 eMMC.burn.img.webp&quot; alt=&quot;2.刷入 eMMC.burn.img.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;2、玩客云盒子暂时不要通电，使用USB 双公头线一端接电脑，另外一端接盒子的 USB1 口（靠近 HDMI 的 USB 口）。然后使用卡针顶住重置键（RJ45口旁边的小孔），再接通电源，等待几秒，如果 USB_Burning_Tools 出现“连接成功”，开始将 U 盘引导底包镜像写入玩客云盒子，说明该盒子支持免拆刷机，请等待刷机完成。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130138245396.webp&quot; title=&quot;3.刷入 eMMC.burn.img 成功.webp&quot; alt=&quot;3.刷入 eMMC.burn.img 成功.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;3、出现“100%:烧录成功”时，点击“停止”按钮、关闭软件后移除电源和 USB 双公头线，这时已经将 U 盘引导底包成功刷入盒子。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;如果 USB_Burning_Tools 没有出现“连接成功”，说明此方法无效，只能选择拆机刷机的方式，详细请参照步骤五。&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五、拆机刷机&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、撬开玩客云背面的 PVC 贴片，就是有网口的那一面，这个是直接粘上去的，从接口那里撬开就可以（接口处粘的不牢，比较容易翘起来），如果不好撬开可以用吹风机加热下，不要强行撬 PVC 贴片，会断的。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130168440631.webp&quot; title=&quot;4.撬开 PVC 贴片.webp&quot; alt=&quot;4.撬开 PVC 贴片.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;2、撬开后拧下螺丝，背板就可以取下了，然后就可以抽出整个主板。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130186591076.webp&quot; title=&quot;5.拆出的主板.webp&quot; alt=&quot;5.拆出的主板.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;3、我们通常能见到的玩客云版本分为 V1.1 和 V1.3，在主板 SD卡槽位置，如果标明了 V1.3 就是 V1.3 版本，否则应该是&amp;nbsp; V1.1 版本。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130204798571.webp&quot; title=&quot;6.玩客云区分版本.webp&quot; alt=&quot;6.玩客云区分版本.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;4、刷机时，不同版本的主板短接位置不同， V1.1 主板（短接背面两个焊点空焊位）。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130222911445.webp&quot; title=&quot;7.V1.1版本短接位置.webp&quot; alt=&quot;7.V1.1版本短接位置.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;5、V1.3 主板（短接从上往下数第四第五电阻引脚）。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130242181771.webp&quot; title=&quot;8.V1.3版本短接位置_1.webp&quot; alt=&quot;8.V1.3版本短接位置_1.webp&quot;/&gt;&lt;br/&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130262217086.webp&quot; title=&quot;9.V1.3版本短接位置_2.webp&quot; alt=&quot;9.V1.3版本短接位置_2.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;6、短接刷机和免拆机刷一样，首先在电脑上运行 USB_Burning_Tools 软件，点击 文件 -&amp;gt; 导入烧录包 ，选择 3. eMMC.burn.img 后点击“开始”按钮（需要勾选擦除 flash（普通擦除）以及擦除 bootloader ）。玩客云盒子暂时不要通电，使用USB 双公头线一端接电脑，另外一端接盒子的 USB1 口（靠近 HDMI 的 USB 口）。然后使用镊子短接上述短接点，再接通电源，等待几秒，USB_Burning_Tools 会出现“连接成功”，并开始将 U 盘引导底包镜像写入玩客云盒子，这时只需等待刷机完成即可。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六、使用 U 盘引导进入 Armbian 系统&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、将 3.2 步骤中准备的 U 盘插入玩客云的 USB1 口（靠近 HDMI 的 USB 口），插入网线，接电源后启动，屏幕会先出现 U-boot 引导画面，之后会进入 U 盘中的 armbian 系统。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130282887650.webp&quot; title=&quot;10.U-Boot引导画面.webp&quot; alt=&quot;10.U-Boot引导画面.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;2、进入 armbian 以后用 root:1234 登录，会要求修改密码和创建普通用户，不想创建用户可以 Ctrl+C 跳过，完成以后会留在一个 shell 里面。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130294255277.webp&quot; title=&quot;11.U盘引导首次进入armbian.webp&quot; alt=&quot;11.U盘引导首次进入armbian.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七、将 U 盘中的 Armbian 系统写入玩客云盒子的 EMMC&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;　　现在的 Armbian 系统是从 U 盘启动的，拔掉 U 盘就无法启动了，接下来还需把系统写入到 EMMC 中。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;apt&amp;nbsp;install&amp;nbsp;unzip
wget&amp;nbsp;https://mirror.ghproxy.com/https://github.com/raysworld/onecloud-emmc-install/archive/refs/heads/main.zip
unzip&amp;nbsp;main.zip
mv&amp;nbsp;onecloud-emmc-install-main&amp;nbsp;/boot/install
cd&amp;nbsp;/boot/install
./install.sh&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;刷入系统时玩客云的指示灯会蓝/ 紫交替闪烁，表示正在写入 EMMC。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/07/202407161721130315405515.webp&quot; title=&quot;12.将 U 盘中的 Armbian 写入 EMMC.webp&quot; alt=&quot;12.将 U 盘中的 Armbian 写入 EMMC.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;出现如上界面后，表示已经写入完成，这时拔掉电源后移除 U 盘，再次加电后就可以使用 EMMC 中的固件引导引入 Armbian 系统。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八、Armbian 的简单设置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、将 armbian 的更新源修改为清华源&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;Armbian 操作系统默认使用的官方更新源（ports.ubuntu.com）服务器在海外，连接速度和国内镜像源比起来较慢，建议修改为清华大学提供的镜像源。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mv&amp;nbsp;/etc/apt/sources.list&amp;nbsp;/etc/apt/sources.list.bak
cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list&amp;nbsp;&amp;lt;&amp;lt;EOF
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-security&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-security&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-updates&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-updates&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-backports&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-backports&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
EOF
mv&amp;nbsp;/etc/apt/sources.list.d/armbian.list&amp;nbsp;/etc/apt/sources.list.d/armbian.list.bak
cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list.d/armbian.list&amp;nbsp;&amp;lt;&amp;lt;EOF
deb&amp;nbsp;[signed-by=/usr/share/keyrings/armbian.gpg]&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/armbian&amp;nbsp;jammy&amp;nbsp;main&amp;nbsp;jammy-utils&amp;nbsp;jammy-desktop
EOF&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;刷新软件源列表，更新本地软件包索引。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;apt&amp;nbsp;update&lt;/pre&gt;&lt;p&gt;2、修改时区&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;系统时间和时区
date&amp;nbsp;-R
#&amp;nbsp;修改时区，使用&amp;nbsp;tzselect&amp;nbsp;命令，然后选择&amp;nbsp;asia&amp;nbsp;china&amp;nbsp;beijing&amp;nbsp;yes。
tzselect
cp&amp;nbsp;/usr/share/zoneinfo/Asia/Shanghai&amp;nbsp;/etc/localtime
#&amp;nbsp;再次查询系统时间和时区
date&amp;nbsp;-R&lt;/pre&gt;&lt;p&gt;3、为玩客云分配静态 IP 地址&lt;/p&gt;&lt;p&gt;　　参考以下示例，为玩客云分配同网段的静态 IP 地址，hwaddress 参数用于固定 Mac 地址，Mac 地址可以在盒子背后的标签上找到，或者使用 ifconfig 命令查询。修改完成后使用 reboot 命令重启盒子，然后使用新的 IP 地址连接盒子。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;安装&amp;nbsp;net-tools&amp;nbsp;vim&amp;nbsp;ifupdown
apt&amp;nbsp;install&amp;nbsp;net-tools&amp;nbsp;vim&amp;nbsp;ifupdown

#&amp;nbsp;备份原始配置，分配静态&amp;nbsp;IP
mv&amp;nbsp;/etc/network/interfaces&amp;nbsp;/etc/network/interfaces.bak
cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/network/interfaces&amp;nbsp;&amp;lt;&amp;lt;EOF
source&amp;nbsp;/etc/network/interfaces.d/*
auto&amp;nbsp;lo
iface&amp;nbsp;lo&amp;nbsp;inet&amp;nbsp;loopback
auto&amp;nbsp;eth0
allow-hotplug&amp;nbsp;eth0
iface&amp;nbsp;eth0&amp;nbsp;inet&amp;nbsp;static
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hwaddress&amp;nbsp;88:88:88:88:88:88
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;address&amp;nbsp;192.168.0.2
netmask&amp;nbsp;255.255.255.0
gateway&amp;nbsp;192.168.0.1
iface&amp;nbsp;eth0&amp;nbsp;inet6&amp;nbsp;auto
EOF

#&amp;nbsp;关闭&amp;nbsp;NetworkManager&amp;nbsp;服务
systemctl&amp;nbsp;stop&amp;nbsp;NetworkManager
systemctl&amp;nbsp;disable&amp;nbsp;NetworkManager

#&amp;nbsp;启动&amp;nbsp;networking&amp;nbsp;服务
systemctl&amp;nbsp;start&amp;nbsp;networking

#&amp;nbsp;重新启动盒子
reboot&lt;/pre&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/76.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/76.html&quot;&gt;https://www.hicairo.com/post/76.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Tue, 16 Jul 2024 18:53:15 +0800</pubDate></item><item><title>斐讯 N1 盒子刷 Armbian 系统</title><link>https://www.hicairo.com/post/75.html</link><description>&lt;p&gt;　　PHICOMM N1 盒子已经上市很多年了，虽然是一个矿渣产品，但是其优异的硬件配置，丰富的固件适配，目前还被广泛使用。在此首先对 webpad 等几位大佬致敬，由于他们的分享，使得很多人可以很方便的在 N1 盒子上实现自己所需的功能。目前网上有关 N1 盒子刷 TV 系统、OpenWrt 系统、Armbian等系统的文章很多，本来不想水这篇文章的，但是鉴于接下来我会分享使用 &lt;a href=&quot;/post/77.html&quot; target=&quot;_blank&quot;&gt;N1 盒子吃鹅&lt;/a&gt;&amp;nbsp;的话题，考虑到教程的完整性，于是决定还是把 N1 盒子刷 Armbian 系统的步骤整理一下。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、斐讯 N1 的硬件参数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;产品类型：家庭网络存储，云存储&lt;/p&gt;&lt;p&gt;处理器：Amlogic S905D Cortex-A53，Mali-450 GPU&lt;/p&gt;&lt;p&gt;内存：RAM 2GB, ROM 8GB&lt;/p&gt;&lt;p&gt;接口：USB 2.0 * 2、HDMI * 1、RJ45 * 1（千兆网口）&lt;/p&gt;&lt;p&gt;无线连接：支持2.4G/5G WiFi，蓝牙BT 4.1 BLE低功耗&lt;/p&gt;&lt;p&gt;视频输出分辨率：最高支持到 4K 60 帧硬件解码&lt;/p&gt;&lt;p&gt;电源接口：12V/2A&lt;/p&gt;&lt;p&gt;尺寸与重量：产品尺寸为110mm x 110mm x 40mm，产品重量约为0.248kg&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、刷机准备&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、所需硬件&lt;/p&gt;&lt;p&gt;　　N1 盒子一个、8G 以上 U 盘一个、USB 接口键盘一个、USB 鼠标一块、HDMI 晶晨短接神器（作用为线刷时短接，很便宜，海鲜市场有卖，如果没有可以拆机手动短接）、HDMI 接口显示器 / HDMI 接口电视一台、网线一根、HDMI 线一根、路由器、电脑。&lt;/p&gt;&lt;p&gt;2、所需软件&lt;/p&gt;&lt;p&gt;　　为方便使用，我已经将所需要的软件整理好，放到了谷歌云盘，大家可以下载后使用。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://drive.google.com/drive/u/1/folders/1QUhpnzm1CvFHkUh1904EN7QFaJBag8Vb&quot; target=&quot;_blank&quot;&gt;https://drive.google.com/drive/u/1/folders/1QUhpnzm1CvFHkUh1904EN7QFaJBag8Vb&lt;/a&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;1.&amp;nbsp;解压使用-斐讯T1、N1官方系统降级工具.zip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#斐讯&amp;nbsp;T1、N1&amp;nbsp;官方系统降级工具
2.&amp;nbsp;解压使用-N1U盘启动.zip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#N1&amp;nbsp;U&amp;nbsp;盘启动
3.&amp;nbsp;USB_Burning_Tools_v2.0.7.2_build2.exe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#晶晨线刷工具含驱动
4.&amp;nbsp;win32diskimager-1.0.0-install.exe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#写盘工具
5.&amp;nbsp;N1_mod_by_webpad_v2.2_20180920.img.7z&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#Android&amp;nbsp;7.0.1&amp;nbsp;版本固件,&amp;nbsp;root,&amp;nbsp;可引导进入&amp;nbsp;Armbian
6.&amp;nbsp;Reboot&amp;nbsp;to&amp;nbsp;LibreELEC_1.1_Apkpure.apk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#重启进入&amp;nbsp;Armbian&amp;nbsp;软件
7.Armbian_24.5.0_amlogic_s905d_jammy_6.6.28_server_2024.04.25.img.gz&amp;nbsp;&amp;nbsp;#Armbian_24.5.0&amp;nbsp;版本固件,kernel&amp;nbsp;BPF&amp;nbsp;模块已打开,可使用&amp;nbsp;dae&lt;/pre&gt;&lt;p&gt;　　谷歌云盘里提供的 Armbian 固件 kernel BPF 模块默认已打开, 经我测试可使用 dae ，来自于 ophub 的 GitHub 项目，如果你更习惯于使用 Debian 固件，请使用如下链接自行下载。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/ophub/amlogic-s9xxx-armbian/releases/&quot; target=&quot;_blank&quot;&gt;https://github.com/ophub/amlogic-s9xxx-armbian/releases/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;Armbian 是基于 Debian 和 Ubuntu 的 Linux 发行版，专门为 ARM 开发板设计。Armbian 的版本命名通常遵循其基于的 Debian 或 Ubuntu 发行版。Armbian 的这四个版本（Noble、Jammy、Bullseye 和 Bookworm）分别基于不同的 Debian 或 Ubuntu 版本：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;Armbian Noble - 这是基于 Ubuntu 22.04 LTS (代号 &amp;quot;Jammy Jellyfish&amp;quot;) 的版本。Ubuntu 22.04 是一个长期支持版本，提供了五年的安全更新和支持。Armbian 对这个版本进行了针对 ARM 设备的优化和定制。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Armbian Jammy - 也是基于 Ubuntu 22.04 LTS 的版本。这个版本名可能与 Noble 重复或是对同一基础版本的另一种命名方式。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Armbian Bullseye - 这是基于 Debian 11 (代号 &amp;quot;Bullseye&amp;quot;) 的版本。Debian 11 提供了多种软件的最新稳定版，并享有 Debian 社区的广泛支持和安全维护。Debian 版本的 Armbian 通常更倾向于稳定性和兼容性。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Armbian Bookworm - 基于 Debian 12 (代号 &amp;quot;Bookworm&amp;quot;)。这是 Debian 的测试版本，在正式成为稳定版前，它会包含最新的软件更新。使用这个版本的 Armbian 可能提供一些最前沿的特性，但也可能不如稳定版那么稳定。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;三、降级关键分区&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;　　玩 N1 的朋友都知道第一步要对 N1 进行降级，但是却很少有人说明为什么要进行降级，降级针对盒子做了什么事情，这里我参考“if年少有为”在自己博文中的描述，希望大家能明白其中原理。&lt;/p&gt;&lt;p&gt;　　连接 HDMI、网线、电源后会进入斐讯自带的安卓系统，安卓系统的标准启动过程如下：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;bootloader：斐讯针对该盒子硬件实现的类似 BIOS 的东西，它负责硬件的初始化，最终引导操作系统。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;boot 分区：放着安卓操作系统的内核文件，由 bootloader 唤起，也就实现了进入操作系统的效果。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;recovery 分区：类似于 WinPE 的东西，如果 boot 分区挂了，则可以通过 Recovery 方式进入一个临时的操作系统，然后恢复 boot 分区（类似于 ghost 做系统）。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;　　问题就在于，bootloader 是斐讯针对盒子定制的，它设置了一些限制，比如：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;p&gt;只能使用他家的安卓系统&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;不支持U盘引导操作系统&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;　　所以呢，恩山论坛的 webpad 大佬，修改了斐讯的 bootloader，我们要做的就是把&amp;nbsp; webpad 大佬修改后的 bootloader 覆盖到盒子里面去，这个过程被称之为 N1 降级，一台 N1 这辈子只需要做一次降级操作，后续不需要再研究这个问题了。当然如果你的盒子到手时就已经被刷成了 TV 等其他系统，这一步骤就可以跳过了。&lt;/p&gt;&lt;p&gt;1、将 N1 接上网线，HDMI 线接显示器，离 HDMI 口远的那个 USB 口接一个鼠标。连上网以后，等个五分钟左右，待其自动升级到最新版，中间可能会多次重启升级，直到不再升级为准。否则如果正在刷的过程中 N1 重启可能会有点麻烦。记录一下屏幕上显示的 IP ，下一步会用到。接下来用鼠标点击屏幕上版本号的地方 4 次，屏幕中间会显示一下“开启adb”。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714739962370407.webp&quot; title=&quot;1.N1 在 nas 主界面点击四次固件版本打开 adb.webp&quot; alt=&quot;1.N1 在 nas 主界面点击四次固件版本打开 adb.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;2、下载“1.解压使用-斐讯T1、N1官方系统降级工具.zip”文件并解压，运行 onekey 目录中的 run.bat 批处理文件，按照提示输入 2 选择 N1 降级。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714739978448687.webp&quot; title=&quot;2.N1 降级_1.webp&quot; alt=&quot;2.N1 降级_1.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;按照提示输入 N1 的 IP 地址。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714739993276301.webp&quot; title=&quot;2.N1 降级_2.webp&quot; alt=&quot;2.N1 降级_2.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;按照提示按任意键开始降级。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714740007378510.webp&quot; title=&quot;2.N1 降级_3.webp&quot; alt=&quot;2.N1 降级_3.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、制作 Armbian U 盘&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、在电脑上下载并安装“4.win32diskimager-1.0.0-install.exe”写盘工具软件，同时下载并解压镜像文件“7.Armbian_24.5.0_amlogic_s905d_jammy_6.6.28_server_2024.04.25.img.gz”备用。&lt;/p&gt;&lt;p&gt;2、运行 win32diskimager 软件，如下图所示，选择上一步解压好的镜像文件，插入 U 盘后将镜像文件写入 U 盘。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714740022198752.webp&quot; title=&quot;3.给U盘写入armbian镜像.webp&quot; alt=&quot;3.给U盘写入armbian镜像.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;　　有关网上流传的 armbian 5.77 版本的最稳定，meson-gxl-s905d-phicomm-n1-xiangsm.dtb 可以解决系统过高等问题，经过我的实际测试，目前 ophub 编译的镜像已经解决了上述问题，大家可以放心使用。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五、在 Android 系统里引导从 U 盘启动&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、下载“2.解压使用-N1U盘启动.zip”并解压，将显示器和键盘接入 N1 盒子，执行“N1-ADBU盘启动（傻瓜包）”文件夹下的“U盘启动.bat”，输入 N1 盒子的 IP 地址，地址可以从路由器管理界面看到。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714740042717577.webp&quot; title=&quot;4.N1盒子U盘启动.webp&quot; alt=&quot;4.N1盒子U盘启动.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;2、N1 的两个 USB 口，离 HDMI口 远的接 USB 键盘，另一个接 U 盘。HDMI 线接显示器，加电冷启动。屏幕会先出现启动画面，之后会进入 U 盘的 armbian 系统。这里如果多次重复，还是只能进入 Android 的 recovery 模式，那么请换个 U 盘试试，基本这里不成功都是因为 U 盘兼容性问题导致的，建议最好使用 USB 2.0 的 U 盘。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714740057197921.webp&quot; title=&quot;5.armbian启动界面.webp&quot; alt=&quot;5.armbian启动界面.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;3、进入 armbian 以后用 root:1234 登录，会被要求修改密码和创建普通用户，不想创建用户可以 Ctrl+C 跳过，完成以后会留在一个 shell 里面。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714740074835356.webp&quot; title=&quot;6.armbian初始化设置.webp&quot; alt=&quot;6.armbian初始化设置.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六、将 U 盘中的 Armbian 系统写入 N1 盒子的 EMMC&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;　　接上一步，使用 root 用户及密码登录 armbian 后，在 bash 下执行 &lt;strong&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;armbian-install&lt;/span&gt;&lt;/strong&gt; 命令。按照提示输入“101”，选择文件系统输入“1”（选择ext4），这时开始将 U 盘中的 armbian 系统 copy 到 emmc ，整个过程大概需要 2~3 分钟，等待文件 copy 完后，按照提示输入 &lt;strong&gt;&lt;span style=&quot;color: #E36C09;&quot;&gt;poweroff&lt;/span&gt;&lt;/strong&gt; 命令关机，然后移除盒子上的 U 盘，给盒子重新加电后会使用 emmc 进入 armbian 系统，到此刷机工作就完成了。&lt;/p&gt;&lt;p&gt;　　注意：在将 armbian 写入 emmc 成功后，引导的先后顺序为先从 U 盘引导进入系统，没有插 U 盘时才使用 emmc 引导进入系统，所有如果你要使用 emmc 中的系统，请务必拔掉 U 盘。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;root@armbian:~#&amp;nbsp;armbian-install
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Installing&amp;nbsp;Armbian&amp;nbsp;to&amp;nbsp;internal&amp;nbsp;eMMC...
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Checking&amp;nbsp;dependencies...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Dependency&amp;nbsp;check&amp;nbsp;completed.&amp;nbsp;Proceeding&amp;nbsp;installation...
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Initializing&amp;nbsp;the&amp;nbsp;environment...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Use&amp;nbsp;mainline&amp;nbsp;u-boot:&amp;nbsp;[&amp;nbsp;no&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Use&amp;nbsp;ampart&amp;nbsp;tool:&amp;nbsp;[&amp;nbsp;yes&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Show&amp;nbsp;all&amp;nbsp;devices:&amp;nbsp;[&amp;nbsp;no&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Internal&amp;nbsp;eMMC&amp;nbsp;:&amp;nbsp;[&amp;nbsp;/dev/mmcblk2&amp;nbsp;]
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Start&amp;nbsp;selecting&amp;nbsp;device...
--------------------------------------------------------------------------------------
ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SOC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MODEL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DTB
--------------------------------------------------------------------------------------
101&amp;nbsp;&amp;nbsp;&amp;nbsp;s905d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Phicomm-N1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905d-phicomm-n1.dtb
102&amp;nbsp;&amp;nbsp;&amp;nbsp;s905d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Phicomm-N1(DMA-thresh)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905d-phicomm-n1-thresh.dtb
103&amp;nbsp;&amp;nbsp;&amp;nbsp;s905d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MECOOL-KI-Pro&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905d-mecool-ki-pro.dtb
104&amp;nbsp;&amp;nbsp;&amp;nbsp;s905d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SML-5442TW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905d-sml5442tw.dtb
105&amp;nbsp;&amp;nbsp;&amp;nbsp;s905x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HG680P&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-p212.dtb
106&amp;nbsp;&amp;nbsp;&amp;nbsp;s905x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B860H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-b860h.dtb
107&amp;nbsp;&amp;nbsp;&amp;nbsp;s905x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Nexbox-a95x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-nexbox-a95x.dtb
108&amp;nbsp;&amp;nbsp;&amp;nbsp;s905x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TX9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-tx9.dtb
109&amp;nbsp;&amp;nbsp;&amp;nbsp;s905x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T95,XiaoMI-3S,X96&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-p212.dtb
110&amp;nbsp;&amp;nbsp;&amp;nbsp;s905x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TBee&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-tbee.dtb
--------------------------------------------------------------------------------------
111&amp;nbsp;&amp;nbsp;&amp;nbsp;s905w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TX3-Mini&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905w-tx3-mini.dtb
112&amp;nbsp;&amp;nbsp;&amp;nbsp;s905w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;W95&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905w-p281.dtb
113&amp;nbsp;&amp;nbsp;&amp;nbsp;s905w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;X96-Mini&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905w-x96-mini.dtb
114&amp;nbsp;&amp;nbsp;&amp;nbsp;s905w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;X96W,FunTV,MXQ-Pro-4K&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905w-x96w.dtb
115&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UNT402A,M201-S,MiBox-4C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l3b-m302a.dtb
116&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MG101,Mibox-4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l-venz-v10.dtb
117&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MGV2000,MGV3000,M301A,CM201-1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l2-x7-5g.dtb
118&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E900v21E,MGV2000-K,e900v21d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l2-x7-5g.dtb
119&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wojia-TV-IPBS9505&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l2-ipbs9505.dtb
120&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CM311-1,HG680-LC,M401A,UNT402A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l2-x7-5g.dtb
--------------------------------------------------------------------------------------
121&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CM211-1,M411A,B860AV3.2-M&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l3b-m302a.dtb
122&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UNT400G1,E900V22D-2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l2-x7-5g.dtb
123&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E900V22D,TY1608&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l2-x7-5g.dtb
124&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E900V21E,E900V22E,MGV2000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l3b-e900v22e.dtb
125&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;M302A,M304A,CM201-1,CM211-1,CM311-1&amp;nbsp;meson-gxl-s905l3b-m302a.dtb
126&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UNT403A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l3b-m302a.dtb
127&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RG020ET-CA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l3b-e900v22e.dtb
128&amp;nbsp;&amp;nbsp;&amp;nbsp;s905l3b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IP103H,TY1608,BV310,B860AV-2.1M&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905l3b-m302a.dtb
129&amp;nbsp;&amp;nbsp;&amp;nbsp;s905lb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BesTV-R3300L,SumaVision-Q7,MG101&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-p212.dtb
130&amp;nbsp;&amp;nbsp;&amp;nbsp;s905lb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Q96-mini&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-p212.dtb
--------------------------------------------------------------------------------------
131&amp;nbsp;&amp;nbsp;&amp;nbsp;s905mb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S65&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;meson-gxl-s905x-p212.dtb
0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Other&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Customize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Enter-custom-dtb-name
--------------------------------------------------------------------------------------
[&amp;nbsp;OPTIONS&amp;nbsp;]&amp;nbsp;Please&amp;nbsp;Input&amp;nbsp;ID:&amp;nbsp;101
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Input&amp;nbsp;Box&amp;nbsp;ID:&amp;nbsp;[&amp;nbsp;101&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Model&amp;nbsp;Name:&amp;nbsp;[&amp;nbsp;Phicomm-N1&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;FDTFILE:&amp;nbsp;[&amp;nbsp;meson-gxl-s905d-phicomm-n1.dtb&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;MAINLINE_UBOOT:&amp;nbsp;[&amp;nbsp;&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;BOOTLOADER_IMG:&amp;nbsp;&amp;nbsp;[&amp;nbsp;u-boot-2015-phicomm-n1.bin&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;UBOOT_OVERLOAD:&amp;nbsp;[&amp;nbsp;u-boot-n1.bin&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;NEED_OVERLOAD:&amp;nbsp;[&amp;nbsp;no&amp;nbsp;]
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Which&amp;nbsp;type&amp;nbsp;of&amp;nbsp;filesystem&amp;nbsp;do&amp;nbsp;you&amp;nbsp;want&amp;nbsp;for&amp;nbsp;your&amp;nbsp;root?
-----------------------------------------------
&amp;nbsp;&amp;nbsp;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;TYPE
-----------------------------------------------
&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ext4
&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;btrfs
-----------------------------------------------
[&amp;nbsp;OPTIONS&amp;nbsp;]&amp;nbsp;Please&amp;nbsp;Input&amp;nbsp;ID&amp;nbsp;(1/2):&amp;nbsp;1
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Input&amp;nbsp;Type&amp;nbsp;ID:&amp;nbsp;[&amp;nbsp;1&amp;nbsp;]
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Type&amp;nbsp;of&amp;nbsp;filesystem:&amp;nbsp;[&amp;nbsp;ext4&amp;nbsp;]
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Partitioning&amp;nbsp;eMMC...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Start&amp;nbsp;backing&amp;nbsp;up&amp;nbsp;the&amp;nbsp;default&amp;nbsp;bootloader.
4+0&amp;nbsp;records&amp;nbsp;in
4+0&amp;nbsp;records&amp;nbsp;out
4194304&amp;nbsp;bytes&amp;nbsp;(4.2&amp;nbsp;MB,&amp;nbsp;4.0&amp;nbsp;MiB)&amp;nbsp;copied,&amp;nbsp;2.19803&amp;nbsp;s,&amp;nbsp;1.9&amp;nbsp;MB/s
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Delete&amp;nbsp;the&amp;nbsp;existing&amp;nbsp;[&amp;nbsp;2&amp;nbsp;]&amp;nbsp;partitions.
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Start&amp;nbsp;create&amp;nbsp;MBR&amp;nbsp;and&amp;nbsp;partittion.
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;02.&amp;nbsp;Write&amp;nbsp;Android&amp;nbsp;bootloader:&amp;nbsp;[&amp;nbsp;u-boot-2015-phicomm-n1.bin&amp;nbsp;]
444+0&amp;nbsp;records&amp;nbsp;in
444+0&amp;nbsp;records&amp;nbsp;out
444&amp;nbsp;bytes&amp;nbsp;copied,&amp;nbsp;0.00781175&amp;nbsp;s,&amp;nbsp;56.8&amp;nbsp;kB/s
8191+0&amp;nbsp;records&amp;nbsp;in
8191+0&amp;nbsp;records&amp;nbsp;out
4193792&amp;nbsp;bytes&amp;nbsp;(4.2&amp;nbsp;MB,&amp;nbsp;4.0&amp;nbsp;MiB)&amp;nbsp;copied,&amp;nbsp;0.450597&amp;nbsp;s,&amp;nbsp;9.3&amp;nbsp;MB/s
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Processing&amp;nbsp;BOOTFS&amp;nbsp;partition...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Formatting&amp;nbsp;BOOTFS&amp;nbsp;partition...
mkfs.fat&amp;nbsp;4.2&amp;nbsp;(2021-01-31)
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;BOOTFS&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Update&amp;nbsp;the&amp;nbsp;[&amp;nbsp;uEnv.txt&amp;nbsp;]&amp;nbsp;file.
[&amp;nbsp;STEPS&amp;nbsp;]&amp;nbsp;Start&amp;nbsp;processing&amp;nbsp;the&amp;nbsp;rootfs&amp;nbsp;partition...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Formatting&amp;nbsp;ROOTFS&amp;nbsp;...
/dev/mmcblk2p2&amp;nbsp;contains&amp;nbsp;a&amp;nbsp;btrfs&amp;nbsp;file&amp;nbsp;system&amp;nbsp;labelled&amp;nbsp;&amp;#39;ROOTFS_EMMC&amp;#39;
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;ROOTFS&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;etc&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;home&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;opt&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;root&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;selinux&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;srv&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;usr&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Copying&amp;nbsp;[&amp;nbsp;var&amp;nbsp;]&amp;nbsp;...
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Generate&amp;nbsp;the&amp;nbsp;new&amp;nbsp;fstab&amp;nbsp;file.
[&amp;nbsp;INFO&amp;nbsp;]&amp;nbsp;Update&amp;nbsp;the&amp;nbsp;relevant&amp;nbsp;parameters.
[&amp;nbsp;SUCCESS&amp;nbsp;]&amp;nbsp;Installation&amp;nbsp;successful.&amp;nbsp;Run&amp;nbsp;[&amp;nbsp;poweroff&amp;nbsp;],&amp;nbsp;remove&amp;nbsp;the&amp;nbsp;installation&amp;nbsp;media&amp;nbsp;then&amp;nbsp;re-insert&amp;nbsp;the&amp;nbsp;power&amp;nbsp;supply&amp;nbsp;to&amp;nbsp;boot&amp;nbsp;new&amp;nbsp;system.&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;七、Armbian 的简单设置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、将 armbian 的更新源修改为清华源&lt;/p&gt;&lt;p&gt;　　Armbian 操作系统默认使用的官方更新源（ports.ubuntu.com）服务器在海外，连接速度和国内镜像源比起来较慢，建议修改为清华大学提供的镜像源。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mv&amp;nbsp;/etc/apt/sources.list&amp;nbsp;/etc/apt/sources.list.bak

cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list&amp;nbsp;&amp;lt;&amp;lt;EOF
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-security&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-security&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-updates&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-updates&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
deb&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-backports&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
#deb-src&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/&amp;nbsp;jammy-backports&amp;nbsp;main&amp;nbsp;restricted&amp;nbsp;universe&amp;nbsp;multiverse
EOF

mv&amp;nbsp;/etc/apt/sources.list.d/armbian.list&amp;nbsp;/etc/apt/sources.list.d/armbian.list.bak

cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/apt/sources.list.d/armbian.list&amp;nbsp;&amp;lt;&amp;lt;EOF
deb&amp;nbsp;[signed-by=/usr/share/keyrings/armbian.gpg]&amp;nbsp;https://mirrors.tuna.tsinghua.edu.cn/armbian&amp;nbsp;jammy&amp;nbsp;main&amp;nbsp;jammy-utils&amp;nbsp;jammy-desktop
EOF&lt;/pre&gt;&lt;p&gt;　　更新本机已安装的软件包&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;apt&amp;nbsp;update
apt&amp;nbsp;upgrade&amp;nbsp;-y&lt;/pre&gt;&lt;p&gt;2、修改时区&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;系统时间和时区
date&amp;nbsp;-R

#&amp;nbsp;修改时区，使用&amp;nbsp;tzselect&amp;nbsp;命令，然后选择&amp;nbsp;asia&amp;nbsp;china&amp;nbsp;beijing&amp;nbsp;yes。
tzselect
cp&amp;nbsp;/usr/share/zoneinfo/Asia/Shanghai&amp;nbsp;/etc/localtime

#&amp;nbsp;再次查询系统时间和时区
date&amp;nbsp;-R&lt;/pre&gt;&lt;p&gt;3、为 N1 分配静态 IP 地址&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;参考以下示例，为 N1 分配同网段的静态 IP 地址，hwaddress 参数用于固定 Mac 地址，Mac 地址可以在盒子背后的标签上找到，或者使用 ifconfig 命令查询。修改完成后使用 reboot 命令重启盒子，然后使用新的 IP 地址连接盒子。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;关闭&amp;nbsp;NetworkManager&amp;nbsp;服务
systemctl&amp;nbsp;stop&amp;nbsp;NetworkManager
systemctl&amp;nbsp;disable&amp;nbsp;NetworkManager

#&amp;nbsp;备份原始配置，分配静态&amp;nbsp;IP
mv&amp;nbsp;/etc/network/interfaces&amp;nbsp;/etc/network/interfaces.bak
cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/network/interfaces&amp;nbsp;&amp;lt;&amp;lt;EOF
source&amp;nbsp;/etc/network/interfaces.d/*
auto&amp;nbsp;lo
iface&amp;nbsp;lo&amp;nbsp;inet&amp;nbsp;loopback
auto&amp;nbsp;eth0
allow-hotplug&amp;nbsp;eth0
iface&amp;nbsp;eth0&amp;nbsp;inet&amp;nbsp;static
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hwaddress&amp;nbsp;88:88:88:88:88:88
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;address&amp;nbsp;192.168.0.2
netmask&amp;nbsp;255.255.255.0
gateway&amp;nbsp;192.168.0.1
iface&amp;nbsp;eth0&amp;nbsp;inet6&amp;nbsp;auto
EOF

#&amp;nbsp;重新启动盒子
reboot&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;八、从 Armbian 刷到 Android 固件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、在电脑上下载并安装“3.USB_Burning_Tools_v2.0.7.2_build2.exe”烧录软件，同时下载并解压 android 固件“5.N1_mod_by_webpad_v2.2_20180920.img.7z”备用。&lt;/p&gt;&lt;p&gt;2、运行 USB_Burning_tools 软件，如下图所示，选择 android 固件后，去掉“擦除flash”和“擦除bootloader”前的对勾，然后点击“开始”按钮，将晶晨短接神器插在 HDMI 接口上，USB双公头线插到靠近 HDMI 接口的 USB 口上，然后给 N1 盒子接上电源，这时软件就识别到了 N1 盒子，开始写入固件。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714740113513927.webp&quot; title=&quot;8.N1线刷 Android 系统_1.webp&quot; alt=&quot;8.N1线刷 Android 系统_1.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;3、大约等待 3~4 分钟，会提示“100%：烧录成功”，这时先点击“停止”按钮，关闭烧录软件，然后拔掉 USB 线，拔掉电源后再次开机就进入了&amp;nbsp; android 系统。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/05/202405031714740129381098.webp&quot; title=&quot;8.N1线刷 Android 系统_2.webp&quot; alt=&quot;8.N1线刷 Android 系统_2.webp&quot;/&gt;&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/75.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/75.html&quot;&gt;https://www.hicairo.com/post/75.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 03 May 2024 20:11:27 +0800</pubDate></item><item><title>Juicity 协议手动安装教程</title><link>https://www.hicairo.com/post/74.html</link><description>&lt;p&gt;　　Juicity 协议是一个开源的网络代理协议，作者在开发 Juicity 协议时受到了 TUIC 的启发。Juicity、TUIC、&lt;a href=&quot;/post/60.html&quot; target=&quot;_blank&quot;&gt;Hysteria&lt;/a&gt; 协议一样，均基于 QUIC（Quick UDP Internet Connections）协议实现。QUIC 是一个由 Google 开发的基于 UDP 的传输层网络协议，旨在减少连接和传输延迟。Juicity 与 Hysteria 不同之处主要为使用的拥塞算法，Juicity 可以使用的拥塞算法包括 reno、cubic、bbr 和 bbr2 ，而 hysteria 可以使用 brutal 拥塞算法。 brutal 拥塞算法表现的更为霸道与暴力，因此在网络链路不好的情况下，Hysteria 协议比 Juicity 协议的传输速度要快一些。&lt;/p&gt;&lt;p&gt;　　正因为 hysteria 协议使用了 brutal 拥塞算法，可能会被 IDC 提供商误认为服务器在对外进行 DDOS 攻击，从而关停服务器。说明一下，我不是在黑 hysteria ，我目前主线路使用的也是 hysteria 协议，我想表达的是根据情况来选择合适的协议，例如在甲骨文云、谷歌云上可以使用同样基于 QUIC 的 Juicity 协议，以避免被封号的风险。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/04/202404261714136837555252.webp&quot; title=&quot;1.hysteria_DDOS.webp&quot; alt=&quot;1.hysteria_DDOS.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、服务器安装环境&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;本次教程的测试环境为：IPv4&amp;amp;IPv6 双栈 VPS ，1vCPU ，1GB Memory ，10 GB SSD ，Ubuntu 22.04.4 LTS ，同时需要一枚域名。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、服务器端安装步骤&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、升级软件及操作系统内核&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;apt&amp;nbsp;update
apt&amp;nbsp;upgrade&amp;nbsp;-y
apt&amp;nbsp;-y&amp;nbsp;install&amp;nbsp;wget&amp;nbsp;unzip&amp;nbsp;uuid-runtime&amp;nbsp;socat
apt-get&amp;nbsp;update
apt-get&amp;nbsp;upgrade
apt-get&amp;nbsp;upgrade&amp;nbsp;linux-image-generic
reboot&lt;/pre&gt;&lt;p&gt;2、关闭防火墙&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;status&amp;nbsp;ufw
systemctl&amp;nbsp;stop&amp;nbsp;ufw
systemctl&amp;nbsp;disable&amp;nbsp;ufw&lt;/pre&gt;&lt;p&gt;3、开启 BBR&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#查询支持的&amp;nbsp;TCP&amp;nbsp;拥塞控制算法
sysctl&amp;nbsp;net.ipv4.tcp_available_congestion_control
#查询应用的&amp;nbsp;TCP&amp;nbsp;拥塞控制算法
sysctl&amp;nbsp;net.ipv4.tcp_congestion_control
#启用&amp;nbsp;BBR&amp;nbsp;TCP&amp;nbsp;拥塞控制算法
echo&amp;nbsp;&amp;quot;net.core.default_qdisc=fq&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
echo&amp;nbsp;&amp;quot;net.ipv4.tcp_congestion_control=bbr&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/sysctl.conf
sysctl&amp;nbsp;-p
echo&amp;nbsp;&amp;quot;tcp_bbr&amp;quot;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/modules-load.d/modules.conf&lt;/pre&gt;&lt;p&gt;4、申请域名证书&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#创建&amp;nbsp;Juicity&amp;nbsp;配置文件目录
mkdir&amp;nbsp;/etc/juicity
#安装&amp;nbsp;acme.sh
curl&amp;nbsp;https://get.acme.sh&amp;nbsp;|&amp;nbsp;sh
ln&amp;nbsp;-s&amp;nbsp;/root/.acme.sh/acme.sh&amp;nbsp;/usr/local/bin/acme.sh
acme.sh&amp;nbsp;--set-default-ca&amp;nbsp;--server&amp;nbsp;letsencrypt
#申请域名证书
#example.domain.com请替换为你的真实域名
#注意：纯ipv6主机，在下面命令中加上--listen-v6参数
acme.sh&amp;nbsp;--issue&amp;nbsp;-d&amp;nbsp;example.domain.com&amp;nbsp;--keylength&amp;nbsp;ec-256&amp;nbsp;--standalone&amp;nbsp;--insecure
acme.sh&amp;nbsp;--install-cert&amp;nbsp;-d&amp;nbsp;example.domain.com&amp;nbsp;--ecc&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--key-file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/etc/juicity/example.domain.com.key&amp;nbsp;&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--fullchain-file&amp;nbsp;/etc/juicity/example.domain.com.pem&lt;/pre&gt;&lt;p&gt;5、安装 Juicity 服务器端&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#下载最新版本的&amp;nbsp;Juicity
wget&amp;nbsp;-O&amp;nbsp;/tmp/juicity-linux-x86_64.zip&amp;nbsp;https://github.com/juicity/juicity/releases/download/v0.4.2/juicity-linux-x86_64.zip
unzip&amp;nbsp;-d&amp;nbsp;/tmp/juicity&amp;nbsp;/tmp/juicity-linux-x86_64.zip
mv&amp;nbsp;/tmp/juicity/juicity-server&amp;nbsp;/usr/bin
#将&amp;nbsp;Juicity&amp;nbsp;作为守护进程运行
mv&amp;nbsp;/tmp/juicity/juicity-server.service&amp;nbsp;/etc/systemd/system/
#服务器端配置文件
#可以使用&amp;nbsp;&amp;#39;uuidgen&amp;#39;&amp;nbsp;命令生成&amp;nbsp;UUID，使用&amp;nbsp;&amp;#39;openssl&amp;nbsp;rand&amp;nbsp;-base64&amp;nbsp;8&amp;#39;&amp;nbsp;命令生成&amp;nbsp;password&amp;nbsp;。
cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/juicity/server.json&amp;nbsp;&amp;lt;&amp;lt;EOF
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;listen&amp;quot;:&amp;nbsp;&amp;quot;:10086&amp;quot;,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;users&amp;quot;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;UUID&amp;quot;:&amp;nbsp;&amp;quot;password&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;certificate&amp;quot;:&amp;nbsp;&amp;quot;/etc/juicity/example.domain.com.pem&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;private_key&amp;quot;:&amp;nbsp;&amp;quot;/etc/juicity/example.domain.com.key&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;congestion_control&amp;quot;:&amp;nbsp;&amp;quot;bbr&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;disable_outbound_udp443&amp;quot;:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;log_level&amp;quot;:&amp;nbsp;&amp;quot;info&amp;quot;
}
EOF
#启动&amp;nbsp;Juicity&amp;nbsp;服务端
systemctl&amp;nbsp;daemon-reload
systemctl&amp;nbsp;enable&amp;nbsp;juicity-server
systemctl&amp;nbsp;start&amp;nbsp;juicity-server
#查看当前状态
systemctl&amp;nbsp;status&amp;nbsp;juicity-server&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;三、 客户端配置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Juicity 客户端：&lt;a href=&quot;https://github.com/juicity/juicity/releases/latest&quot; target=&quot;_blank&quot;&gt;https://github.com/juicity/juicity/releases/latest&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1、根据客户端操作系统，下载对应的 Juicity 客户端，以 64 位 windows 操作系统，V2rayN V6.29 版本为例。&lt;/p&gt;&lt;p&gt;　　在官方网站下载 juicity-linux-x86_64.zip，解压后将 juicity-client.exe 文件 copy 到 v2rayN 安装目录 \bin\juicity 目录中。 如果 bin 目录中没有 juicity 文件夹，请自行创建。&lt;/p&gt;&lt;p&gt;　　用记事本创建一个 client.json 文件，内容如下：&lt;/p&gt;&lt;p&gt;　　其中 example.domain.com:10086 代表域名和服务器端监听的端口，请根据实际情况修改，同时修改 UUID 和 password 的值。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;listen&amp;quot;:&amp;nbsp;&amp;quot;:15000&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;server&amp;quot;:&amp;nbsp;&amp;quot;example.domain.com:10086&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;uuid&amp;quot;:&amp;nbsp;&amp;quot;UUID&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;password&amp;quot;:&amp;nbsp;&amp;quot;password&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;sni&amp;quot;:&amp;nbsp;&amp;quot;example.domain.com&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;allow_insecure&amp;quot;:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;congestion_control&amp;quot;:&amp;nbsp;&amp;quot;bbr&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;log_level&amp;quot;:&amp;nbsp;&amp;quot;info&amp;quot;
}&lt;/pre&gt;&lt;p&gt;2、v2rayN 客户端配置，点击菜单上“服务器”中的“添加自定义服务器”。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/04/202404261714136869318663.webp&quot; title=&quot;2.V2rayN_import_custom.webp&quot; alt=&quot;2.V2rayN_import_custom.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;3、导入上一步配置好的 client.json 文件， Core 类型选择 juicity ，socks 端口填写上一步设置的监听端口 15000 后点确定按钮。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/04/202404261714136887424048.webp&quot; title=&quot;3.V2rayN_import_juicity.webp&quot; alt=&quot;3.V2rayN_import_juicity.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;4、苹果手机 Shadowrocket 客户端配置，类型选择 juicity ,分别填入地址、端口、UUID、密码、SIN后保存。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/04/202404261714136908213063.webp&quot; title=&quot;4.Shadowrocket_import_juicity.webp&quot; alt=&quot;4.Shadowrocket_import_juicity.webp&quot;/&gt;&lt;/p&gt;&lt;p&gt;juicity 协议的链接地址格式为：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;juicity://uuid:password@example.domain.com:port?congestion_control=bbr&amp;amp;sni=example.domain.com&amp;amp;allow_insecure=0&amp;amp;pinned_certchain_sha256=CERT_HASH&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;　　&lt;/span&gt;手机上敲字比较累，可以参考以上格式在计算机上制作好 juicity 协议的链接，然后将链接通过微信等发到手机，复制后在 Shadowrocket 客户端导入即可。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、测速情况&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;　　我目前使用的是 200M 宽带，以下是使用同一台 VPS 在晚高峰分别使用 hysteria2 和 juicity 的测速情况，可以看出 juicity 协议的速度的确要比 hysteria2 协议慢一些。&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/04/202404261714136929379616.webp&quot; title=&quot;5.SpeedTest_Dartnode_Hysteria2.webp&quot; alt=&quot;5.SpeedTest_Dartnode_Hysteria2.webp&quot;/&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.hicairo.com/zb_users/upload/2024/04/202404261714136942305595.webp&quot; title=&quot;6.SpeedTest_Dartnode_Juicity.webp&quot; alt=&quot;6.SpeedTest_Dartnode_Juicity.webp&quot;/&gt;&lt;/p&gt;&lt;hr align=&quot;center&quot; width=&quot;100%&quot;/&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;本文出处：HiFeng&amp;#39;Blog&lt;br/&gt;本文链接：&lt;a href=&quot;https://www.hicairo.com/post/74.html&quot; target=&quot;_blank&quot; textvalue=&quot;https://www.hicairo.com/post/74.html&quot;&gt;https://www.hicairo.com/post/74.html&lt;/a&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;版权声明：本博客所有文章除特别声明外，均采用&lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline; font-size: 12px;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;CC BY-NC-SA&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;许可协议。转载请注明出处！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 26 Apr 2024 20:52:11 +0800</pubDate></item></channel></rss>