<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chon's Blog</title><link>https://ichon.me</link><description>I can eat glass, it does not hurt me.</description><language>zh-cn</language><lastBuildDate>Sat, 28 Mar 2026 15:43:21 -0000</lastBuildDate><item><title>从老公到队友：一场亲密关系的降级</title><link>https://ichon.me/post/1040.html</link><description>&lt;p&gt;&lt;em&gt;为什么越来越多女生不叫"老公"了？&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;一个称呼的变迁&lt;/h2&gt;
&lt;p&gt;不知道从什么时候开始，"老公"这个词在年轻女性的社交语境里逐渐退场了。取而代之的是"队友"，甚至"室友"。&lt;/p&gt;
&lt;p&gt;小红书、妈妈群、育儿社区里，"我队友昨晚又没起来喂奶"成了标准句式。这不是个别现象，而是一整代人在重新定义亲密关系的语言。&lt;/p&gt;
&lt;p&gt;一个称呼的变化，背后是一整套关系逻辑的重写。&lt;/p&gt;
&lt;h2&gt;奶奶叫"你爷爷"，妈妈叫"老公"，你叫"队友"&lt;/h2&gt;
&lt;p&gt;每一代人都在悄悄改写亲密关系的语言。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;奶奶那代：&lt;/strong&gt; 叫"他爸"、"孩子他爹"、"那口子"。称呼里没有个人，只有家庭角色。丈夫不是独立的情感对象，而是家庭结构中的一个位置。那个年代的婚姻不需要爱情，需要的是搭伙过日子。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;妈妈那代：&lt;/strong&gt; 开始叫"老公"了。这个词带着亲昵和私密感，背后是对浪漫爱情的引入——婚姻不再只是搭伙，还要有感情。这一代人看着港台剧和琼瑶小说长大，相信爱情应该是婚姻的基础。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我们这代：&lt;/strong&gt; "队友"、"室友"、"搭子"。从角色到情感，再到功能，称呼绕了一圈——又回到了某种"搭伙"，只不过这次不是因为没得选，而是主动选择了去浪漫化。&lt;/p&gt;
&lt;p&gt;三代人，三种称呼，三种婚姻观。奶奶没有选择的权利，妈妈有了选择却常常失望，到了我们这代——选择太多了，反而不敢 all in。&lt;/p&gt;
&lt;p&gt;但妈妈那代人叫出"老公"时嘴角的那点笑意，是比"队友"珍贵得多的东西。&lt;/p&gt;
&lt;h2&gt;"队友"背后的操作系统&lt;/h2&gt;
&lt;p&gt;表面上是换了个称呼，实际上是换了一套操作系统。&lt;/p&gt;
&lt;p&gt;"老公"背后的隐含语境是：你是最亲密的人，有爱的期待。&lt;/p&gt;
&lt;p&gt;"队友"背后的隐含语境是：合作关系，把该干的干好就行。&lt;/p&gt;
&lt;p&gt;这个转换很微妙——它把婚姻从"爱情故事"的框架拉到了"项目管理"的框架里。好处是更理性、更高效、更方便讨论分工问题。但代价呢？最亲密的人变成了KPI考核对象。&lt;/p&gt;
&lt;p&gt;有些东西一旦被理性化，就回不去了。叫了三年"队友"之后，很难某天突然甜甜地喊一声"老公"——那层亲密感的肌肉已经萎缩了。&lt;/p&gt;
&lt;h2&gt;心理止损策略&lt;/h2&gt;
&lt;p&gt;把老公定义成队友，本质上是在做预期管理。&lt;/p&gt;
&lt;p&gt;先把标准降到"完成任务就及格"，那他偶尔浪漫一下就是超预期的惊喜。但如果心里装的是爱情滤镜，他忘了纪念日就要崩溃。&lt;/p&gt;
&lt;p&gt;降低期待 → 减少失望 → 保护自己不受伤。&lt;/p&gt;
&lt;p&gt;打工人都懂的道理，被搬到了婚姻里。&lt;/p&gt;
&lt;p&gt;但婚姻不是上班。上班可以摸鱼、可以跳槽、可以精神离职。对一份工作降低期待，合情合理。可对选择共度一生的人降低期待——那当初为什么要选他？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有期待的关系不叫安全，叫荒芜。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;这个策略会反噬&lt;/h2&gt;
&lt;p&gt;长期用低期待框架运行一段关系，对方是感受得到的。&lt;/p&gt;
&lt;p&gt;他会觉得"反正她就把我当工具人"，投入的热情也开始减少。然后你发现他真的越来越像室友了，反而印证了最初的预判。&lt;/p&gt;
&lt;p&gt;心理学上叫&lt;strong&gt;自我实现的预言&lt;/strong&gt;——怕什么，就会制造什么。&lt;/p&gt;
&lt;p&gt;原本可能只是七分的问题，用这个策略处理完，变成了四分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不可能一边筑墙，一边抱怨对方不亲近你。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;一个有趣的双标&lt;/h2&gt;
&lt;p&gt;一个值得玩味的现象：她可以叫老公"队友"，但如果老公反过来叫她"队友"，恐怕就要被讨伐了。&lt;/p&gt;
&lt;p&gt;"我叫你队友"= 独立清醒不恋爱脑。
"你叫我队友"= 你不爱我、没把我放在心上。&lt;/p&gt;
&lt;p&gt;同一个词，方向不同，含义截然相反。这不是真正的平等，是选择性平等——权利上要现代，待遇上要传统。&lt;/p&gt;
&lt;p&gt;但公平地说，男性也有对等的双标：要老婆经济独立，又要她包揽家务带娃温柔体贴。每个人都倾向于要对自己有利的那一半平等。&lt;/p&gt;
&lt;p&gt;说到底，称呼背后应该有一个基本共识：怎么称呼对方，对方也可以怎么称呼你。不能一边用功能词汇定义他，一边要求他用亲密词汇回应——那不是平等，是特权。&lt;/p&gt;
&lt;h2&gt;万物皆可搭&lt;/h2&gt;
&lt;p&gt;"队友"不是孤立现象，它属于一个更大的语言家族——&lt;strong&gt;搭子文化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;饭搭子、旅游搭子、健身搭子、考研搭子、甚至遛狗搭子……年轻人把生活的每个需求拆解成模块，然后为每个模块找一个恰好合适的人。核心逻辑是：&lt;strong&gt;不把所有需求压在一个人身上。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这套逻辑延伸到婚姻里，老公就变成了"育儿搭子"或"人生搭子"——你负责你的模块，各尽其责，不越界。&lt;/p&gt;
&lt;p&gt;表面上高效健康。但仔细想想：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;搭子关系的本质是可替换性。&lt;/strong&gt; 饭搭子不合适，换一个就行。但婚姻和搭子有个根本区别——没法像换饭搭子一样换丈夫。用搭子心态经营婚姻，得到的是效率，失去的是不可替代感。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有人想当一个可替换的模块。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;搭子文化的底层假设是：人与人之间不需要深度绑定，浅层连接就够了。社交层面或许成立，但在亲密关系里——浅层连接恰恰是关系死亡的前兆。&lt;/p&gt;
&lt;h2&gt;更深的趋势：亲密关系的去神圣化&lt;/h2&gt;
&lt;p&gt;称呼只是表象，背后是几个大趋势在叠加：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;婚姻从信仰变成了合同。&lt;/strong&gt; 上一代人觉得婚姻是一辈子的事，忍也要忍下去。这一代人把婚姻看成合作协议——合得来就续约，合不来就止损。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;个体主义的全面胜利。&lt;/strong&gt; 整个社会都在强调"做自己"、"爱自己优先"。这没错，但推到极致就是——没有人愿意为关系让渡任何自我了。而亲密关系恰恰需要一定程度的交融和脆弱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安全感的全面匮乏。&lt;/strong&gt; 经济不确定、离婚率高、社交媒体上每天都在看到出轨劈腿——大环境让人不敢 all in 任何一段关系。队友思维本质上是风控思维：不把鸡蛋放在一个篮子里，感情也要分散投资。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;语言在重塑现实。&lt;/strong&gt; 当一整代人都用"队友/室友/搭子"来描述亲密关系，这些词会反过来塑造人们对关系的理解。下一代人可能真的不知道"老公"、"老婆"这些带温度的称呼意味着什么了。&lt;/p&gt;
&lt;p&gt;人们越来越擅长保护自己，越来越不擅长爱人了。谁都不想当傻子，谁都不想先交出真心。结果就是两个"聪明人"面对面坐着，谁也不肯先开口。&lt;/p&gt;
&lt;h2&gt;写在最后&lt;/h2&gt;
&lt;p&gt;叫队友的人不见得不幸福，叫老公的人也不见得就甜蜜。每个人有自己的选择。&lt;/p&gt;
&lt;p&gt;但一段连称呼都不愿意给对方一点感情的关系，大概也不值得继续了。&lt;/p&gt;
&lt;p&gt;亲密关系从来不是一笔划算的投资。它是明知道可能会受伤，还是把自己押上去了。&lt;/p&gt;
&lt;p&gt;比起活在一段精心降级过的关系里，承受期待落空的风险，反而更值得。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;写于一个周六的下午，关于称呼，关于期待，关于这个时代里我们如何笨拙地学习去爱。&lt;/em&gt;&lt;/p&gt;</description><pubDate>Sat, 28 Mar 2026 15:43:21 -0000</pubDate></item><item><title>苏州为什么没有机场？</title><link>https://ichon.me/post/1039.html</link><description>&lt;blockquote&gt;
&lt;p&gt;GDP全国第六、制造业全国领先、常住人口超千万——苏州几乎什么都有，就是没有一座民用机场。这背后的原因，远比"空域不够用"复杂得多。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;一座"不该没有机场"的城市&lt;/h2&gt;
&lt;p&gt;苏州，地处长三角核心腹地，2025年GDP预计达到2.77万亿元，位居全国城市第六、江苏第一。全国领先的制造业集群、超过150家世界500强企业的投资项目、一千多万常住人口、旺盛的商务与货运航空需求——按照全球主要经济体的一般经验，这样体量的城市，几乎必然拥有至少一座民用机场，无论是独立的区域枢纽，还是大都市圈的辅助机场。&lt;/p&gt;
&lt;p&gt;然而，苏州没有民用机场。不仅现在没有，而且在可以预见的十到二十年内，获批建设的可能性也极为渺茫。&lt;/p&gt;
&lt;p&gt;截至2026年初，苏州的民航机场蓝图仍停留在"研究论证阶段"——熟悉中国行政话语的人都知道，这基本等于"搁置"。与此同时，周边的机场格局已经形成了一个完整的包围圈：东有上海虹桥和浦东，西有无锡硕放，南有嘉兴南湖（2025年12月通航），北有规划中的南通新机场，更远处还有南京禄口、常州奔牛……网友调侃苏州有"梅友机场"（谐音"没有机场"），段子背后是千万市民和众多企业的真实不便。&lt;/p&gt;
&lt;p&gt;苏州市政府不是没有努力。通用机场（选址在常熟沙家浜与昆山巴城交界处，A1级）已列入2026年江苏省重大项目清单，规划跑道1600米，力争年底建成。但通用机场主要服务低空经济、飞行培训和短途运输，跟大家期待的民航客运完全是两回事。&lt;/p&gt;
&lt;p&gt;那么问题来了：到底是什么，让中国经济实力最强的地级市之一，连一座民航机场都修不起来？&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;"空域太挤"只是表面原因&lt;/h2&gt;
&lt;p&gt;最常听到的解释是空域拥挤。苏州地处中国航路最密集的区域，东侧80公里是虹桥和浦东（两座机场2024年合计旅客吞吐量超1.35亿人次），西侧20公里是无锡硕放，辖区内的光福机场还是现役军用机场。据业内估算，苏州周边空域航班时刻饱和度已超90%。&lt;/p&gt;
&lt;p&gt;但仔细审视，这个理由没有那么铁板钉钉。&lt;/p&gt;
&lt;h3&gt;空域管制本身就是制度问题&lt;/h3&gt;
&lt;p&gt;中国的空域由军方统一管控，民航需要向军方"申请使用"。分配给民用航空的空域比例大约20%—30%，远低于美国（约80%）和欧洲（70%—80%）。也就是说，不是天上真的挤不下，而是管理体制没有把足够的空间释放出来。理论上存在的空域容量，因为制度原因没有被充分利用。&lt;/p&gt;
&lt;h3&gt;珠三角就是最好的反例&lt;/h3&gt;
&lt;p&gt;广州白云、深圳宝安、香港国际机场三座大型机场几乎排成一条直线，深港之间直线距离仅约40公里，三座机场年总客流接近1.9亿人次。虹桥机场往西40公里仅到昆山，到苏州吴江约60公里。如果珠三角能在40公里距离内运营两座国际机场，凭什么长三角在60公里开外就完全没有可能？&lt;/p&gt;
&lt;h3&gt;光福军用机场的"锁死效应"&lt;/h3&gt;
&lt;p&gt;苏州其实曾在上世纪90年代依托光福机场开通过北京和佛山的民航航线，后来因军队停止经商政策而停航。光福机场的军事用途使得周边大范围区域的空域被划为军事管制区，而地方政府对军方事实上没有任何议价能力。这把苏州最有希望的一条路彻底堵死了。&lt;/p&gt;
&lt;h3&gt;"全国一盘棋"的规划思维&lt;/h3&gt;
&lt;p&gt;从国家层面的规划逻辑来看，方圆200公里内，虹桥、浦东、硕放、禄口、奔牛、嘉兴、南通……机场已经密密麻麻。规划者看来，苏州距最近的机场20公里、到虹桥高铁仅25分钟，再建新的是"重复建设"。&lt;/p&gt;
&lt;p&gt;但这种规划只考虑了"运力覆盖"这单一维度。它忽略了两件事：第一，跨行政区使用机场的实际便利度远低于纸面距离所暗示的水平；第二，机场作为产业链锚点的经济带动效应。这两点，下面会详细展开。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;机场远不只是一条跑道&lt;/h2&gt;
&lt;p&gt;很多人觉得"苏州到虹桥高铁才25分钟，何必自己建"。但机场的价值远不止起降飞机——它是整条临空产业链的"锚点"，围绕机场形成的产业集群，经济规模往往数倍于机场本身的运营收入。&lt;/p&gt;
&lt;p&gt;苏州因缺乏机场而系统性地缺失了以下产业环节：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;临空经济区。&lt;/strong&gt; 郑州依托新郑机场建设的航空港经济区，已形成覆盖电子信息、生物医药、航空物流等领域的千亿级产业集群。苏州的产业基础和区位条件不逊于郑州，但没有机场这个锚点，根本无从发展类似的临空经济体。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;航空货运和物流枢纽。&lt;/strong&gt; 苏州是全国制造业重镇，大量高附加值产品——芯片、精密仪器、生物医药制品——对航空货运有旺盛需求。目前这些需求全部绕道上海浦东，增加了可观的时间成本和中间环节费用。若苏州有自己的货运机场，完全有条件发展为长三角的专业化航空物流枢纽。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;航空维修（MRO）。&lt;/strong&gt; 飞机维修检测是高技术壁垒、高利润率的产业，一个大型MRO基地年产值可达数十亿到百亿级。厦门、成都、广州都在积极布局。苏州有充足的工程师资源和精密制造配套，但没有跑道就没戏。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;公务航空。&lt;/strong&gt; 苏州外企密度位居全国前列，高管出行、商务差旅对公务航空有天然需求。拥有FBO（公务机基地）对招商引资的吸引力截然不同。现在这些需求全部外溢到虹桥公务机基地。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;航空培训与航材制造。&lt;/strong&gt; 苏州的高等院校资源和产业工人基础完全可以支撑飞行培训、航空器材制造等上下游产业。但核心节点不在自己地盘上，上下游配套自然不会来聚集。&lt;/p&gt;
&lt;p&gt;这些损失是&lt;strong&gt;隐性的、持续的&lt;/strong&gt;——永远无法精确统计"有多少投资因为苏州没有机场而选择了别处"，但它确实在发生。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;真正的病根：财税制度下的城市零和博弈&lt;/h2&gt;
&lt;p&gt;要理解苏州为什么建不了机场，必须理解中国地方政府的钱从哪来。&lt;/p&gt;
&lt;p&gt;1994年分税制改革确立了中央与地方的税收分成框架。在这个框架下，地方政府的主要收入来源包括：增值税地方留成、企业所得税地方留成、土地出让金，以及各类行政性收费。其中，&lt;strong&gt;增值税和企业所得税高度依赖属地企业的生产经营规模&lt;/strong&gt;，&lt;strong&gt;土地出让金则直接与土地开发强度挂钩&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一座机场落在哪个城市，直接决定了谁拿到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;临空产业链的增值税收入&lt;/li&gt;
&lt;li&gt;入驻企业的所得税&lt;/li&gt;
&lt;li&gt;临空经济区的土地出让收入&lt;/li&gt;
&lt;li&gt;还有最关键的——&lt;strong&gt;GDP数字&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后这一点值得展开说。自上世纪80年代以来，GDP增速和财税收入逐渐成为地方官员晋升的核心考量指标——学界将这一机制概括为"晋升锦标赛"。在这套激励结构下，每位市委书记和市长都有充分的理性动力把本市经济规模做到最大。一个大项目落地他市而非本市，不仅是财政损失，更是&lt;strong&gt;政治前途的损失&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;所以各城市拼命抢项目不是贪心，而是&lt;strong&gt;财政生存和政治生存的双重理性选择&lt;/strong&gt;。地方的支出责任（教育、医疗、社保、基建等）远超常规财政收入，不争取增量资源意味着财政持续承压。&lt;/p&gt;
&lt;h3&gt;美国的税制为什么没这么卷？&lt;/h3&gt;
&lt;p&gt;对比来看，美国地方政府的收入结构完全不同：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不动产税（Property Tax）&lt;/strong&gt; 是大多数美国地方政府最主要的收入来源。税基是辖区内不动产的评估价值，跟辖区内企业的产出规模没有直接关系。隔壁城市建了座机场，不会显著影响本市的不动产税税基。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;消费税（Sales Tax）&lt;/strong&gt; 是第二大来源。按消费发生地征收，经济活动外溢自然惠及周边——机场旅客在你的城市消费，消费税自动归你。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;所得税？&lt;/strong&gt; 绝大多数美国城市不征地方所得税。企业利润规模与城市财政没有直接挂钩。&lt;/p&gt;
&lt;p&gt;这套税制结构的关键效果是：&lt;strong&gt;大型项目的选址对周边城市的财政冲击远小于中国。&lt;/strong&gt; 项目不在本市，核心税基（不动产价值）不受直接影响，消费外溢效应通过市场自然分配。因此美国城市缺乏激烈争抢大型项目的制度性动力。&lt;/p&gt;
&lt;p&gt;而且美国地方政府的&lt;strong&gt;事权范围有限&lt;/strong&gt;。教育归独立学区并独立征税，公共交通归专门机构，医保社保是联邦/州层面的事。城市政府管的就是治安、消防、垃圾收运、本地道路维护这些社区事务。&lt;strong&gt;事权有限→对钱的渴求有限→城市间竞争烈度自然低。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;中国正好反过来：地方政府啥都管，啥都要钱，每个项目都是必争之地。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;城市"诸侯化"：名义集权，实际割据&lt;/h2&gt;
&lt;p&gt;到这里，一个深刻的悖论浮出水面：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;中国名义上实行集权统一制度，但城市之间的经济割据程度，远超名义上实行地方自治的西方国家。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;从表面看，中国的体制是自上而下的集权——中央管省、省管市、市管区县，官员由上级任命而非选举产生。但在经济运行层面，每座城市实际上高度独立：独立的财政预算和决算、独立的招商引资策略和优惠政策、独立的土地利用规划、独立的基建议程、独立的GDP统计和考核。&lt;/p&gt;
&lt;p&gt;而美国的城市恰恰相反——"政治上独立自治，经济上高度融合"。市长自己选的，但人口、资本、企业自由流动，行政边界在经济运行中被市场不断"冲刷"，趋于透明化。&lt;/p&gt;
&lt;p&gt;中国的城市则是"政治上服从上级，经济上各自为战"。官员由上级任命，缺乏政治自主权；但在经济利益驱动下，每座城市都成为自利的竞争主体，行政边界变成利益的护城河。户籍制度更把人口与城市行政区划绑定，城市边界不只是行政线，实质上是&lt;strong&gt;福利、教育、医疗等公共服务的围墙&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;打个比方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;美国的城市&lt;/strong&gt;像一座商场里的不同店铺——各自经营，但共享客流和通道，店铺间的隔断是低矮的甚至不存在的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中国的城市&lt;/strong&gt;像一排独立商场——各有停车场、会员体系和围墙，名义上归同一集团管，但彼此之间更像竞争对手。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;行政边界对日常生活的阻碍&lt;/h3&gt;
&lt;p&gt;这种割据不是抽象概念，它有非常具体的体感：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;跨市交通的协调成本。&lt;/strong&gt; 苏州地铁11号线延伸至昆山花桥站，与上海地铁11号线仅一站之隔——这"一站"背后是两座城市（乃至两个省级行政区）之间漫长的谈判。票制不互通、建设资金分摊、运营维护责任划分，每一项都是需要逐一协商的议题。而在东京、纽约等城市，私营或跨区域公共交通机构的运营线路天然跨越行政边界，无需城市间逐一谈判。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;城市航站楼的有限作用。&lt;/strong&gt; 苏州市区设了城市航站楼，提供值机和行李托运。但这只解决了出发前环节，旅客仍需自行前往上海或无锡的机场——全程通勤时间往往两小时以上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"断头路"。&lt;/strong&gt; 道路修到行政边界即停止，在中国各城市交界地带极为常见。原因很朴素：道路建设费出自本市财政，延伸到邻市地界意味着自己出钱让别人受益，没有激励。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;最关键的缺失：跨区域协调机制&lt;/h2&gt;
&lt;p&gt;当一个公共事务的边界超出单个城市时，怎么办？在这个问题上，中美之间的制度差距是最根本性的。&lt;/p&gt;
&lt;h3&gt;美国的做法：问题在哪，建机构到哪&lt;/h3&gt;
&lt;p&gt;美国有一套层次分明的跨界治理体系：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;城市之间——特别目的区（Special Purpose District）。&lt;/strong&gt; 由州法律授权设立，具有独立于任何城市政府的法人地位、治理结构和征税权。全美现有约3.8万个，覆盖供水、排污、消防、公园、交通、港口等几乎所有跨城市公共服务领域。核心特征：&lt;strong&gt;治理边界按功能需求划定，而非按照既有的行政边界。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;州与州之间——州际协定机构（Interstate Compact Agency）。&lt;/strong&gt; 由两个或多个州通过正式协定设立，有时需国会批准。代表性案例包括纽约-新泽西港务局、特拉华河流域委员会、华盛顿都市区交通管理局（WMATA）等。这些机构在各自职责范围内拥有独立的决策权、财政权和执行权。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;全国层面——联邦条件性拨款。&lt;/strong&gt; 联邦法律强制要求人口超过5万的城市化区域设立都市规划组织（MPO），联邦交通拨款&lt;strong&gt;必须通过MPO分配&lt;/strong&gt;。你要拿联邦的钱，就得参与区域统筹规划，且项目必须与区域整体规划一致。用资金引导合作，而非行政命令强制。&lt;/p&gt;
&lt;p&gt;背后的设计原则非常清晰：&lt;strong&gt;问题的边界在哪里，治理的边界就在哪里。&lt;/strong&gt; 行政区划服务于治理需要，而非治理被行政区划束缚。&lt;/p&gt;
&lt;h3&gt;一个标杆案例：西雅图机场&lt;/h3&gt;
&lt;p&gt;SeaTac机场由 Port of Seattle 拥有和运营。Port of Seattle 是依据华盛顿州法律设立的独立政府实体，拥有选民直选产生的五人委员会，&lt;strong&gt;完全独立于西雅图市政府和塔科马市政府&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它有独立征税权（向King County范围内的不动产所有者征收专项税），收入来源还包括航空公司的起降费、旅客设施使用费、商业租赁、停车等。作为政府实体免征联邦和州所得税，全部收入用于自身运营和基建。&lt;/p&gt;
&lt;p&gt;机场虽然物理上坐落在SeaTac市境内，但经济利益通过市场自动分配到整个大西雅图都会区：周边酒店为SeaTac市贡献酒店税和商业不动产税；大量旅客在西雅图市区消费，贡献消费税；货运物流沿南部走廊分布，惠及塔科马。&lt;strong&gt;这个分配是自动发生的，不需要任何行政谈判。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;连接机场的Link轻轨由 Sound Transit 运营——又是一个覆盖整个都会区的独立跨区域交通机构，线路规划不受任何单一城市边界约束。&lt;/p&gt;
&lt;p&gt;在这套制度下，根本不存在"哪个市长要把机场争到自己辖区"的问题——&lt;strong&gt;机场选址可以纯粹基于技术和功能的最优考量，而非政治博弈的结果。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;另一个案例：纽约-新泽西港务局&lt;/h3&gt;
&lt;p&gt;Port Authority of New York and New Jersey 成立于1921年，统一管理纽约和新泽西两州之间的核心交通设施：JFK国际机场、拉瓜迪亚机场、纽瓦克机场、跨哈德逊河隧道和桥梁、PATH轨道交通，以及曾经的世贸中心。&lt;/p&gt;
&lt;p&gt;治理结构设计精巧：两州各任命6名委员，各州州长保留否决权，财政独立，以过桥过隧收费和机场运营收入为主，不依赖任何一个州的拨款——确保决策不被某一方利益俘获。&lt;/p&gt;
&lt;p&gt;设想一下：如果长三角存在一个类似的"沪苏港务局"，由上海和江苏共同设立，独立管理区域内的航空资源——虹桥、浦东和一座可能新建于苏州的机场——那么资源配置将有可能基于区域整体最优，而非单个城市的利益最大化。&lt;/p&gt;
&lt;p&gt;但在中国现有制度环境中，这样一个机构面临根本性障碍：一把手由谁任命？税收计入哪座城市的GDP？出了问题谁担政治责任？跨省人事怎么安排？——每一个问题都是难以逾越的难关。&lt;/p&gt;
&lt;h3&gt;中国的做法：开会、发文件、继续研究&lt;/h3&gt;
&lt;p&gt;中国面对跨区域问题，主要靠三招：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;上级协调。&lt;/strong&gt; 省里召集开会协商。效果取决于省级领导个人重视程度和协调意愿，而且省会城市的利益往往优先于普通地级市。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;领导小组与联席会议。&lt;/strong&gt; 比如长三角一体化发展领导小组。它们属于"协调机制"而非"执行实体"——可以开会、发文件、提倡议，但没有独立预算、人事和执行权力。落实效果取决于各方配合意愿。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;行政区划调整。&lt;/strong&gt; 合并城市或代管——济南吞莱芜、成都代管简阳。特定情况下有效，但适用范围有限（总不能让上海合并苏州），且本质上是在&lt;strong&gt;回避问题&lt;/strong&gt;（消除边界）而非&lt;strong&gt;解决问题&lt;/strong&gt;（建立跨边界协调机制）。&lt;/p&gt;
&lt;p&gt;根本上，中国缺少一种让地方政府&lt;strong&gt;合法地、可信地&lt;/strong&gt;向独立第三方机构让渡部分权力的制度通道。在美国，这个通道由州宪法和联邦法律提供，有法院做最终裁判。在中国，由于权力来源单一、法治框架对地方自治和跨区域治理的规定不健全，这个通道尚不存在。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;谁不希望苏州有机场？&lt;/h2&gt;
&lt;p&gt;不需要任何阴谋论，把利益格局摊开看就够了。&lt;/p&gt;
&lt;h3&gt;上海：最大的利益相关方&lt;/h3&gt;
&lt;p&gt;上海是苏州机场缺位的最大受益者。虹桥和浦东两大机场不仅带来直接的运营收入，更关键的是锚定了一整条临空产业链——浦东周边的自贸区、物流园区、免税经济体等年产值数千亿。苏州的航空客运和货运需求全部流向上海，为虹桥商务区和浦东临空经济区提供了稳定的需求支撑。&lt;/p&gt;
&lt;p&gt;当浦东容量趋于饱和需要建"第三机场"时，上海选择了北侧的南通而非西侧的苏州。逻辑不完全是技术性的（南通在空域方向上确实冲突较小），更是战略性的：&lt;strong&gt;南通经济体量有限，乐于接受上海机场集团的运营主导，实质上充当"卫星机场"。而苏州的经济地位决定了它不太可能接受附属定位——一旦拥有独立民航机场，很可能迅速发展出独立枢纽能力，反过来与上海竞争。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;上海在国家层面的话语权远大于苏州（直辖市 vs 地级市），涉及空域调整、航权分配等关键决策时，上海的意见往往具有决定性影响。&lt;/p&gt;
&lt;h3&gt;无锡：硕放机场的"隐形补贴"&lt;/h3&gt;
&lt;p&gt;无锡硕放机场的旅客中有相当比例来自苏州。苏州如果有了自己的机场，硕放客流将大幅下滑。维持苏州"无机场"的现状，等于无锡持续享受一笔免费的客流补贴。&lt;/p&gt;
&lt;h3&gt;省级层面的博弈均衡&lt;/h3&gt;
&lt;p&gt;江苏省内批准苏州建机场将打破现有利益均衡：无锡（硕放受威胁）和南京（禄口地位相对下降）都不会积极支持。面对一个只有苏州获益但可能引发多方不满的决策，省级政府最理性的选择往往是维持现状——"继续研究论证"。&lt;/p&gt;
&lt;h3&gt;结构性的囚徒困境&lt;/h3&gt;
&lt;p&gt;这是经典的囚徒困境：从长三角整体最优角度看，苏州拥有机场可能提升区域总体经济产出和资源配置效率。但从每个城市各自立场看，苏州没有机场意味着自己可以多获取一份利益——至少不会因苏州的竞争而失去既有利益。&lt;/p&gt;
&lt;p&gt;在缺乏强制性协调机制的情况下，每个理性主体做出对自己最有利的选择，合力产出的结果就是集体次优——苏州机场无限期搁置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不需要任何方之间存在显性的阴谋或阻挠协议——制度结构本身，就自动把各方利益排列成了阻碍苏州的格局。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;其他国家怎么解决类似问题？&lt;/h2&gt;
&lt;p&gt;放到全球视野来看，各国应对跨区域治理难题的方式各有特色：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;美国：为问题建机构。&lt;/strong&gt; 特别目的区、州际机构、联邦条件性拨款，层次丰富、灵活针对。缺点是机构太多也有协调成本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;日本：中央统筹 + 私企跨界。&lt;/strong&gt; 国土交通省统一规划全国交通网络，同时独特的私铁体系（东急电铁、小田急电铁等）以盈利为导向跨越多个城市运营铁路，并沿线开发住宅商业，形成"铁路+不动产"的商业模式。线路覆盖范围完全不受行政边界约束，纯粹按市场需求规划。这对中国尤其有参考价值——如果允许市场化的混合所有制交通企业跨城运营，能从根本上缓解行政边界对交通衔接的阻碍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;德国：宪法化的财政均衡。&lt;/strong&gt; 财政均衡制度（Finanzausgleich）通过宪法层面的公式化安排，自动实现联邦各州之间的财政转移，不依赖个案协商。公式的透明性和制度化保证了利益分配的可预期性，减少零和博弈心态。此外基本法还规定了若干"联合任务"——从宪法层面确认某些公共事务天然跨界，需要制度化合作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;法国：极致中央集权。&lt;/strong&gt; 巴黎规划，地方执行。没有协调成本，但地方活力也不足。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;中国在这张图谱上的位置极其特殊：同时缺乏几乎所有已知的缓冲机制，同时拥有世界上最强的激化地方竞争的制度驱动力（GDP晋升锦标赛）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;其他国家即使某些方面不如中国，至少有两三种缓冲工具来限制地方割据的程度。中国的情况可以形容为：油门踩到底，刹车全部失灵。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;为什么改不了？&lt;/h2&gt;
&lt;p&gt;看到这里你可能会想：问题都分析得这么清楚了，改就是了。但往哪改？&lt;/p&gt;
&lt;h3&gt;往集权改？&lt;/h3&gt;
&lt;p&gt;把经济管理权全部收归中央统一配置？听起来直觉，但面临重重障碍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;信息管不了。&lt;/strong&gt; 600多个城市、2800多个县，每个地方经济结构各异。中央不可能掌握做出每一项地方经济决策所需的全部信息——这是所有计划经济体制的根本瓶颈。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;激励搞不定。&lt;/strong&gt; 现行分权虽然导致割据，但也创造了强大的发展动力。如果地方财政与本地经济发展脱钩，官员发展经济的积极性会急剧下降。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;执行力不够。&lt;/strong&gt; 中央政府的行政编制难以支撑对全国经济运行的直接管理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史的教训。&lt;/strong&gt; 大跃进的惨痛经历、计划经济时代的效率低下，都是前车之鉴。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;往市场化改？&lt;/h3&gt;
&lt;p&gt;让市场来配置资源，政府退出直接管控？障碍同样深重：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;权力让渡的悖论。&lt;/strong&gt; 市场化意味着政府放权，而做"放权"决定的恰恰是当前权力的持有者。从中央到地方每一级，都缺乏主动削减自身权力的激励。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;土地财政的路径依赖。&lt;/strong&gt; 土地出让金占很多城市收入的30%—50%。替代税源（如房产税）未全面建立之前，贸然改革可能引发大面积财政危机。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国企体系。&lt;/strong&gt; 能源、通信、金融、交通、土地开发等关键领域由大型国企控制，涉及数千万就业和庞大利益网络。俄罗斯90年代"休克疗法"式私有化造成的寡头横行和社会动荡，始终是反面教材。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;法治基础设施欠缺。&lt;/strong&gt; 市场经济需要独立司法、透明监管和健全社保。制度基础不完善时推进市场化，结果可能不是欧美式市场经济，而是权贵资本主义。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;社会稳定的考量。&lt;/strong&gt; 完全市场化必然伴随优胜劣汰，当前社保网络尚不足以充分缓冲冲击。维护社会稳定在执政优先序中的位置，使得任何可能引发大规模动荡的改革都面临极高的政治门槛。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;于是卡在中间&lt;/h3&gt;
&lt;p&gt;既不能完全集权，也不能完全市场化。当前的状态——"不完美但勉强运转"——是各方力量博弈后的一种次优均衡。&lt;/p&gt;
&lt;p&gt;苏州那座建不起来的机场，以及无数类似的跨区域资源错配案例，正是这个次优均衡所必须承受的&lt;strong&gt;系统性摩擦成本&lt;/strong&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;苏州没有民用航空机场，不是城市规划者的疏忽，不是空域的物理极限，更不是经济实力不够——恰恰相反，苏州是中国最需要机场的城市之一。&lt;/p&gt;
&lt;p&gt;这个困局是多重制度因素叠加的结果：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;军方主导的空域管制&lt;/strong&gt;压缩了民航可用空域，放大了技术障碍。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;依赖属地产出的财税制度&lt;/strong&gt;与&lt;strong&gt;GDP驱动的官员考核&lt;/strong&gt;共同驱动了城市间的零和博弈。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨界独立机构的制度缺失&lt;/strong&gt;使得跨区域资源统筹缺乏有效载体。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;周边城市的利益格局&lt;/strong&gt;形成了结构性的囚徒困境，现状维持成为各方的纳什均衡。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;行政边界对要素流动的阻碍&lt;/strong&gt;使得"共享"邻近机场的体验远低于合理预期。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;国际比较显示，其他国家通过跨界独立机构、制度化的财政均衡、联邦条件性拨款、市场化跨界运营等工具来缓解类似问题。中国的特殊之处在于&lt;strong&gt;同时缺乏绝大多数已知的缓冲机制，同时拥有最强烈的激化地方竞争的制度驱动力&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;苏州那座永远建不起来的民用机场，不是一个城市的遗憾，而是中国治理体制深层矛盾的一个沉默注脚——也是理解中国地方治理运行逻辑的一把钥匙。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;本文基于2026年3月的公开信息和制度分析写就。文中观点旨在提供制度比较与分析视角，不代表对任何具体政策的价值立场。&lt;/em&gt;&lt;/p&gt;</description><pubDate>Tue, 24 Mar 2026 17:03:19 -0000</pubDate></item><item><title>小米手环5模拟小区加密门禁卡</title><link>https://ichon.me/post/1038.html</link><description>&lt;p&gt;之前写过一篇&lt;a href="/post/1030.html"&gt;利用 PN532 复制小区门禁卡&lt;/a&gt;，前段时间买了个&lt;a href="https://www.mi.com/shouhuan5/nfc?product_id=1202300011"&gt;小米手环5NFC版&lt;/a&gt;，内置了 NFC 门禁卡功能，如果可以将门禁卡直接写入小米手环，那就可以实现彻底不用带门禁卡了。&lt;/p&gt;
&lt;p&gt;然而，由于小米手环默认不支持加密门禁卡的复制，其原理是检测门禁卡中是否有加密扇区，只要检测到加密扇区就会提示该门禁卡为加密门禁卡，不支持复制。因此需要采取一些手段绕过这个限制。&lt;/p&gt;
&lt;h2&gt;绕开加密门禁卡模拟限制的思路&lt;/h2&gt;
&lt;p&gt;小米手环提供了两种复制门禁卡的方式：一是生成一张 ID 随机的空白卡，然后可以在剩余扇区写入门禁卡数据；二是复制一张已有的门禁卡，ID 完全一样，但是必须是未加密的卡片否则无法复制。&lt;/p&gt;
&lt;p&gt;这里我选择的是第二种方式，只有这种方式可以获得一张跟原来的卡一模一样的门禁卡（ID完全相同），所以只要将原卡变成未加密的卡，就可以绕开限制在小米手环上进行复制操作。等到小米手环成功复制了原卡的 ID 之后，再将剩余的加密数据写入就能实现再小米手环上模拟加密门禁卡的目的。&lt;/p&gt;
&lt;h2&gt;硬件准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;PN532 读卡器模块 + CH340G TTL 转 USB 连接线&lt;/li&gt;
&lt;li&gt;一张0扇区可写的空白 UID 卡&lt;/li&gt;
&lt;li&gt;Windows 电脑&lt;/li&gt;
&lt;li&gt;小米手环5 NFC版（或者其他支持 NFC 的小米手环）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;软件准备&lt;/h2&gt;
&lt;p&gt;之前复制门禁卡的操作中我用的是 Raspberry Pi + &lt;a href="https://github.com/nfc-tools/mfoc"&gt;mfoc&lt;/a&gt;, 但是后来我发现 &lt;a href="https://github.com/xcicode/MifareOneTool"&gt;MifareOneTool&lt;/a&gt; 功能非常齐全而且 UI 很友好，所以这次我决定直接在 Windows 上使用 MifareOneTool。&lt;/p&gt;
&lt;h2&gt;Dump原卡数据&lt;/h2&gt;
&lt;p&gt;将 PN532 通过 TTL 转 USB 连接线（CH340G）连接到 Windows 电脑，使用 MifareOneTool 的 &lt;strong&gt;一键解原卡&lt;/strong&gt; 功能将门禁卡数据 dump 出来，如果遇到加密扇区会尝试进行破解，时间会稍微久一些，耐心等待即可。&lt;/p&gt;
&lt;h2&gt;生成一张未加密卡&lt;/h2&gt;
&lt;p&gt;将上一步 dump 出来的文件复制一份，使用 MifareOneTool 自带的Hex编辑器打开，将其中所有的加密扇区删除或者修改成未加密的，然后将修改后的数据通过 MifareOneTool 的 &lt;strong&gt;写UID卡&lt;/strong&gt; 功能写入事先准备的0扇区可写的空白卡。这样我们就获得了一张 ID 与原卡相同但是未包含任何加密扇区的卡。&lt;/p&gt;
&lt;h2&gt;在小米手环上复制未加密卡&lt;/h2&gt;
&lt;p&gt;打开小米运动 app，选择门卡模拟，然后选择 &lt;strong&gt;非加密卡模拟&lt;/strong&gt;，将刚才生成的非加密卡复制到小米手环中，这样我们就在小米手环里创建了一张 ID 与原卡相同但是未包含原卡加密数据的卡，同时也绕开了小米手环无法模拟加密卡的限制。&lt;/p&gt;
&lt;h2&gt;将原卡的加密数据写入小米手环&lt;/h2&gt;
&lt;p&gt;将模拟了门卡的小米手环放在 PN532 模块上，再次使用 MifareOneTool 的 &lt;strong&gt;写普通卡&lt;/strong&gt; 功能将事先 dump 出来的 &lt;strong&gt;未修改的&lt;/strong&gt; 原卡数据直接写入小米手环，由于需要小米手环保持在刷卡模式，所以有时候会写入失败，没关系多试几次总能成功。&lt;/p&gt;
&lt;p&gt;如果一切顺利，我们就成功将加密门禁卡的全部扇区（包括0扇区和所有加密扇区）写入了小米手环，去刷门禁试试吧。&lt;/p&gt;</description><pubDate>Tue, 09 Mar 2021 12:43:30 -0000</pubDate></item><item><title>Xbox One X 升级内置硬盘</title><link>https://ichon.me/post/1037.html</link><description>&lt;p&gt;前几日入了一块鱼竿厂的白菜价 1.5TB SSD，虽然性能和耐久程度未知，胜在有五年质保，用来作为游戏盘再合适不过了，于是开始着手研究如何给 Xbox One X 更换 SSD。
Xbox One X 的拆机过程不再赘述，ifxit 上已经给出了详尽的&lt;a href="https://zh.ifixit.com/Guide/Xbox+One+X+%E5%86%85%E7%BD%AE%E7%A1%AC%E7%9B%98%E6%9B%B4%E6%8D%A2%E6%8C%87%E5%8D%97/124893"&gt;教程&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;将原硬盘取出后，试着用网上的 &lt;a href="https://gbatemp.net/threads/xbox-one-internal-hard-drive-upgrade-or-repair-build-any-size-drive-that-works-on-any-console.496212/"&gt;Xbox 分区脚本&lt;/a&gt;将原硬盘中的数据无痛迁移到新硬盘中，但是最终试验的效果不理想，机器总是有奇怪的故障，所以只好放弃。&lt;/p&gt;
&lt;p&gt;于是考虑用官方的系统恢复工具对硬盘进行分区，从官网下载 &lt;a href="http://www.xbox.com/xboxone/osu1"&gt;OSU1&lt;/a&gt;。解压缩后，将 &lt;code&gt;$SystemUpdate&lt;/code&gt; 目录整体拷贝到一个空的U盘中，将U盘插上游戏机，安装好新的硬盘，开机。这时候由于新硬盘尚未分区，因此会出现报错页面，打开界面上的 Troubleshoot 工具，然后选择 Offline system update。稍等一会儿，游戏机会自动重启，然后就能看到游戏机的初始化界面了。&lt;/p&gt;
&lt;p&gt;所以到这里就结束了吗？非也。由于我的 SSD 是 1.5TB 容量，而 Xbox 并没有对应容量的官方版本，因此这块 SSD 会被当作 1TB 硬盘进行分区，实测可用容量也就 700 多 GB，相当于剩下的容量都被浪费掉了。&lt;/p&gt;
&lt;p&gt;因此，这个时候需要将 SSD 拆下来，然后使用硬盘盒连接到 Windows 电脑上，从 Windows 磁盘管理里可以看到目前的分区表大致是这样的：
&lt;pre&gt;
Temp Content/41 GB
User Content/781 GB
System Support/40 GB
System Update/12 GB
System Update 2/7 GB
Unallocated/460 GB
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;其中 User Content 分区是 Xbox 存放游戏的分区，当然希望容量越大越好，然而 User Content 分区位于硬盘的第二个分区，与硬盘末尾的未分配空间不连续，因此无法直接扩容。所以我想了个办法，将各个分区的内容进行备份，然后对除了第一个分区 Temp Content 以外的各个分区进行调整，调整完之后的分区表如下：
&lt;pre&gt;
Temp Content/41 GB
System Support/40 GB
System Update/12 GB
System Update 2/7 GB
User Content/781 GB
Unallocated/460 GB
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;这时候就可以将 User Content 的分区扩容至所有未分配空间（取整到 1GB），扩容之后的分区表如下：
&lt;pre&gt;
Temp Content/41 GB
System Support/40 GB
System Update/12 GB
System Update 2/7 GB
User Content/1241 GB
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;由于 Xbox 系统使用 GUID 来确定各个分区的位置，这个可以从原硬盘中读取得到，对于 1TB 的硬盘，各个分区对应的 GUID 分别是：
&lt;pre&gt;
Temp Content/B3727DA5-A3AC-4B3D-9FD6-2EA54441011B
User Content/869BB5E0-3356-4BE6-85F7-29323A675CC7
System Support/C90D7A47-CCB9-4CBA-8C66-0459F6B85724
System Update/9A056AD7-32ED-4141-AEB1-AFB9BD5565DC
System Update 2/24B2197C-9D01-45F9-A8E1-DBBCFA161EB2
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;而我对分区进行调整已经改变了原有各个分区的 GUID，这时候可以使用 &lt;a href="https://sourceforge.net/projects/gptfdisk/"&gt;GPT fdisk&lt;/a&gt; 这个工具来将原硬盘各个分区的 GUID 值写入到新硬盘的对应分区。&lt;/p&gt;
&lt;p&gt;GUID 写入完毕后，就可以将之前备份的各个分区的系统文件还原到对应的分区之中，然后将硬盘装回游戏机，再开机，就会发现可用的容量与 User Content 的大小保持一致了。&lt;/p&gt;
&lt;p&gt;p.s. 由于采用了非标准容量的磁盘，切不可在游戏机中执行恢复出厂设置。&lt;/p&gt;</description><pubDate>Sun, 25 Aug 2019 17:27:10 -0000</pubDate></item><item><title>Shadowsocks 配合 bestroutetb 实现智能分流</title><link>https://ichon.me/post/1036.html</link><description>&lt;p&gt;之前虽然在软路由上配好了 shadowsocks 的透明代理，本着生命不息折腾不止的心态，一直想尝试一下国内/国际流量的智能分流。&lt;/p&gt;
&lt;p&gt;基于目的 IP 地址的智能分流目前有两个流派：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/fivesheep/chnroutes"&gt;chnroutes&lt;/a&gt; 的方案很简单直接，提取所有中国的 IP 地址段，只要不在范围内的一律走国际出口。优点是非常精准，配合 &lt;a href="https://github.com/felixonmars/dnsmasq-china-list"&gt;dnsmasq-china-list&lt;/a&gt; 解决掉 DNS 污染之后能够非常准确的对国内/国际流量进行分流。缺点也很明显，中国的 IP 地址段数量太庞大，我试着生成了一下，总共产生了8k条以上的路由表项，实在是多得有点可怕。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ashi009/bestroutetb"&gt;bestroutetb&lt;/a&gt; 项目则提出了一个新的思路，将全球的 IP 地址段分为三类：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一定走国内出口的 IP 段（中国 IP 段）&lt;/li&gt;
&lt;li&gt;一定走国际出口的 IP 段（默认美国/英国/日本/香港 IP 段，可以自定义）&lt;/li&gt;
&lt;li&gt;可以走国内出口也可以走国际出口的 IP 段&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种方式，通过牺牲一部分分流的精度，实现了对路由表项的压缩，我试着生成了一下，默认配置产生的路由表项只剩下了2k多条，如果可以接受更模糊一点的匹配，可以进一步精简路由表项。&lt;/p&gt;
&lt;p&gt;基于这样的对比，很多人都选择使用 bestroutetb 作为智能分流的方案，shadowsocks-libev 的官方文档也推荐了 bestroutetb。然而，这里有一个问题，由于 shadowsocks 透明代理使用防火墙 iptables/nftables 而不是路由表来对目的 IP 地址进行判断实现分流，因此就无法利用防火墙的最长 prefix 匹配规则来对路由表项进行压缩优化。举个例子，以下为 bestroutetb 生成的路由表项：
&lt;pre&gt;
14.0.0.0/8 net
14.0.0.0/12 vpn
14.0.0.0/21 net
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;若目的地址为 &lt;code&gt;14.2.0.1&lt;/code&gt;，由于 &lt;code&gt;14.0.0.0/12&lt;/code&gt; 的 prefix 长度长于 &lt;code&gt;14.0.0.0/8&lt;/code&gt; 因而可以获得更高的匹配优先级，路由结果是国际出口。而对于 shadowsocks 透明代理，由于不能使用路由表，在网上搜了一下，发现大多数人的做法都是只保留其中的国内部分的路由规则，因此路由表项就精简成了：
&lt;pre&gt;
iptables -t nat -A PREROUTING -p tcp -d 14.0.0.0/8 -j RETURN
iptables -t nat -A PREROUTING -p tcp -d 14.0.0.0/21 -j RETURN
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;即，针对所有国内的 IP 地址段，不走国际出口。拿刚才举例子的 IP 地址 &lt;code&gt;14.2.0.1&lt;/code&gt;，由于命中了 &lt;code&gt;14.0.0.0/8&lt;/code&gt; 地址段，因而被识别成了国内 IP，这无疑是不正确的。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ashi009/bestroutetb/issues/22"&gt;bestroutetb 的作者也在 github 上说了&lt;/a&gt;，bestroutetb 算法的核心是通过网段二分化来优化路由表，这种用法会导致无法对路由表进行有效优化，因此是不可取的。&lt;/p&gt;
&lt;p&gt;因而，得出结论：bestroutetb 只适用于路由表，无法用于防火墙规则。&lt;/p&gt;
&lt;p&gt;那么还有什么办法可以让 shadowsocks 也用上 bestroutetb？既然 bestroutetb 只能用于路由表，是不是可以想办法让 shadowsocks 用路由表来分流呢？&lt;/p&gt;
&lt;p&gt;这里 shadowsocks-libev 自带的透明代理就不能满足需求了，需要用到另一个工具 &lt;a href="https://github.com/ambrop72/badvpn/wiki/Tun2socks"&gt;tun2socks&lt;/a&gt;，tun2socks 可以在系统中创建一个虚拟网卡，然后将虚拟网卡的流量导入到 shadowsocks 客户端所提供的 socks proxy中。既然有了虚拟网卡，我们就能很方便的使用路由表来管理流量，从而实现利用 bestroutetb 进行智能分流的目的。&lt;/p&gt;
&lt;p&gt;tun2socks 的安装不再赘述，安装完成后，首先创建一个 tun 虚拟网卡，我给命名为 &lt;code&gt;tun1&lt;/code&gt;：
&lt;pre&gt;
ip tuntap add dev tun1 mode tun user root
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;给虚拟网卡分配地址，可以随便分配一个，但是注意不能跟当前局域网的 IP 地址冲突，我给分配了一个 &lt;code&gt;192.168.2.1&lt;/code&gt;：
&lt;pre&gt;
ip addr add 192.168.2.1 dev tun1
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;启用虚拟网卡 &lt;code&gt;tun1&lt;/code&gt;：
&lt;pre&gt;
ip link set dev tun1 up
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;启动 tun2socks, 根据实际情况填写参数，我的 shadowsocks 客户端监听的是 &lt;code&gt;192.168.1.1:1080&lt;/code&gt;，因而命令行参数是：
&lt;pre&gt;
badvpn-tun2socks --tundev tun1 --netif-ipaddr 192.168.2.1 --netif-netmask 255.255.255.255 --socks-server-addr 192.168.1.1:1080
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;至此，tun2socks 已经可以使用，所有路由到虚拟网卡 tun1 的流量将会被转发至 shadowsocks。&lt;/p&gt;
&lt;p&gt;安装 bestroutetb：
&lt;pre&gt;
npm install -g bestroutetb
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;使用 bestroutetb 生成添加路由规则的脚本：
&lt;pre&gt;
bestroutetb -p custom -o add-routes --rule-format=$'ip route add %prefix/%length dev %gw table ss\n'
--gateway.net=ppp0 --gateway.vpn=tun1 --header=$'#!/bin/sh\n\n'
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;对应的删除路由规则的脚本：
&lt;pre&gt;
bestroutetb -p custom -o del-routes --rule-format=$'ip route del %prefix/%length dev %gw table ss\n'
--gateway.net=ppp0 --gateway.vpn=tun1 --header=$'#!/bin/sh\n\n'
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;由于我并不希望让所有设备都使用这张路由表，因此在每一条路由项后面都加了 &lt;code&gt;table ss&lt;/code&gt;，同时需要将特定来源的 IP 加入这张路由表的白名单之中从而实现源地址路由，因此需要在添加路由规则的脚本中加入：
&lt;pre&gt;
ip rule add from 192.168.1.xx table ss
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;相应的删除路由规则的脚本中也要加入：
&lt;pre&gt;
ip rule del from 192.168.1.xx table ss
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;使用 systemd 以实现自动启动，贴一下我的 &lt;code&gt;tun2socks.service&lt;/code&gt; 文件：
&lt;pre&gt;
[Unit]
Description=Tun2Socks Service
Requires=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStartPre=/usr/sbin/ip tuntap add dev tun1 mode tun user root
ExecStartPre=/usr/sbin/ip addr add 192.168.2.1 dev tun1
ExecStartPre=/usr/sbin/ip link set dev tun1 up
ExecStart=/usr/local/bin/badvpn-tun2socks --tundev tun1 --netif-ipaddr 192.168.2.1 --netif-netmask 255.255.255.255 --socks-server-addr 192.168.1.1:1080
ExecStartPost=/usr/local/bin/add-routes
ExecStopPost=/usr/local/bin/del-routes
ExecStopPost=/usr/sbin/ip link del dev tun1
[Install]
WantedBy=multi-user.target
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;启用 &lt;code&gt;tun2socks.service&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;
systemd enable tun2socks
systemd start tun2socks
&lt;/pre&gt;</description><pubDate>Tue, 13 Aug 2019 17:23:13 -0000</pubDate></item><item><title>HPE Microserver Gen10 安装 Debian 10 的一些问题</title><link>https://ichon.me/post/1035.html</link><description>&lt;p&gt;之前说到买了台 HPE Microserver Gen10 当作家用服务器和软路由使用，装的系统是最新的 Debian 10 buster，然而在安装和配置的过程中遇到了一些问题，在这里简单记录一下：&lt;/p&gt;
&lt;p&gt;问题1：没有图形显示&lt;/p&gt;
&lt;p&gt;原因：虽然 HPE Microserver Gen10 内置集成显卡，但是默认安装的 Debian 系统缺少相应的驱动&lt;/p&gt;
&lt;p&gt;解决方案：在 GRUB 启动时在内核参数中加入&lt;code&gt;nomodeset&lt;/code&gt;，一劳永逸的解决方案是启用 non-free 软件仓库并安装&lt;code&gt;firmware-linux-nonfree&lt;/code&gt;包。&lt;/p&gt;
&lt;p&gt;问题2：光驱位安装的磁盘可以识别，3.5寸硬盘位安装的磁盘无法识别&lt;/p&gt;
&lt;p&gt;原因：Marvell 88SE9230 SATA 控制器有 bug，在开启 IOMMU 的情况下会无法识别磁盘，而 AMD SATA 控制器无此问题&lt;/p&gt;
&lt;p&gt;解决方案：在 BIOS中 关闭 IOMMU 或者编辑&lt;code&gt;/etc/default/grub&lt;/code&gt;，加入：
&lt;pre&gt;
GRUB_CMDLINE_LINUX="amd_iommo=on iommu=pt"
&lt;/pre&gt;
然后执行&lt;code&gt;update-grub&lt;/code&gt;使之生效。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.debian.org/HP/ProLiant"&gt;HP/ProLiant - Debian Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://andidittrich.de/2019/02/install-debian-stretch-9-8-on-hpe-microserver-gen10.html"&gt;Install Debian Stretch 9.8 on HPE Microserver GEN10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bugzilla.kernel.org/show_bug.cgi?id=42679"&gt;42679 – DMA Read on Marvell 88SE9128 fails when Intel's IOMMU is on&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-a00022034en_us&amp;amp;docLocale=en_US"&gt;Advisory: HPE ProLiant MicroServer Gen10 - Red Hat Enterprise Linux 7 Will Not Boot if the Input/Output Memory Management Unit (IOMMU) Is Enabled Until the amd_iommo=on iommu=pt Boot Parameter is Added to Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://forum.openmediavault.org/index.php/Thread/19388-HP-microserver-Gen10/?postID=155904#post155904"&gt;HP microserver Gen10  - My NAS Build - openmediavault&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Sun, 11 Aug 2019 23:20:41 -0000</pubDate></item><item><title>[考据] 苏州工业园区属于哪个区？</title><link>https://ichon.me/post/1034.html</link><description>&lt;p&gt;众所周知，苏州工业园区跟全国绝大多数开发区一样，并不是一个在民政部登记注册的正式行政区，既然如此，那么，这块区域到底属于哪个区呢？&lt;/p&gt;
&lt;p&gt;要搞清楚这个问题，首先要搞清楚苏州工业园区是怎么来的，按照苏州工业园区管委会的介绍，1994年苏州工业园区成立之时，是将当时苏州市郊区的娄葑，以及当时吴县的跨塘、斜塘、唯亭、胜浦一共五个乡镇划入苏州工业园区范围。2004年，又将吴中区甪直镇的部分区域划入苏州工业园区。按照这个说法，苏州工业园区的大部分地区来源于以前的吴县，但是吴县在2000年的时候就已经被撤销，改设吴中区和相城区。&lt;/p&gt;
&lt;p&gt;那么是不是就可以说苏州工业园区“属于”吴中区或者相城区呢？似乎这是一个很常见的认知，因为市面上的很多地图App都把苏州工业园区归为吴中区，例如，在高德地图搜索吴中区，就会包含苏州工业园区范围：&lt;/p&gt;
&lt;p&gt;&lt;img alt="高德地图把苏州工业园区归为吴中区" src="/uploads/2019/08/1.png" /&gt;&lt;/p&gt;
&lt;p&gt;然而，吴县被撤销时，并非只设立了吴中区（相城区表示不服），因此说苏州工业园区属于吴中区似乎不太能站得住脚。&lt;/p&gt;
&lt;p&gt;行政区划方面的问题，自然要找民政部查证，于是我找到了民政部的全国行政区划信息查询平台，打开苏州市的行政区划图。图中可以看出，苏州工业园区区域是在姑苏区范围，而不是像高德地图显示的那样在吴中区范围：&lt;/p&gt;
&lt;p&gt;&lt;img alt="民政部全国行政区划信息查询平台把苏州工业园区归为姑苏区" src="/uploads/2019/08/2.png" /&gt;&lt;/p&gt;
&lt;p&gt;然而可惜的是，民政部网站只给到县区级的行政区划，因此我们仅凭这张地图并不能判断到底哪些乡镇街道属于什么区。严谨起见，我找到了国家统计局2013年的统计用行政区划代码表（之所有没有用最新的行政区划代码表是因为近几年开始苏州工业园区开始有独立的行政区划代码了），果然，在姑苏区的街道列表里找到了由苏州工业园区管理的各个乡镇街道：娄葑街道、斜塘街道、唯亭街道、胜浦街道和苏州工业园区直属镇（虚级镇，即中新合作区范围的四个社工委）：&lt;/p&gt;
&lt;p&gt;&lt;img alt="苏州工业园区管理的各个街道都在姑苏区的街道列表之中" src="/uploads/2019/08/3.png" /&gt;&lt;/p&gt;
&lt;p&gt;到这里就很明确了，苏州工业园区下属的四个街道和一个镇，都登记在姑苏区名下，然后由苏州市政府的派出机构苏州工业园区管委会行使行政管理职能。这也能解释，为什么每次人大代表选举，苏州工业园区的各个选区都要算作姑苏区的选区，毕竟苏州工业园区不是一个正式的行政区，自然就不会有单独的人民代表大会和人民政府（园区管委会只能算派出机构，而不是人民政府）。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sipac.gov.cn/zjyq/xzqh/201903/t20190308_1003952.htm"&gt;苏州工业园区管理委员会 区划沿革&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xzqh.mca.gov.cn/defaultQuery?shengji=%BD%AD%CB%D5%CA%A1%28%CB%D5%29&amp;amp;diji=%CB%D5%D6%DD%CA%D0&amp;amp;xianji=-1"&gt;中华人民共和国民政部 全国行政区划信息查询平台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2013/32/3205.html"&gt;中华人民共和国国家统计局 2013年统计用区划代码&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 09 Aug 2019 00:20:14 -0000</pubDate></item><item><title>使用 Debian 服务器作为家庭网关</title><link>https://ichon.me/post/1033.html</link><description>&lt;p&gt;前一段时间买了台 HPE Microserver Gen10，考虑到这货有两块千兆网卡，总觉得不把它当成路由器/网关来用有点浪费，于是忍不住拆掉了原来的 EdgeRouter X，开始折腾软路由。&lt;/p&gt;
&lt;h2&gt;基础配置&lt;/h2&gt;
&lt;h3&gt;连接&lt;/h3&gt;
&lt;p&gt;Microserver Gen10 有两块网卡，在 Debian 中分别对应 &lt;code&gt;enp2s0f0&lt;/code&gt; 和 &lt;code&gt;enp2s0f1&lt;/code&gt;，这里我将 &lt;code&gt;enp2s0f0&lt;/code&gt; 作为LAN口，连接到家里的交换机，用于连接各种有线设备和无线AP；另一个 &lt;code&gt;enp2s0f1&lt;/code&gt; 作为WAN口，连接到光猫。&lt;/p&gt;
&lt;h3&gt;系统&lt;/h3&gt;
&lt;p&gt;没什么好说的，习惯用 Debian，其他主流 Linux 发行版应该都可以用。不过在装 Debian 的过程中遇到了些 Microserver 特有的坑，回头再写篇文章详解。&lt;/p&gt;
&lt;h3&gt;PPPoE 拨号&lt;/h3&gt;
&lt;p&gt;作为网关，PPPoE 拨号是必须的，安装 &lt;code&gt;pppoeconf&lt;/code&gt; 包，然后按照提示配置即可：
&lt;pre&gt;
sudo apt install pppoeconf
sudo pppoeconf
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;网关 IP&lt;/h3&gt;
&lt;p&gt;跟大多数家用路由器一样，网关的LAN口需要拥有一个固定的内网IP地址，这里我设置为 &lt;code&gt;192.168.1.1/24&lt;/code&gt;（假设LAN网段为&lt;code&gt;192.168.1.0/24&lt;/code&gt;），编辑 &lt;code&gt;/etc/network/interfaces&lt;/code&gt;，添加LAN口配置：
&lt;pre&gt;
allow-hotplug enp2s0f0
auto enp2s0f0
iface enp2s0f0 inet static
    address 192.168.1.1/24
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;重启 networking 服务使之生效：
&lt;pre&gt;
sudo systemctl restart networking
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;DHCP 服务和 DNS 服务&lt;/h3&gt;
&lt;p&gt;网关开启DHCP服务，给局域网内的设备自动分发IP地址，这里我用的是非常流行的 dnsmasq，不仅可以作为DHCP服务器，还能作为DNS服务器。安装 dnsmasq：
&lt;pre&gt;
sudo apt install dnsmasq
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt;，添加如下配置：
&lt;pre&gt;
interface=enp2s0f0
listen-address=192.168.1.1
dhcp-range=192.168.1.10,192.168.1.150,255.255.255.0,12h
dhcp-option=3,192.168.1.1
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;重启 dnsmasq 服务使之生效：
&lt;pre&gt;
sudo systemctl restart dnsmasq
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;IP 转发和 NAT&lt;/h3&gt;
&lt;p&gt;光有IP地址还不够，作为网关，必须要能够转发来自局域网的所有数据。编辑 &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;，将 &lt;code&gt;net.ipv4.ip_forward&lt;/code&gt;这一行的注释去掉：
&lt;pre&gt;
net.ipv4.ip_forward=1
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;然后执行 &lt;code&gt;sudo sysctl -f&lt;/code&gt; 使其生效。&lt;/p&gt;
&lt;p&gt;同时，为了使局域网内的设备能够访问外网，还需要配置NAT规则：
&lt;pre&gt;
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
&lt;/pre&gt;&lt;/p&gt;
&lt;h2&gt;进阶配置&lt;/h2&gt;
&lt;p&gt;至此，所有局域网设备应该能够通过刚刚设置好的网关访问互联网了。但是既然用 Debian 服务器作为软路由，当然要充分利用 Linux 的灵活性，进行更进一步的配置。&lt;/p&gt;
&lt;h3&gt;防火墙&lt;/h3&gt;
&lt;p&gt;屏蔽掉除了 PING 和 SSH 服务以外的一切外部来源请求：
&lt;pre&gt;
sudo iptables -A INPUT -p icmp -m icmp-type 8 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -i ppp0 -j DROP
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Wireguard&lt;/h3&gt;
&lt;p&gt;为了方便从外网访问家里的局域网，我在一台外网的服务器上配置了 Wireguard，只需要将网关与外网的服务器通过 Wireguard 连接，不论我在哪里，只要能连上 Wireguard 网络，就能穿透互联网回到家中。&lt;/p&gt;
&lt;p&gt;Wireguard 的安装可以参考官网介绍 &lt;a href="https://www.wireguard.com/install/"&gt;https://www.wireguard.com/install/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装好 Wireguard 之后，创建 Wireguard 的配置文件，假设为 &lt;code&gt;/etc/wireguard/wg0.conf&lt;/code&gt;：
&lt;pre&gt;
[Interface]
PrivateKey = [PRIVATE KEY]
ListenPort = 51820
[Peer]
Endpoint = [ENDPOINT]:51820
PublicKey = [PEER'S PUBLIC KEY]
AllowedIPs = 192.168.10.0/24
PersistentKeepalive = 30
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;这里使用了端口 51820，因此需要在防火墙开启这一端口：
&lt;pre&gt;
sudo iptables -I INPUT -p udp -m udp -s ENDPOINT --dport 51820 -j ACCEPT
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;同时，编辑 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 添加 Wireguard 的相关配置：
&lt;pre&gt;
auto wg0
iface wg0 inet static
    address 192.168.10.x/24
    pre-up ip link add $IFACE type wireguard
    pre-up wg setconf $IFACE /etc/wireguard/$IFACE.conf
    post-down ip link del $IFACE
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;启动 Wireguard 后，这时候 Wireguard 的虚拟网络为 &lt;code&gt;192.168.10.0/24&lt;/code&gt;，而内网网段为 &lt;code&gt;192.168.1.0/24&lt;/code&gt;，为了让连接到 Wireguard 网络的所有设备（比如手机）能够顺利访问到所有内网设备，还需要在网关上进行 NAT 的配置：
&lt;pre&gt;
sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.1.1
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;这样所有来自 Wireguard 网段的请求的源地址都会被翻译成 &lt;code&gt;192.168.1.1&lt;/code&gt; 从而得以访问内网其他设备。此外，还需要在外网的服务器上将 &lt;code&gt;192.168.1.0/24&lt;/code&gt; 加入 &lt;code&gt;AllowedIPs&lt;/code&gt;，这里贴一个外网服务器的 Wireguard 配置：
&lt;pre&gt;
[Interface]
ListenPort = 51820
PrivateKey = [PRIVATE KEY]
[Peer]
PublicKey = [PEER'S PUBLIC KEY]
AllowedIPs = 192.168.10.x/32, 192.168.1.0/24
PersistentKeepalive = 30
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;SS-REDIR 和 SS-TUNNEL&lt;/h3&gt;
&lt;p&gt;由于家里有两个 Google Home 音箱，为了让它们能够顺利连到 Google，需要在网关上进行相应的配置。这里我选择使用 ss-redir 和 ss-tunnel，其中 ss-redir 用于透明代理，ss-tunnel 用于 DNS 代理。&lt;/p&gt;
&lt;p&gt;ss-redir 和 ss-tunnel 的安装和配置可以参考官方介绍 &lt;a href="https://github.com/shadowsocks/shadowsocks-libev#transparent-proxy"&gt;https://github.com/shadowsocks/shadowsocks-libev#transparent-proxy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我将 ss-redir 配置在了1081端口，&lt;code&gt;ss-tunnel&lt;/code&gt; 配置在了5300端口。假设 Google Home 音箱的 IP 地址是 &lt;code&gt;192.168.1.x&lt;/code&gt; ，只需如下配置即可完成对 TCP 流量的转发：
&lt;pre&gt;
sudo iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.1.x -j REDIRECT --to-port 1081
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;然而光配置好 TCP 流量的转发还不够，Google Home 音箱使用 Google 的 DNS 服务器进行 DNS 解析，因此需要将其重定向到 ss-tunnel 所在的5300端口：
&lt;pre&gt;
sudo iptables -t nat -A PREROUTING -p udp -m udp -s 192.168.1.x --dport 53 -j REDIRECT --to-port 5300
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;解决 DNS 污染&lt;/h3&gt;
&lt;p&gt;既然有了 ss-tunnel 顺便解决一下 DNS 污染问题吧，把所有的 DNS 请求都转发到国外去请求是不现实的，会导致 DNS 解析时间过长不说还会使很多国内网站解析到国外的 IP 从而使访问变慢。考虑到前面我已经装了 dnsmasq，因此，我选择了&lt;a href="https://github.com/felixonmars/dnsmasq-china-list"&gt;dnsmasq-china-list&lt;/a&gt; 这个项目来解决 DNS 污染问题。&lt;/p&gt;
&lt;p&gt;dnsmasq-china-list 的思路很简单，国内域名用国内 DNS 服务器解析，其他域名用国外 DNS 服务器解析，为了实现这一目的，需要将项目目录中的 &lt;code&gt;accelerated-domains.china.conf&lt;/code&gt; 和 &lt;code&gt;bogus-nxdomain.china.conf&lt;/code&gt; 放到 &lt;code&gt;/etc/dnsmasq.d/&lt;/code&gt; 目录中，同时编辑 &lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt;，将上游 DNS 服务器指向 ss-tunnel：
&lt;pre&gt;
no-resolv
server=192.168.1.1#5300
conf-dir=/etc/dnsmasq.d
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;重启 dnsmasq 使之生效：
&lt;pre&gt;
sudo systemctl restart dnsmasq
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;IPv6&lt;/h3&gt;
&lt;p&gt;由于江苏联通至今没有提供原生的 IPv6 接入，因此现阶段若要体验 IPv6 还只能通过 HE 提供的 IPv6 Tunnel Broker 接入。&lt;/p&gt;
&lt;p&gt;在 &lt;a href="https://tunnelbroker.net"&gt;Tunnel Broker&lt;/a&gt; 网站上申请好 IPv6 Tunnel 之后， 编辑 &lt;code&gt;/etc/network/interfaces&lt;/code&gt;，添加 tunnel 配置：
&lt;pre&gt;
auto tun0
iface tun0 inet6 v4tunnel
    address [Client IPv6 Address]
    netmask 64
    endpoint [Server IPv4 Address]
    local 0.0.0.0
    ttl 255
    gateway [Server IPv6 Address]
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;别忘了将 Tunnel Broker 的 Endpoint IPv4 地址加入防火墙白名单：
&lt;pre&gt;
sudo iptables -I INPUT -s [Server IPv4 Address] -j ACCEPT
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;网关有了 IPv6 地址之后，还得给局域网内的设备分配 IPv6 地址，这里需要用到 radvd：
&lt;pre&gt;
sudo apt install radvd
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/radvd.conf&lt;/code&gt;，将 Tunnel Broker 分配的 /64 地址段填进去：
&lt;pre&gt;
interface enp2s0f0
{
    AdvSendAdvert on;
    AdvIntervalOpt on;
    MinRtrAdvInterval 60;
    MaxRtrAdvInterval 300;
    AdvLinkMTU 1280;
    AdvOtherConfigFlag on;
    AdvHomeAgentFlag off;
    prefix [Routed IPv6 Prefix /64]
    {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };
};
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;重启 radvd，局域网内的设备应该都能获得 IPv6 地址了：
&lt;pre&gt;
sudo systemctl restart radvd
&lt;/pre&gt;&lt;/p&gt;</description><pubDate>Sun, 04 Aug 2019 23:36:04 -0000</pubDate></item><item><title>第100天</title><link>https://ichon.me/post/1032.html</link><description>&lt;p&gt;今天是2019年7月9号，你离开后的第100天。&lt;/p&gt;
&lt;p&gt;还记得刚在一起的时候，你问我，我们在一起多少天了啊，我说，不用去算在一起有多少天，因为将来在一起的日子，一定是按年计算的。可是现在，我每天都会去算，今天是你离开后的第几天。&lt;/p&gt;
&lt;p&gt;你离开后，我再也没有机会在下午五点下班，五点半准时出现在你们楼下的停车场，然后赶在新闻联播开始之前吃上你做的饭。&lt;/p&gt;
&lt;p&gt;你离开后，你一直不让我买的xbox我还是买了，而且玩到了一直想玩的forza，然而再也没有机会看到你在PS4上开你最喜欢的那辆Audi TT。&lt;/p&gt;
&lt;p&gt;你离开后，之前一直没有买的客厅空调，这个夏天我终于买了，虽然我知道你一定会嫌弃空调不好看，但是我已经找不到更好看的了。&lt;/p&gt;
&lt;p&gt;你离开后，再也没有机会用我们的照片把照片墙填满了。&lt;/p&gt;
&lt;p&gt;你离开后，我终于买了跟你同款的情侣表，然而再也没有机会跟你凑一对儿了。&lt;/p&gt;
&lt;p&gt;你离开后，GOT的第八季终于开播了，虽然你没机会看到，但是也不用觉得可惜，因为第八季实在是太烂了。&lt;/p&gt;
&lt;p&gt;你离开后，你买的那束花还插在门口的花瓶里，每天下班回家都能看得到，只不过已经枯萎，如同你那脆弱的生命一般。&lt;/p&gt;
&lt;p&gt;你离开后，你买的捕虫网和野餐垫还装在后备箱里，虽然已经不会再有机会跟你一起躺在公园的树荫下看天空的白云了。&lt;/p&gt;
&lt;p&gt;你离开后，去年给你买的六箱乌龙茶至今还没喝完，如果有你在的话可能我已经在买第二个六箱了吧，我会努力的。&lt;/p&gt;
&lt;p&gt;你离开后，我还是习惯只睡床的右半边，总觉得一觉醒来还能看到旁边熟睡的你。&lt;/p&gt;
&lt;p&gt;想你了。&lt;/p&gt;</description><pubDate>Tue, 09 Jul 2019 19:24:21 -0000</pubDate></item><item><title>利用 PN532 复制小区门禁卡</title><link>https://ichon.me/post/1030.html</link><description>&lt;p&gt;自从家里换了指纹锁，出门就再也没带过钥匙，然而小区门禁卡还是要带，为了彻底实现 key free，我在万能的淘宝上买到了可以贴在手机背面的只有线圈和芯片的 UID 卡，只要能把门禁卡信息复制到芯片中，从此出门就只用带手机了。&lt;/p&gt;
&lt;h2&gt;硬件准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;PN532 读卡器模块&lt;/li&gt;
&lt;li&gt;Raspberry Pi，预装 Raspbian 系统&lt;/li&gt;
&lt;li&gt;0扇区可读写的 UID 卡&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;在 Raspberry Pi 上启用串口&lt;/h2&gt;
&lt;p&gt;淘宝上买到的 PN532 模块可以支持 UART/SPI/I2C 三种连接方式，并且可以通过板子上的开关来进行切换。而由于我的 Raspberry Pi 上的 SPI/I2C 端口都已经接了别的设备，这里我选择 UART 连接方式连接 PN532 模块，因此需要在 Raspberry Pi 上启用串口。&lt;/p&gt;
&lt;p&gt;为了把 Raspberry Pi 的串口打开，需要在 Raspberry Pi 上运行：&lt;/p&gt;
&lt;pre&gt;
sudo raspi-config
&lt;/pre&gt;

&lt;p&gt;然后在设置界面中选择 &lt;code&gt;Interfacing Options&lt;/code&gt; -&amp;gt; &lt;code&gt;Serial&lt;/code&gt; 。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Would you like a login shell to be accessible over serial?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;选 &lt;code&gt;No&lt;/code&gt; 以关闭串口的 shell 登录，否则会干扰串口设备的正常工作。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Would you like the serial port hardware to be enabled?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;选 &lt;code&gt;Yes&lt;/code&gt; 以打开串口。&lt;/p&gt;
&lt;h2&gt;连接 PN532 模块到 Raspberry Pi&lt;/h2&gt;
&lt;p&gt;对照 &lt;a href="https://pinout.xyz/"&gt;Raspberry Pi Pinout&lt;/a&gt; ，将 PN532 模块的对应接口连接到 Raspberry Pi 上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PN532 &lt;code&gt;VCC&lt;/code&gt; &amp;lt;-&amp;gt; Raspberry Pi &lt;code&gt;5V&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;PN532 &lt;code&gt;GND&lt;/code&gt; &amp;lt;-&amp;gt; Raspberry Pi &lt;code&gt;GND&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;PN532 &lt;code&gt;TXD&lt;/code&gt; &amp;lt;-&amp;gt; Raspberry Pi &lt;code&gt;RXD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;PN532 &lt;code&gt;RXD&lt;/code&gt; &amp;lt;-&amp;gt; Raspberry Pi &lt;code&gt;TXD&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;安装 libnfc&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/nfc-tools/libnfc"&gt;libnfc&lt;/a&gt; 是 Raspberry Pi 上控制 PN532 模块读写卡片所必需的库，在 Raspberry Pi 上安装 libnfc：&lt;/p&gt;
&lt;pre&gt;
sudo apt install libnfc-bin libnfc-dev libnfc-examples
&lt;/pre&gt;

&lt;p&gt;编辑 libnfc 的配置文件：&lt;/p&gt;
&lt;pre&gt;
sudo vim /etc/nfc/libnfc.conf
&lt;/pre&gt;

&lt;p&gt;打开 autoscan 和 intrusive scan：&lt;/p&gt;
&lt;pre&gt;
allow_autoscan = true
allow_intrusive_scan = true
&lt;/pre&gt;

&lt;h2&gt;测试 PN532 模块&lt;/h2&gt;
&lt;p&gt;将门禁卡放到 PN532 模块上，然后运行：&lt;/p&gt;
&lt;pre&gt;
sudo nfc-list
&lt;/pre&gt;

&lt;p&gt;如果能够正确读取到卡片信息，说明 PN532 模块和 libnfc 都能正常工作。&lt;/p&gt;
&lt;h2&gt;安装 mfoc&lt;/h2&gt;
&lt;p&gt;为了破解并 dump 卡片中的数据，需要用到 &lt;a href="https://github.com/nfc-tools/mfoc"&gt;mfoc&lt;/a&gt; 这一工具。&lt;/p&gt;
&lt;p&gt;由于 mfoc 并不在 Raspbian 的软件仓库中，因此需要手动去编译。&lt;/p&gt;
&lt;p&gt;安装编译所 mfoc 需要的依赖包：&lt;/p&gt;
&lt;pre&gt;
sudo apt install build-essential
sudo apt install autoconf automake libtool
&lt;/pre&gt;

&lt;p&gt;获取 mfoc 代码：&lt;/p&gt;
&lt;pre&gt;
git clone https://github.com/nfc-tools/mfoc.git
&lt;/pre&gt;

&lt;p&gt;编译并安装 mfoc：&lt;/p&gt;
&lt;pre&gt;
cd mfoc
autoreconf -is
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
sudo make install
&lt;/pre&gt;

&lt;h2&gt;Dump门禁卡数据&lt;/h2&gt;
&lt;p&gt;有了 mfoc，就可以开始破解并 dump 门禁卡的数据了。将门禁卡放到 PN532 模块上，然后执行：&lt;/p&gt;
&lt;pre&gt;
sudo mfoc -O orig.mfd
&lt;/pre&gt;

&lt;p&gt;mfoc 会自动选用自带的默认 key 去解锁并读取卡片中的所有16个扇区的数据，如果部分扇区采用了非默认的 key 进行加密，mfoc 则会尝试去破解。&lt;/p&gt;
&lt;p&gt;如果所有扇区的 key 都能够被破解出来，mfoc 会将 dump 出的数据导出到 &lt;code&gt;orig.mfd&lt;/code&gt; 文件中。&lt;/p&gt;
&lt;h2&gt;写入门禁卡数据&lt;/h2&gt;
&lt;p&gt;拿到原始的门禁卡数据后，就可以拿去写入新的卡片了。按理说，标准的 Mifare Classic 卡片的0扇区应该是出厂后无法再次写入的，但是万能的淘宝可以买到0扇区可写入的卡片，将卡片放在 PN532 模块上，然后执行写入命令：&lt;/p&gt;
&lt;pre&gt;
sudo nfc-mfclassic W a orig.mfd orig.mfd f
&lt;/pre&gt;

&lt;p&gt;如果一切正常的话，我们就可以得到两张完全一样的卡片，把新复制的卡片贴到手机后盖，就可以拿去刷门禁了！&lt;/p&gt;</description><pubDate>Tue, 21 Aug 2018 14:13:11 -0000</pubDate></item></channel></rss>