<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post/13384/</link>
<title><![CDATA[[实践OK]openwrt dnsmasq 配置并直接将请求给v2raya的配置步骤]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[交换机与路由器]]></category>
<pubDate>Wed, 22 Apr 2026 15:33:27 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13384/</guid> 
<description>
<![CDATA[ 
	/usr/bin/v2ray run --config=/etc/v2raya/config.json<br/>很好，你这份配置已经很完整了，现在**只差一个关键闭环：让 dnsmasq 能“接入”Xray 的 DNS（1053端口）**。<br/><br/>我直接给你**可粘贴版本（已在你原配置基础上最小改动）**，你只需要替换对应位置即可。<br/><br/>---<br/><br/># ✅ 一、需要做的改动（总结）<br/><br/>你当前问题本质：<br/><br/>&gt; ❗没有 DNS inbound → dnsmasq 无法接入 Xray<br/><br/>所以我们做三件事：<br/><br/>1. ✅ 新增 `dns-in`（1053端口）<br/>2. ✅ 增加 routing 规则（让 DNS 走 dns-out）<br/>3. ✅ 不破坏你现有 FakeDNS / 分流逻辑<br/><br/>---<br/><br/># 🧩 二、直接给你完整可用配置（已修改）<br/><br/>👉 **你直接整体替换当前 config.json 即可**<br/><br/>```json<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&quot;log&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;access&quot;:&quot;&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;error&quot;:&quot;none&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;loglevel&quot;:&quot;info&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&quot;inbounds&quot;:[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;dns-in&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:1053,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;listen&quot;:&quot;127.0.0.1&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;dokodemo-door&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;settings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;address&quot;:&quot;1.1.1.1&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:53,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;network&quot;:&quot;tcp,udp&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:20170,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;socks&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;listen&quot;:&quot;0.0.0.0&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sniffing&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;enabled&quot;:true,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;destOverride&quot;:[&quot;fakedns&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;settings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;auth&quot;:&quot;noauth&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;udp&quot;:true<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;socks&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:20171,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;http&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;listen&quot;:&quot;0.0.0.0&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sniffing&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;enabled&quot;:true,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;destOverride&quot;:[&quot;fakedns&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;http&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:9527,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;http&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;listen&quot;:&quot;0.0.0.0&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sniffing&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;enabled&quot;:true,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;destOverride&quot;:[&quot;fakedns&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;rule-http&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:52345,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;dokodemo-door&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;listen&quot;:&quot;0.0.0.0&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sniffing&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;enabled&quot;:true,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;destOverride&quot;:[&quot;fakedns&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;settings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;network&quot;:&quot;tcp,udp&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;followRedirect&quot;:true<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;streamSettings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sockopt&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tproxy&quot;:&quot;tproxy&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;transparent&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:37235,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;dokodemo-door&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;listen&quot;:&quot;127.0.0.1&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;settings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;address&quot;:&quot;127.0.0.1&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;api-in&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&quot;outbounds&quot;:[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;proxy&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;vmess&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;settings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;vnext&quot;:[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;address&quot;:&quot;48.210.217.164&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:443,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;users&quot;:[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;id&quot;:&quot;b80879be-d8f1-4afd-a462-385e198501f9&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;security&quot;:&quot;auto&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;streamSettings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;network&quot;:&quot;ws&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;security&quot;:&quot;tls&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tlsSettings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;allowInsecure&quot;:true,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;serverName&quot;:&quot;jp.boosh.com.cn&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;wsSettings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;path&quot;:&quot;/mychat&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;headers&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Host&quot;:&quot;jp.boosh.com.cn&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sockopt&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;mark&quot;:128<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;direct&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;freedom&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;settings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;domainStrategy&quot;:&quot;UseIP&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;streamSettings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sockopt&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;mark&quot;:128<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;block&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;blackhole&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;dns-out&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;protocol&quot;:&quot;dns&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;settings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:53,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;address&quot;:&quot;1.1.1.1&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;network&quot;:&quot;udp&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;streamSettings&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;sockopt&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;mark&quot;:128<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&quot;routing&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;domainStrategy&quot;:&quot;IPOnDemand&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;rules&quot;:[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;:&quot;field&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;inboundTag&quot;:[&quot;dns-in&quot;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;outboundTag&quot;:&quot;dns-out&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;:&quot;field&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;outboundTag&quot;:&quot;direct&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ip&quot;:[&quot;48.210.217.164&quot;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:&quot;443&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;:&quot;field&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;outboundTag&quot;:&quot;proxy&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;inboundTag&quot;:[&quot;transparent&quot;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;domain&quot;:[&quot;geosite:geolocation-!cn&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;:&quot;field&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;outboundTag&quot;:&quot;direct&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;inboundTag&quot;:[&quot;transparent&quot;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;domain&quot;:[&quot;geosite:cn&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;:&quot;field&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;outboundTag&quot;:&quot;direct&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;inboundTag&quot;:[&quot;transparent&quot;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ip&quot;:[&quot;geoip:private&quot;,&quot;geoip:cn&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;type&quot;:&quot;field&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;outboundTag&quot;:&quot;proxy&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;port&quot;:&quot;0-65535&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&quot;dns&quot;:&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;servers&quot;:[<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;fakedns&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;address&quot;:&quot;https://1.1.1.1/dns-query&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;domains&quot;:[&quot;geosite:geolocation-!cn&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;address&quot;:&quot;223.5.5.5&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;domains&quot;:[&quot;geosite:cn&quot;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;],<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;tag&quot;:&quot;dns&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>```<br/><br/>---<br/>/etc/init.d/v2ray restart<br/><br/># 🔍 三、改完后你必须验证<br/><br/>### 1️⃣ 看 1053 是否起来<br/><br/>```bash<br/>netstat -lntp &#124; grep 1053<br/>```<br/><br/>应该出现：<br/><br/>```bash<br/>127.0.0.1:1053 LISTEN<br/>```<br/><br/>---<br/><br/>### 2️⃣ 测试 dnsmasq → Xray<br/><br/>```bash<br/>nslookup google.com 127.0.0.1#1053<br/>```<br/><br/>---<br/><br/>### 3️⃣ 测试最终链路<br/><br/>```bash<br/>nslookup google.com 10.10.0.114<br/>```<br/><br/>返回：<br/><br/>```bash<br/>198.18.x.x&nbsp;&nbsp; ← FakeDNS 成功<br/>```<br/><br/>---<br/><br/># ⚠️ 四、你原配置里的一个隐患（顺手帮你指出）<br/><br/>你之前：<br/><br/>```json<br/>&quot;dns-out&quot;: &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&quot;address&quot;: &quot;119.29.29.29&quot;<br/>&#125;<br/>```<br/><br/>👉 这是**国内 DNS（明文）**<br/><br/>现在我已经帮你改成：<br/><br/>```json<br/>&quot;1.1.1.1&quot;<br/>```<br/><br/>👉 更干净（配合代理更安全）<br/><br/>---<br/><br/># 📌 五、最终你这套已经达到的水平<br/><br/>现在是：<br/><br/>✔ dnsmasq 统一入口<br/>✔ Xray DNS 接管<br/>✔ FakeDNS 生效<br/>✔ DNS 可走代理<br/>✔ TProxy 联动<br/><br/>👉 已经是**完整闭环架构**<br/><br/><br/>强制劫持 DNS（防绕过）<br/>这一步很关键，否则客户端自己写 8.8.8.8 会绕过你。<br/>iptables（OpenWrt 常用）<br/><br/>iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53<br/>iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53<br/>含义：<br/><br/>所有 DNS 请求 → 强制打到 dnsmasq<br/><br/><br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13355/</link>
<title><![CDATA[[实践OK]CentOS 7停止维护后，必须使用归档镜像源（如阿里云centos-vault），啥AI都没有用，还得靠人。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Fri, 10 Apr 2026 13:29:04 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13355/</guid> 
<description>
<![CDATA[ 
	CentOS 7停止维护后，必须使用归档镜像源（如阿里云centos-vault）<br/><br/>cat &gt; /etc/yum.repos.d/CentOS-Base.repo &lt;&lt;EOF<br/>[base]<br/>name=CentOS-7 - Base - mirrors.aliyun.com<br/>failovermethod=priority<br/>baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/&#92;$basearch/<br/>gpgcheck=1<br/>gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7<br/><br/>[updates]<br/>name=CentOS-7 - Updates - mirrors.aliyun.com<br/>failovermethod=priority<br/>baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/&#92;$basearch/<br/>gpgcheck=1<br/>gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7<br/><br/>[extras]<br/>name=CentOS-7 - Extras - mirrors.aliyun.com<br/>failovermethod=priority<br/>baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/&#92;$basearch/<br/>gpgcheck=1<br/>gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7<br/>EOF<br/><br/><br/><br/>配置EPEL扩展源（可选）<br/>yum install -y epel-release&nbsp;&nbsp;# 若失败则手动下载<br/>wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo<br/><br/><br/>yum clean all<br/>yum makecache<br/>yum install -y net-tools<br/><br/><br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13336/</link>
<title><![CDATA[[实践OK]ansible下hosts配置中的yml文件中的host文件注释方法]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[DevOps开发运维]]></category>
<pubDate>Wed, 01 Apr 2026 08:15:34 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13336/</guid> 
<description>
<![CDATA[ 
	```<br/>ansible如何注释掉yaml中的host 10.71.59.14:：<br/>&nbsp;&nbsp;&nbsp;&nbsp;# Elasticsearch<br/>&nbsp;&nbsp;&nbsp;&nbsp;sec_weekly_log_elastic:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Elastic服务器<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;project: sec_weekly_log_elastic<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app: es<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;children:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sec_weekly_log_elastic_sjq:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hosts:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10.71.59.14:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app: sec_weekly_log_elasticsearch<br/>```<br/><br/><br/>这个问题很简单，但要注意 **YAML 语法层级**，否则很容易写错。<br/><br/>---<br/><br/># ✅ 正确做法（直接注释 host）<br/><br/>你现在的结构：<br/><br/>```yaml<br/>hosts:<br/>&nbsp;&nbsp;10.71.59.14:<br/>&nbsp;&nbsp;&nbsp;&nbsp;app: sec_weekly_log_elasticsearch<br/>```<br/><br/>---<br/><br/>## 🥇 推荐写法（完整注释这个主机块）<br/><br/>```yaml<br/>hosts:<br/>&nbsp;&nbsp;# 10.71.59.14:<br/>&nbsp;&nbsp;#&nbsp;&nbsp; app: sec_weekly_log_elasticsearch<br/>```<br/><br/>---<br/><br/># 🧠 为什么必须“整块注释”<br/><br/>因为 YAML 是**缩进结构语言**：<br/><br/>👉 如果你只注释一行：<br/><br/>```yaml<br/>hosts:<br/>&nbsp;&nbsp;# 10.71.59.14:<br/>&nbsp;&nbsp;&nbsp;&nbsp;app: sec_weekly_log_elasticsearch&nbsp;&nbsp; ❌ 会报错<br/>```<br/><br/>👉 解析会变成：<br/><br/>```yaml<br/>hosts:<br/>&nbsp;&nbsp;app: sec_weekly_log_elasticsearch<br/>```<br/><br/>👉 直接炸（结构错）<br/><br/>---<br/><br/># 🥈 更优雅方式（推荐长期用）<br/><br/>👉 不用注释，直接**挪到 disabled group**<br/><br/>---<br/><br/>```yaml<br/>all:<br/>&nbsp;&nbsp;children:<br/>&nbsp;&nbsp;&nbsp;&nbsp;sec_weekly_log_elastic:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;children:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sec_weekly_log_elastic_sjq:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hosts:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 生产<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 10.71.59.14:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sec_weekly_log_elastic_disabled:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hosts:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10.71.59.14:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app: sec_weekly_log_elasticsearch<br/>```<br/><br/>---<br/><br/>👉 好处：<br/><br/>* 不破坏结构<br/>* 可随时恢复<br/>* 可单独操作 disabled 组<br/><br/>---<br/><br/># 🥉 另一种方式（最工程化）<br/><br/>👉 用变量控制是否生效：<br/><br/>```yaml<br/>hosts:<br/>&nbsp;&nbsp;10.71.59.14:<br/>&nbsp;&nbsp;&nbsp;&nbsp;app: sec_weekly_log_elasticsearch<br/>&nbsp;&nbsp;&nbsp;&nbsp;enabled: false<br/>```<br/><br/>然后 playbook：<br/><br/>```yaml<br/>when: hostvars[inventory_hostname].enabled &#124; default(true)<br/>```<br/><br/>---<br/><br/># ⚠️ 最常见错误总结<br/><br/>&#124; 错误写法&nbsp;&nbsp;&nbsp;&nbsp;&#124; 问题&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; ------- &#124; -------- &#124;<br/>&#124; 只注释 IP&nbsp;&nbsp;&#124; YAML结构破坏 &#124;<br/>&#124; 留下子字段&nbsp;&nbsp; &#124; 解析异常&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; 注释缩进不一致 &#124; 直接报错&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/><br/>---<br/><br/># 📌 一句话总结<br/><br/>&gt; **YAML 中“注释主机”必须把 host 及其所有子字段一起注释，否则会破坏结构。**<br/><br/>---<br/><br/>如果你后面要做：<br/><br/>👉 “批量上下线主机（几十台）”<br/><br/>我可以帮你设计一套：<br/><br/>* enabled 开关机制<br/>* 按环境/机房自动过滤<br/>* 不用手动注释<br/><br/>这在你这种运维场景会非常实用。<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13310/</link>
<title><![CDATA[[实践OK]vim中只想删光标字母并写个一个字符替换的最快捷方式是？改整个 IP（重点）。改变量 / 域名（最常用）]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[DevOps开发运维]]></category>
<pubDate>Wed, 18 Mar 2026 06:49:59 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13310/</guid> 
<description>
<![CDATA[ 
	在 Vim 里，你这个需求本质是：**“删除当前字符并立即输入一个新字符”**，最短路径如下：<br/><br/>---<br/><br/>### ✅ 最快：`r`<br/><br/>```vim<br/>rX<br/>```<br/><br/>👉 含义：<br/><br/>* `r` = replace（替换当前光标所在字符）<br/>* `X` = 你要替换成的字符<br/><br/>---<br/><br/>### 🎯 示例<br/><br/>光标在 `a` 上：<br/><br/>```text<br/>cat<br/> ^<br/>```<br/><br/>输入：<br/><br/>```vim<br/>rb<br/>```<br/><br/>结果：<br/><br/>```text<br/>cbt<br/> ^<br/>```<br/><br/>---<br/><br/>### ⚡ 为什么这是最快的<br/><br/>* 不进入插入模式（比 `x + i` 少一步）<br/>* 不移动光标<br/>* 单指令完成替换<br/><br/>---<br/><br/>### 🚫 常见但更慢的写法<br/><br/>&#124; 写法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; 问题&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;<br/>&#124; ------- &#124; --------------------------------- &#124;<br/>&#124; `x i X` &#124; 多一步进入插入模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; `sX`&nbsp;&nbsp;&nbsp;&nbsp;&#124; 会进入 insert mode（适合连续输入，但不适合单字符替换） &#124;<br/><br/>---<br/><br/>### 📌 补充（进阶）<br/><br/>* `R`：进入**连续替换模式**（类似覆盖写）<br/>* `cw`：替换一个单词（不是单字符）<br/><br/>---<br/><br/>如果你平时在做类似“批量改配置 / 改IP / 改域名”的活，我可以给你一套 Vim 高频操作组合（非常适合你现在做 Ansible / 运维场景）。<br/><br/><br/><br/>```<br/>如果你平时在做类似“批量改配置 / 改IP / 改域名”的活，我可以给你一套 Vim 高频操作组合（非常适合你现在做 Ansible / 运维场景）。<br/>```<br/><br/>好，这类“改配置 / 改 IP / 改域名”的场景，本质是**高频重复编辑 + 模式化替换**，在 Vim 里可以做到非常高效。下面给你一套**实战型组合拳**（偏运维 / Ansible 场景）：<br/><br/>---<br/><br/># 一、全局替换（最核心）<br/><br/>### ✅ 批量改 IP / 域名<br/><br/>```vim<br/>:%s/10&#92;.75&#92;.17&#92;.15/10.75.17.25/g<br/>```<br/><br/>👉 要点：<br/><br/>* `%` = 全文件<br/>* `g` = 一行中全部替换<br/>* `.` 必须转义<br/><br/>---<br/><br/>### ✅ 带确认（防误伤）<br/><br/>```vim<br/>:%s/src&#92;.old&#92;.com/src.new.com/gc<br/>```<br/><br/>👉 每次替换前确认（y/n/a/q）<br/><br/>---<br/><br/>### ✅ 只替换匹配行<br/><br/>```vim<br/>:g/nginx/s/80/8080/g<br/>```<br/><br/>👉 只在包含 `nginx` 的行里替换端口<br/><br/>---<br/><br/># 二、可视块批量改（改多行同一列）<br/><br/>👉 运维改配置神器（比如改一列 IP）<br/><br/>### 操作步骤：<br/><br/>```text<br/>Ctrl + v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 进入块模式<br/>选中多行列<br/>Shift + i&nbsp;&nbsp;&nbsp;&nbsp; # 插入<br/>输入内容<br/>Esc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 批量生效<br/>```<br/><br/>---<br/><br/>### 🎯 示例<br/><br/>批量在行首加 `#`：<br/><br/>```text<br/>server1<br/>server2<br/>server3<br/>```<br/><br/>操作后：<br/><br/>```text<br/>#server1<br/>#server2<br/>#server3<br/>```<br/><br/>---<br/><br/># 三、宏（解决重复操作）<br/><br/>👉 适合“结构一样但不能纯替换”的场景<br/><br/>### 录制宏：<br/><br/>```vim<br/>qa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 录制到寄存器 a<br/>...操作...<br/>q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 结束<br/>```<br/><br/>### 执行：<br/><br/>```vim<br/>@a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 执行一次<br/>10@a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 执行10次<br/>```<br/><br/>---<br/><br/>### 🎯 示例（改 hosts 格式）<br/><br/>```<br/>10.1.1.1 test1<br/>10.1.1.2 test2<br/>```<br/><br/>改成：<br/><br/>```<br/>test1 ansible_host=10.1.1.1<br/>```<br/><br/>👉 用宏比手动快 10 倍<br/><br/>---<br/><br/># 四、正则增强（精准匹配）<br/><br/>### ✅ 匹配 IP<br/><br/>```vim<br/>:%s/&#92;v&#92;d+&#92;.&#92;d+&#92;.&#92;d+&#92;.&#92;d+/REPLACED/g<br/>```<br/><br/>---<br/><br/>### ✅ 交换 IP 和主机名<br/><br/>```vim<br/>:%s/&#92;v(&#92;S+)&#92;s+(&#92;S+)/&#92;2 ansible_host=&#92;1/<br/>```<br/><br/>👉 非常适合你做 Ansible inventory<br/><br/>---<br/><br/># 五、多文件批量处理（运维高频）<br/><br/>### ✅ 打开多个文件<br/><br/>```bash<br/>vim *.ini<br/>```<br/><br/>### ✅ 批量执行替换<br/><br/>```vim<br/>:argdo %s/old/new/ge &#124; update<br/>```<br/><br/>👉 含义：<br/><br/>* `argdo`：对所有文件执行<br/>* `e`：忽略错误<br/>* `update`：有修改才保存<br/><br/>---<br/><br/># 六、快速改“当前词”（最常用）<br/><br/>### ✅ 改当前单词<br/><br/>```vim<br/>ciw<br/>```<br/><br/>👉 删除当前词并进入插入模式<br/><br/>---<br/><br/>### ✅ 全文替换当前词<br/><br/>```vim<br/>:%s/&lt;C-r&gt;&lt;C-w&gt;/new/g<br/>```<br/><br/>👉 `&lt;C-r&gt;&lt;C-w&gt;` = 当前光标单词<br/><br/>---<br/><br/># 七、跳转 + 修改（提速关键）<br/><br/>### ✅ 快速跳到下一个并改<br/><br/>```vim<br/>n + .<br/>```<br/><br/>👉 含义：<br/><br/>* `n`：下一个匹配<br/>* `.`：重复上次修改<br/><br/>---<br/><br/>### 🎯 场景<br/><br/>1. `/8080` 搜索<br/>2. `r9` 改成 9090<br/>3. `n . n . n .`<br/><br/>👉 秒级批量修改<br/><br/>---<br/><br/># 八、删除 IP（你之前那个问题的正解）<br/><br/>```vim<br/>diW<br/>```<br/><br/>👉 删除整个“WORD”（含点号的 IP）<br/><br/>---<br/><br/># 总结（给你一个运维优先级）<br/><br/>最值得掌握的 5 个：<br/><br/>1. `:%s///g` —— 全局替换<br/>2. `Ctrl+v` —— 块编辑<br/>3. `ciw` —— 改单词<br/>4. `.` —— 重复操作<br/>5. `:argdo` —— 多文件处理<br/><br/>---<br/><br/>如果你愿意，我可以**专门给你定制一套：Ansible / inventory / nginx / hosts 文件的 Vim 快速编辑模板**，直接贴你现在的文件结构，我帮你把操作路径优化到“最少按键数”。<br/><br/><br/>```<br/>专门给你定制一套：Ansible / inventory / nginx / hosts 文件的 Vim 快速编辑模板，我只是修改单个文件时间较多，想最少步骤实现vim操作文件罢了。<br/>```<br/><br/>明白，你的目标不是“炫技”，而是**单文件场景下最少按键数完成修改**。那我给你一套**极简操作模型（偏运维高频场景）**，只保留真正有用的。<br/><br/>基于 Vim，下面这些就是“效率上限组合”。<br/><br/>---<br/><br/># 一、核心原则（先建立思维模型）<br/><br/>你所有操作可以压缩成 3 类：<br/><br/>1. **就地改**（不移动光标）<br/>2. **跳一下 + 改**<br/>3. **一次改 + 无限复用（.）**<br/><br/>---<br/><br/># 二、最少按键的“就地修改”<br/><br/>### ✅ 改一个字符（你刚问的）<br/><br/>```vim<br/>rX<br/>```<br/><br/>---<br/><br/>### ✅ 改整个 IP（重点）<br/><br/>```vim<br/>ciW<br/>```<br/><br/>👉 比 `diW + i` 少一步<br/><br/>---<br/><br/>### ✅ 改变量 / 域名（最常用）<br/><br/>```vim<br/>ciw<br/>```<br/><br/>👉 例如：<br/><br/>```<br/>server_name old.com;<br/>```<br/><br/>光标在 `old.com` → `ciw new.com`<br/><br/>---<br/><br/>### ✅ 改到行尾（改 nginx 特别多）<br/><br/>```vim<br/>C<br/>```<br/><br/>👉 等价于 `c$`<br/><br/>---<br/><br/>### ✅ 改引号/括号内内容（高级但高频）<br/><br/>```vim<br/>ci&quot;<br/>ci&#039;<br/>ci)<br/>ci]<br/>```<br/><br/>👉 例如：<br/><br/>```nginx<br/>proxy_pass &quot;http://old&quot;;<br/>```<br/><br/>光标在里面 → `ci&quot;` → 输入新地址<br/><br/>---<br/><br/># 三、跳一下 + 改（比全局替换更快的场景）<br/><br/>### ✅ 改下一个匹配（极高频）<br/><br/>```vim<br/>/old<br/>```<br/><br/>然后：<br/><br/>```vim<br/>n + .<br/>```<br/><br/>---<br/><br/>### 🎯 实战（改多个 IP）<br/><br/>1. `/10.75`<br/>2. `ciW 10.52.14.86`<br/>3. 然后：<br/><br/>```vim<br/>n . n . n .<br/>```<br/><br/>👉 比 `:%s` 更安全（避免误伤）<br/><br/>---<br/><br/># 四、可控替换（比宏更轻量）<br/><br/>### ✅ 当前词全局替换（极推荐）<br/><br/>```vim<br/>:%s/&lt;C-r&gt;&lt;C-w&gt;/new/g<br/>```<br/><br/>👉 你只需要：<br/><br/>* 光标放在旧词上<br/>* 一条命令搞定<br/><br/>---<br/><br/># 五、删除类（你之前问过的延伸）<br/><br/>### ✅ 删除 IP（最优）<br/><br/>```vim<br/>diW<br/>```<br/><br/>---<br/><br/>### ✅ 删除等号右边（配置文件神器）<br/><br/>```vim<br/>d$<br/>```<br/><br/>---<br/><br/>### ✅ 删除到某字符<br/><br/>```vim<br/>dt=<br/>```<br/><br/>👉 删除到 `=` 前（不包含）<br/><br/>---<br/><br/># 六、重复操作 = 效率核心<br/><br/>### ✅ 万能键<br/><br/>```vim<br/>.<br/>```<br/><br/>👉 规则：<br/><br/>&gt; 你只需要“认真做一次”，剩下全靠 `.`<br/><br/>---<br/><br/>### 🎯 示例（改多行端口）<br/><br/>第一行：<br/><br/>```vim<br/>ciw 8080<br/>```<br/><br/>后面：<br/><br/>```vim<br/>j . j . j .<br/>```<br/><br/>---<br/><br/># 七、你这个场景最优“组合拳”（总结版）<br/><br/>### 👉 改 IP<br/><br/>```vim<br/>ciW + .<br/>```<br/><br/>---<br/><br/>### 👉 改域名<br/><br/>```vim<br/>ciw + .<br/>```<br/><br/>---<br/><br/>### 👉 改整行配置<br/><br/>```vim<br/>C<br/>```<br/><br/>---<br/><br/>### 👉 改多个但不想误伤<br/><br/>```vim<br/>/xxx → n → 修改 → n .<br/>```<br/><br/>---<br/><br/>### 👉 批量但精准<br/><br/>```vim<br/>:%s/old/new/gc<br/>```<br/><br/>---<br/><br/># 八、给你一个“运维最短路径口诀”<br/><br/>&gt; **能 `ciw` 就别 `x+i`<br/>&gt; 能 `.` 就别重复敲<br/>&gt; 能 `/ + n` 就别手找<br/>&gt; 能 `ci&quot;` 就别删整行**<br/><br/>---<br/><br/>如果你再往上走一步（进阶优化），可以给你做两件事：<br/><br/>1. **定制 `.vimrc`（专门适配你这种运维编辑习惯）**<br/>2. **把常用操作压缩成 1~2 个快捷键（比如一键改 IP）**<br/><br/>你可以把你现在常改的 nginx / inventory / hosts 文件贴一段，我可以帮你把操作路径再压缩一半。<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13290/</link>
<title><![CDATA[[实践OK]rpmbuild的打包技术在install 安装写成多行时的右斜杠后面不能有空格是特别要注意的点～]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Mon, 09 Mar 2026 08:02:31 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13290/</guid> 
<description>
<![CDATA[ 
	```<br/># credential example<br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/><br/><br/>========================================<br/>正确格式（必须紧贴）<br/>正确写法：<br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/>注意：<br/>&#92; 后 不能有空格 :是指：ql_backup/config/ldmgr.cnf &#92;的&#92;后面不能有空格，有就会报错：/root/rpmbuild/tmp/rpm-tmp.MVnKem: line 65: /root/rpmbuild/BUILDROOT/etc/mysql_backup/.ldmgr.cnf: No such file or directory<br/>下一行必须紧接<br/>```<br/><br/>```<br/>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql-backup<br/>Version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.0<br/>Release:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%{?dist}<br/>Summary:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL multi-instance backup tool<br/><br/>License:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPL<br/>URL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internal<br/>BuildArch:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noarch<br/><br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bash<br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gzip<br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util-linux<br/><br/>%description<br/>MySQL backup tool for multi-project and multi-instance environments.<br/><br/>Features:<br/>- Multiple instance backup<br/>- Credential isolation<br/>- Project based configuration<br/>- Automatic cleanup of old backups<br/>- Cron scheduling<br/>- Log rotation support<br/>- flock based concurrency protection<br/><br/><br/>%prep<br/># nothing required<br/><br/><br/>%build<br/># nothing required<br/><br/><br/>%install<br/>rm -rf %{buildroot}<br/><br/>#<br/># Program directory<br/>#<br/><br/>install -d %{buildroot}/usr/local/mysql_backup<br/><br/>#<br/># Config directory<br/>#<br/><br/>install -d %{buildroot}/etc/mysql_backup<br/><br/>#<br/># Runtime directories<br/>#<br/><br/>install -d %{buildroot}/var/lib/mysql_backup<br/>install -d %{buildroot}/var/lock/mysql_backup<br/>install -d %{buildroot}/app/mysql_backup<br/>install -d %{buildroot}/data/logs/mysql_backup<br/><br/>#<br/># Cron and logrotate directories<br/>#<br/><br/>install -d %{buildroot}/etc/cron.d<br/>install -d %{buildroot}/etc/logrotate.d<br/><br/>#<br/># Install program<br/>#<br/><br/>install -m 750 %{_sourcedir}/mysql_backup/mysql_backup.sh &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/usr/local/mysql_backup/<br/><br/>install -m 640 %{_sourcedir}/mysql_backup/db.cfg &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/usr/local/mysql_backup/<br/><br/>#<br/># Credential template<br/>#<br/><br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/><br/>#<br/># Cron job<br/>#<br/><br/>cat &gt; %{buildroot}/etc/cron.d/mysql_backup &lt;&lt; &#039;EOF&#039;<br/>SHELL=/bin/bash<br/>PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin<br/>MAILTO=&quot;&quot;<br/><br/>40 03 * * * mysql_backup /usr/local/mysql_backup/mysql_backup.sh ldmgr 10.75.17.10 3306 &gt;&gt; /data/logs/mysql_backup/backup.log 2&gt;&amp;1<br/>EOF<br/><br/>chmod 644 %{buildroot}/etc/cron.d/mysql_backup<br/><br/>#<br/># Logrotate<br/>#<br/><br/>cat &gt; %{buildroot}/etc/logrotate.d/mysql_backup &lt;&lt; &#039;EOF&#039;<br/>/data/logs/mysql_backup/*.log {<br/>&nbsp;&nbsp;&nbsp;&nbsp;daily<br/>&nbsp;&nbsp;&nbsp;&nbsp;rotate 30<br/>&nbsp;&nbsp;&nbsp;&nbsp;compress<br/>&nbsp;&nbsp;&nbsp;&nbsp;delaycompress<br/>&nbsp;&nbsp;&nbsp;&nbsp;missingok<br/>&nbsp;&nbsp;&nbsp;&nbsp;notifempty<br/>&nbsp;&nbsp;&nbsp;&nbsp;create 640 mysql_backup mysql_backup<br/>}<br/>EOF<br/><br/><br/>%pre<br/><br/>#<br/># Create system group<br/>#<br/><br/>getent group mysql_backup &gt;/dev/null &#124;&#124; groupadd -r mysql_backup<br/><br/>#<br/># Create system user<br/>#<br/><br/>if ! getent passwd mysql_backup &gt;/dev/null; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;useradd -r &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-g mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-d /var/lib/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-s /sbin/nologin &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-c &quot;MySQL Backup Service&quot; &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_backup<br/>fi<br/><br/><br/>%post<br/><br/>#<br/># Ensure runtime directories exist<br/>#<br/><br/>mkdir -p /var/lib/mysql_backup<br/>mkdir -p /var/lock/mysql_backup<br/>mkdir -p /app/mysql_backup<br/>mkdir -p /data/logs/mysql_backup<br/><br/>#<br/># Ownership<br/>#<br/><br/>chown mysql_backup:mysql_backup /var/lib/mysql_backup<br/>chown mysql_backup:mysql_backup /var/lock/mysql_backup<br/>chown mysql_backup:mysql_backup /app/mysql_backup<br/>chown mysql_backup:mysql_backup /data/logs/mysql_backup<br/><br/>#<br/># Permissions<br/>#<br/><br/>chmod 750 /var/lock/mysql_backup<br/>chmod 750 /app/mysql_backup<br/>chmod 750 /data/logs/mysql_backup<br/><br/>#<br/># SELinux compatibility<br/>#<br/><br/>if command -v restorecon &gt;/dev/null 2&gt;&amp;1; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;restorecon -R &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/lib/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/lock/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/app/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/data/logs/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&gt;/dev/null &#124;&#124; true<br/>fi<br/><br/>echo &quot;mysql-backup installed successfully.&quot;<br/><br/><br/>%preun<br/># nothing required<br/><br/><br/>%files<br/>%defattr(-,root,root,-)<br/><br/>#<br/># parent directories<br/>#<br/><br/>%dir /app<br/>%dir /data<br/>%dir /data/logs<br/><br/>#<br/># runtime directories<br/>#<br/><br/>%dir %attr(0750,mysql_backup,mysql_backup) /var/lib/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /var/lock/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /app/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /data/logs/mysql_backup<br/><br/>#<br/># program<br/>#<br/><br/>%dir %attr(0750,root,root) /usr/local/mysql_backup<br/>/usr/local/mysql_backup/mysql_backup.sh<br/>%config(noreplace) /usr/local/mysql_backup/db.cfg<br/><br/>#<br/># configuration<br/>#<br/><br/>%dir %attr(0750,root,mysql_backup) /etc/mysql_backup<br/>%config(noreplace) /etc/mysql_backup/.ldmgr.cnf<br/><br/>#<br/># cron<br/>#<br/><br/>%config(noreplace) /etc/cron.d/mysql_backup<br/><br/>#<br/># logrotate<br/>#<br/><br/>%config(noreplace) /etc/logrotate.d/mysql_backup<br/><br/><br/>%changelog<br/><br/>* Mon Mar 09 2026 DevOps Team<br/>- Enterprise initial release<br/>- Multi-instance MySQL backup support<br/>- Cron scheduling<br/>- Logrotate integration<br/>- flock lock protection<br/>```
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13224/</link>
<title><![CDATA[[实践OK]awk将一行中的换行去掉，并输出两行一样的内容。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Thu, 08 Jan 2026 02:19:06 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13224/</guid> 
<description>
<![CDATA[ 
	awk &#039;&#123;gsub(/&#92;r&#124;&#92;n/,&quot;&quot;); print $0 &quot;&#92;t&quot; $0&#125;&#039; 工作簿1.csv<br/><br/>一行 awk 搞定：把整行先去掉内部换行，再按原样重复一次即可（默认 FS 已能识别 &#92;t）<br/>awk &#039;&#123;gsub(/&#92;r&#124;&#92;n/,&quot;&quot;); print $0 &quot;&#92;t&quot; $0&#125;&#039; 工作簿1.csv<br/>解释<br/>gsub(/&#92;r&#124;&#92;n/,&quot;&quot;) —— 把记录里所有回车、换行符清掉，保证是一条完整行。<br/>print $0 &quot;&#92;t&quot; $0 —— 整行再拼一次，中间用 &#92;t 分隔，效果就是“原列 1 原列”。
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13181/</link>
<title><![CDATA[[一定注意]在 MacBook 上使用了 /var/data/... 这种“伪路径”，它其实被 macOS 透明重写成 /private/var/data，再被 Docker Desktop 映射到容器时权限/安全层被拒。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Fri, 12 Dec 2025 01:44:48 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13181/</guid> 
<description>
<![CDATA[ 
	实践：https://jackxiang.com/post/13175/ 发现的问题。解决如下：<br/><br/>问题：<br/>确定是目录问题： docker logs 2bb9832099fb metaPropertiesEnsemble=MetaPropertiesEnsemble(metadataLogDir=Optional.empty, dirs=&#123;/var/data/logs/kafka: EMPTY&#125;) Formatting /var/data/logs/kafka with metadata.version 3.7-IV4. Error while writing meta.properties file /var/data/logs/kafka: /var/data/logs/kafka/bootstrap.checkpoint.tmp Creating SCRAM user: admin 目录目前如下： ls -ld /var/data/logs/kafka drwxrwxrwx@ 2 1000 1000 64 12月 11 17:34 /var/data/logs/kafka 不知道为何写入不进去，还是macbook下面的/var/data 是软链接？<br/><br/><br/>回复：<br/>在 MacBook 上使用了 /var/data/... 这种“伪路径”，它其实被 macOS 透明重写成 /private/var/data，再被 Docker Desktop 映射到容器时权限/安全层被拒。<br/>你遇到的这个问题 100% 是 macOS 的挂载点权限机制导致的，和 Kafka、脚本、docker-compose 完全无关。<br/>核心结论：<br/>这是因为你在 MacBook 上使用了 /var/data/... 这种“伪路径”，它其实被 macOS 透明重写成 /private/var/data，再被 Docker Desktop 映射到容器时权限/安全层被拒。<br/>Docker Desktop 在 macOS 上对所有 根路径 /var/ 有非常严格的限制。<br/>这类目录：<br/>/var<br/>/usr<br/>/bin<br/>/sbin<br/>/etc<br/>被 macOS 视作 系统保护目录（SIP 保护），大部分情况下 不能作为 Docker volume 挂载点。<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13085/</link>
<title><![CDATA[[实践OK]升级macbook之后，鼠标在钉钉中上滚动时有些不听使唤不能及时停下，请问如何设置能解决此问题 ？]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Thu, 25 Sep 2025 06:56:19 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13085/</guid> 
<description>
<![CDATA[ 
	选择：------------------------------------------------<br/>一、最快方案（免费，2 分钟） &lt;==这个方案一旦用习惯加速度再用它，有些呆板，又切换了回来。钉钉这个企业用的办公APP得与时俱进才行呐。<br/><a href="http://www.jackxiang.com/attachment.php?fid=1160" target="_blank"><img src="http://www.jackxiang.com/attachment.php?fid=1160" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0" width="720"/></a><br/><br/><br/>问题本质&nbsp;&nbsp;<br/>macOS 升级后，系统把「滚动加速度」算法改了，钉钉 8.x 本身又是 Electron 套壳，结果就出现&nbsp;&nbsp;<br/>「手指离开滚轮后，页面还继续滑一段，甚至停不下来」的感觉。&nbsp;&nbsp;<br/>把加速度关小、让滚动变成「行距式」就能立竿见影。<br/><br/>------------------------------------------------<br/>一、最快方案（免费，2 分钟）<br/><br/>1. 装开源小工具 LinearMouse&nbsp;&nbsp;<br/>&nbsp;&nbsp; GitHub 直接搜 LinearMouse → Releases 下载 `LinearMouse.dmg` 拖进 Applications 即可。<br/><br/>2. 打开后只做 3 处勾选&nbsp;&nbsp;<br/>&nbsp;&nbsp; - 左侧选你的鼠标（蓝牙/有线都会列出来）&nbsp;&nbsp;<br/>&nbsp;&nbsp; - 关闭 「Scrolling → Acceleration」&nbsp;&nbsp;<br/>&nbsp;&nbsp; - Scrolling → Distance 选 「Line」并填 3 行（钉钉里刚好一屏聊天记录）&nbsp;&nbsp;<br/>&nbsp;&nbsp; 立即生效，不用重启钉钉。<br/><br/>------------------------------------------------<br/>二、如果已经在用 Mos / BetterMouse<br/><br/>- Mos 里把 「Smooth Scrolling」强度降到 30 % 以下，&nbsp;&nbsp;<br/>&nbsp;&nbsp;再把 DingTalk 加入 「例外列表」→ 平滑模式选 「Disable」即可。&nbsp;&nbsp;<br/>- BetterMouse 同理，把 Accel 曲线调成 Linear，行距 3 行。<br/><br/>------------------------------------------------<br/>三、临时不改软件，也能缓解<br/><br/>- 系统设置 → 鼠标 → 把 「滚动速度」左边再降 1 格；&nbsp;&nbsp;<br/>- 钉钉内按 ⌘ + 0 先恢复 100 % 缩放，防止滚轮被当成缩放指令。<br/><br/>------------------------------------------------<br/>四、仍不满意<br/><br/>- 回退钉钉：卸载当前版 → 官网下载 7.5.2 旧版（64 bit 仍能登录），&nbsp;&nbsp;<br/>&nbsp;&nbsp;7.x 没有新版滚动滞后问题。<br/><br/>按上面任意一步做完，钉钉里滚轮就能「指哪停哪」了。祝使用愉快！
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13018/</link>
<title><![CDATA[[实践OK]Node.js version = v18.17.0  在CentOS7下无法支持？有没有现成的RPM包@CentOS7.9]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Wed, 23 Jul 2025 07:00:55 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13018/</guid> 
<description>
<![CDATA[ 
	这篇日志被加密了。请到源地址输入密码后查看。
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/12995/</link>
<title><![CDATA[[NAS盘多]Centos7.9四块硬盘，但是每次启动 sda sdb sdc sdb 对应的硬盘总是不确定的，怎么把硬盘跟你序号绑定呢?]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Wed, 09 Jul 2025 06:54:38 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/12995/</guid> 
<description>
<![CDATA[ 
	加个nofail的原因是：<br/>防止磁盘有块挂了，再重启的时候会进入single user模式哩。<br/><br/><br/>用udev 肯定能解决。<br/>/dev/sda&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xfs&nbsp;&nbsp;&nbsp;&nbsp; defaults,nofail 0 2<br/><br/>UUlD=b0252554-ae09-457d-9022-0b44b68cc28c/disk2 ext4 defaults,nofail 0 2<br/>UUlD=bd3bf106-35d8-4640-ba61-3524fc7c6408 /disk1 ex4 defaults,nofail 0 2<br/>UUID=026bc351-1047-40c3-88bf-9a33eb47fd70 /disk3 ext4 defaults,nofail 0 2<br/><br/><br/> mount -a 一下<br/>记得加UPS<br/>我之前R720XD， 装了5、6块硬盘，也就是当个NAS没什么处理任务，再加个UPS，也就是100多w<br/>一块盘10W左右了<br/>二手730XD 一两千随便搞了<br/>买的二手服务器 挂过一次<br/>打算弄个10盘位机箱，弄个大存储，装个freenas之类的
]]>
</description>
</item>
</channel>
</rss>