mywaiting True love waits, always

无电无泵零废水反渗透净水器实现

mywaiting avatar

无电无泵零废水反渗透净水器实现

以下所有的反渗透进水口,都假设经过了以下三级过滤,分别是

  • PP PP棉,主要过滤泥沙、铁锈、虫卵等较大颗粒物
  • UDF 椰壳活性炭,算是吸附孔径较大的活性炭
  • CTO 复合活性炭,算是吸附孔径较小的活性炭

这三级过滤能够去掉水源中的颗粒物、有机物、余氯等物质,特别是城市自来水中的余氯,能显著降低反渗透膜寿命,无论当地水质如何,请保证在反渗透膜前至少串接一个活性炭

          +----+     +-----+     +-----+
INPUT --> | PP | --> | UDF | --> | CTO | --> OUTPUT
          +----+     +-----+     +-----+

如果当地水质很好(参考标准是 TDS 值在 50 以下),比如两广地区、长江中下游地区,大部分家庭厨房用水只要经过这三级过滤即可,无需反渗透膜已经足够过滤得到很好的水质,但是要注意尽量使用至少 4 分接口的滤瓶,单纯厨房用水建议使用 10 寸 4 分滤瓶,搭配 10 寸通用滤芯,整套 DIY 花费在 100 元左右,滤芯每个季度换一遍花费 30 元左右,费用很低,且省事省心

想要实现无泵反渗透净水,需要保证反渗透膜前具备一定压力,理论上最好有 0.4Mbar 左右的压力较好。收集网络上网友的评论,有尝试 0.2MBar 仍然能使用的,但是 RO 膜的出水会极其缓慢

使用四面阀控制(可选带压力桶)

使用四面阀控制净水器的启停,根据四面阀的安装位置,有以下几种方案

四面阀接反渗透膜出水口+废水口实现控制(可选带压力桶)

如下图所示,四面阀接反渗透膜出水口+废水口实现控制,当净水出水关闭或者压力桶满(带压力桶情况下)的时候,会自动闭合四面阀,同时关闭废水出口

                                                                        (Optional)   +---------------+     +---------------+
                                             +-------------+           /-----------> | One-way Valve | --> | Pressure Tank |
          +-------------+                    |             |           |             +---------------+     +---------------+
INPUT --> | RO Membrane | --> Pure Water --> |             | --> (Pure Water OUTPUT/Swith)
          +-------------+                    | 4-Way Valve |
                |                            |             |     +--------------------------+
                \----------> Waste Water --> |             | --> | Waste Valve/Flow Control | --> Waste Water OUTPUT
                                             +-------------+     +--------------------------+

优点:

  • 这种方案结构简单
  • 设备很少,只要一个四面阀就能控制整套系统

缺点:

  • 四面阀控制废水出口导致陈水停留太久,纯水出口的陈水较多,尤其是早上第一杯水,四舍五入等于完全就是全部陈水
  • 如果带压力桶,需要接受陈水停留太久入桶,被桶内纯水稀释的问题
  • 反渗透膜没有冲洗机会,影响使用寿命

四面阀接反渗透膜进水口+出水口实现控制(可选带压力桶)

如下图所示,四面阀接反渗透膜进水口+出水口实现控制,当压力桶满(可选带压力桶)的时,会自动闭合四面阀,同时关闭进水口

                                                                   +--------------------------+
                                    /------------> Waste Water --> | Waste Valve/Flow Control | --> Waste Water OUTPUT
          +-------------+           |                              +--------------------------+
          |             |     +-------------+
INPUT --> |             | --> | RO Membrane |
          | 4-Way Valve |     +-------------+                       (Optional) 
          |             |        |                                 +---------------+
    /---- |             | <------/          /-----> Pure Water --> | Pressure Tank |
   |      +-------------+                   |                      +---------------+
    \---------------------------------------+
                                            |
                                            \-----> (Pure Water OUTPUT/Swith)

优点:

  • 架构较为简单
  • 四面阀直接控制反渗透膜进水端,陈水的量得到有效的控制

缺点:

  • 尽管结构简单,但要注意四面阀 IN/OUT 不要接错,特别是控制端 IN/OUT
  • 如果带压力桶,则尽量选择 50G/75G 的反渗透膜,降低长时间不用纯水带来的陈水入桶的问题
  • 反渗透膜没有冲洗机会,影响使用寿命

关于无电无泵净水器的一些思考

为什么要使用四面阀?

使用四面阀控制净水器的启停,本质上是因为净水器通常放置在台下或者橱柜内部,使用时候只能通过台面水龙头控制净水器的启停

由于只能是无电无泵实现,只能使用四面阀进行根据出水水龙头的开或者关 智能同步 反渗透膜的开或者关

理论上,如果你不是通过台面水龙头控制反渗透膜启停,你大可直接在反渗透膜进水口装个开关,直接控制整个膜开或者关,更简单也更省事

为什么可选压力桶

压力桶本身不是整套系统的必备组件,它存在的意义是为了改善整套系统的使用体验,因为反渗透膜的通量太小,每分钟制水可能不到 1L 因此可选压力桶来缓存已经制好的纯水

但是选择压力桶又可能带来压力桶污染、陈水入桶的问题,这是个两难的选择

为什么需要排废水

这是反渗透膜的工作原理决定的,在高压下,把水分子强行“压”过半透膜,而盐分、重金属、细菌等杂质被膜拦截下来,这些被拦截的杂质会在膜的进水侧不断浓缩,形成浓缩水(废水)

如果一直不排放废水(需要强调这个一直不排放废水),则盐分会原来越高导致渗透压急剧上升,膜表面结垢堵塞,通量下降,寿命缩短

反渗透膜的废水必须要排,但是不用一直都在排废水,又或者说,一段时间不排废水仍然可以正常制水

思考总结

从上述两中带四面阀的方案优缺点可以看到,反渗透膜都没有冲洗机会,如果带压力桶的话,又需要考虑长时间不用纯水带来的陈水入桶的问题

事实上,从系统简单可用的角度,我既不希望使用四面阀,也不愿意使用压力桶

并且仔细观察上述管路,你可以看到,净水器的纯水出口和废水出口,你可以发现以下事实

  • 反渗透膜的进水,已经经过 PP+CTO+UDF 三级过滤
  • 反渗透膜的废水,只是比纯水浓度稍高的废水,理论上与进水水质相同/近似

所以,不如找个方法将反渗透膜处理出来的废水用起来,直接按生活用水使用即可

无电无泵零废水反渗透净水器

再三对比过系列实现方案,得到以下精简实现:

                /---> Pure Water -----------------------------------------------------------------> (Pure Water OUTPUT/Switch)  
                |                                                                    
          +-------------+                                            /----------------------------> (Waste Water Direct OUTPUT/Switch)
INPUT --> | RO Membrane |                                            |
  |       +-------------+                                            |
  |             |                     +--------------------------+   |    +---------------+
  |             \---> Waste Water --> | Waste Valve/Flow Control | --+--> | One-way Valve |---\
  |                                   +--------------------------+        +---------------+   |
  |                                                                                           + --> (Regular Water OUTPUT/Switch)
  |                                   +-------------------------+                             |
  \---------------------------------- | Pressure Reducing Valve | ----------------------------/
                                      +-------------------------+

这种方案下,反渗透膜出来的废水经过 流量阀和单向阀(止回阀),直出生活水龙头即可,而三级 PP+CTO+UDF 出来水源经过 减压阀 也是直通生活水龙头,稍微牺牲少少生活水龙头的水压,换来的是整套系统零废水运行

我自己的方案是为了避免引入四面阀和压力桶,一来降低系统搭建的复杂度保证系统工作稳定,二来直接节省成本,直接在纯水出口加了个带有浮球阀的纯净水桶(或者系列相关的产品,比如蓄水宝、聪明壶、自由壶等能通过浮球阀自动断开水源的产品),工作过程如下:

  • 当生活用水打开时
    • 浮球阀没有水满时,反渗透膜会自动制水
    • 浮球阀已经水满时,反渗透膜停止制水,生活用水相当于一直在冲洗反渗透膜
  • 当生活用水关闭时
    • 浮球阀没有水满时,反渗透膜会自动制水
      • 没有废水排出反渗透膜也能制水,此时比较费膜
      • 日常使用生活用水相当于间接清洗反渗透膜
    • 浮球阀已经水满时,反渗透膜停止制水

此种方案同样无法避免水桶被陈水污染,但是水桶可以随时清洗,或者可以选择每天早上第一桶直接倒掉,这是压力桶不具备的(尽管压力桶的密闭也避免了空气中的细菌污染)

为了降低陈水污染的影响,建议选择 50G/75G 的反渗透膜,小流量的膜理论上在陈水污染上会小很多,如果整套系统每天都能使用的话,理论上陈水污染极小,只有长时间不用(比如出差一个星期回来)需要重新清洗水桶并且将第一桶水倒掉

另外,改动一下这个方案,可选的四面阀以方便生活水龙头关闭的时,反渗透膜可以通过四面阀开启废水排出

四面阀的位置可以安装在反渗透膜净水出口+废水出口处

                                                                            (Optional)
                                                                           +-------------+
                /---> Pure Water ----------------------------------------> |             | --> (Pure Water OUTPUT/Switch)  
                |                                                          | 4-Way Valve |     
          +-------------+                                            /---> |             | --> Waste Water Direct OUTPUT           
INPUT --> | RO Membrane |                                            |     +-------------+
  |       +-------------+                                            |
  |             |                     +--------------------------+   |    +---------------+
  |             \---> Waste Water --> | Waste Valve/Flow Control | --+--> | One-way Valve |---\
  |                                   +--------------------------+        +---------------+   |
  |                                                                                           + --> (Regular Water OUTPUT/Switch)
  |                           +-------------------------+                                     |
  \-------------------------- | Pressure Reducing Valve | ------------------------------------/
                              +-------------------------+

另外,四面阀也可以挪到反渗透膜进水口+净水出口处实现,此处就不再一一画示意图了,整套系统也能加上压力桶实现,可以自由裁剪实现,我喜欢精简,暂时就是这样了

开源黑科技 Neural Amp Modeler (NAM) 简介

mywaiting avatar

开源黑科技 Neural Amp Modeler (NAM) 简介

如果你是一名关注数字效果器与录音技术的吉他手(此处需要明说是电吉他手,尽管木吉他客观上也能用),最近两年一定频繁听到一个词——神经网络建模(Neural Network Modeling)。

从动辄上万元的旗舰综合效果器(是的,我就要点名 NeuralDSP 的系列产品,我买不起的系列产品)到免费开源的桌面软件,人工智能正在彻底颠覆我们获取“真电子管音箱”音色的方式。而在这一浪潮中,Neural Amp Modeler(简称 NAM) 无疑是最具革命性的存在。

什么是 Neural Amp Modeler (NAM)

Neural Amp Modeler (NAM) 是由开发者 Steven Atkinson 发起的一个 完全免费且开源 的吉他/贝斯音箱建模项目,你没有听错,就是 免费且开源 而且是系统性开源,包含三组源代码:

  • Trainer/捕捉音色训练工具
  • Core DSP/完整解析运行 NAM C++ 核心代码
  • 完整的官方插件 Gateway 实现,可以运行在各种 DAW host 中,支持完整 NAM + IR 加载

想要围观源代码的同学,请参考 官方页面 直接忽略其音乐工程实现高度,单纯从源代码上看,还是很简单易懂的

它是如何工作的?

传统的建模技术(如常规电路仿真)需要工程师手动去分析物理电路中的每一个电阻、电容和电子管参数,理工科的同学举一下手,当年的电路模拟,搞过么?四舍五入就是大学时候的电路模拟/仿真,只是这个高级一点点而已

而 NAM 使用的是“黑盒测试 + 深度学习”的方式:

  • 测试信号: 向真实的硬件音箱输入一段经过特殊设计的测试音频信号。
  • 采集/采样: 录下音箱经过失真、压缩、EQ 处理后输出的声音。
  • 神经网络训练: 将输入和输出音频喂给神经网络(基于 WaveNet/LSTM 等深度学习架构),让 AI 自动学习输入与输出之间的数学函数映射关系。
  • 生成模型: 训练完成后,就会生成一个极小体积的 .nam 抓取文件(Capture),加载到插件中就能完美还原真实音箱的音色。

NAM 的核心优势: 相比传统算法,AI 模型能够捕捉极度复杂的非线性失真与动态细节。无论是轻微拨弦时的清亮清音,还是用力重挑时的过载崩裂感(Pick Attack),用过电子管音箱的同学都知道这样处于 Clean/Drive 边缘的美妙感觉,NAM 的还原度普遍达到了 99% 以上。

官方有完整的教程实现,如果你手上有性能不错的显卡,录音环境也可以,可以考虑自己手搓一下自己的模型,相当有意思,特别是手里有各种元年音箱,可以自己训练模型上传到 Tone3000 网站上,方便造福广大网友

吉他音箱建模演进与神经网络的兴起

要理解 NAM 的意义,回顾一下吉他音箱建模技术的三个时代:

建模世代 代表技术/设备 工作原理 优点与局限
1.0 算法仿真时代 Line 6 POD / early Axe-Fx 基于物理电路组件建模(DSP 算法) 参数可随意调节,但缺乏真实电子管的动态和“空气感”
2.0 采样 profiling 时代 Kemper Profiler 信号脉冲与静态响应快照 首次完美还原了特定状态下的音色,但调节维度受限
3.0 AI 神经网络时代 Quad Cortex / ToneX / NAM 深度学习非线性非平稳系统 动态响应极度逼真,对拾音器微小变化极其敏感

此处并不是针对 Kemper/NeuralDSP/ToneX 等传统硬件大厂的产品,但是 NAM 官方宣称最新版本的 NAM A2 的确在盲听中能吊打系列传统的硬件厂商,直接将 Line6/ToneX/NeuralDSP 等系列闭源硬件厂商按地上摩擦,尽管只是 Tone3000 网站上的 测试介绍 不过人家说盲听测试,应该有多少可信度吧,你如果自称自己是金耳朵,你可以考虑上去挑战一下,实话实说,我没有听出多少区别

为什么 NAM 能够惊艳我

实话实说,我一直对电子管音箱又爱又恨,爱是因为电子管提供的美妙谐波,拨弦轻重带来轻微过载音色,简直让人陶醉,恨是因为这货简直超级扰民,发热又大,电子管也不便宜啊,还得小心翼翼。

话说你还记得第一次用电子管音箱小心翼翼的 Standby 以及,花了好久才搞清楚先插吉他还是先开机?

尽管有各种综合效果器,但是商业产品价格不菲啊,再次点名 NeuralDSP Quad Cortex 好贵好贵

商业产品已经足够优秀,为什么我会对开源的 NAM 如此狂热(狂热体现在我专门写了这个博客介绍它)?当然是因为 免费 并且音色与商业产品 不相上下

  • 绝对的音色平等(纯粹零成本): 过去你可能需要花费数千美元购买硬件设备才能享受到 AI Capture 级别的音色。而 NAM 完全免费,让每个人都能享受到当今最顶级的数字音色的福利
  • 庞大的开源社区生态: 依托于社区网站(如 Tone3000),全球玩家每天都会上传各种免费的 NAM 抓取模型——从百年前的 Vintage Tweed 到价值几万美元的精美定制管箱应有尽有
  • 跨平台与独立软件支持: 如今 NAM 已经拥有官方 Gateway 插件,同时也衍生出了像 Soundshed Guitar 这样支持独立 App(Standalone)运行、内置开源 AI 引擎的全功能练琴神器

简单来说,就是,在 NAM 世界里,应有尽有!都是免费的!音色好到爆炸!甚至网友还各种 DIY 自己的硬件效果器,直接运行 NAM CoreDSP 的硬件很便宜的,核心处理芯片不过几美元,简直刷新三观。坐等国内大厂/作坊在 NAM 技术的加持下,把吉他综合效果器/单块价格卷上天!友好目测能加载 NAM A2 lite 的硬件实现,不会超过 200 人民币!

总结一下吧

神经网络建模彻底打破了“数字音箱不如真实电子管”的宿命。不论你是想在录音室快速获得高品质音色,还是想在家里安静且高保真地练琴,Neural Amp Modeler 都为你打开了一扇全新的大门。

如果你还没有体验过 AI 音色,不妨去 GitHub 或 Tone3000 下载 NAM 亲自体验一下这股改变音乐制作界的技术浪潮,真的牛逼!

标签
音乐+1

如何在互联网上隐藏 SSH 端口

mywaiting avatar

如何在互联网上隐藏 SSH 端口

众所周知的原因,大量的 Linux 服务器只能通过 SSH 进行管理,多数情况下可以使用云厂商的防火墙限制或者封禁(相当于来源 IP 白名单)对应的 SSH 端口(多数情况下都是 22 端口吧,毕竟是默认端口),但是如果是个人服务器的情况下,如何在互联网上隐藏 SSH 端口呢?毕竟互联网很危险啊,每时每刻都有大量的端口扫描器不停扫描然后爆破,登录日志一堆垃圾记录,看着很不舒服

因为自己用到,全网收集整理了一下各路网友的创新实践

修改 SSH 端口 + fail2ban

这是最基本的 SSH 安全措施了,但是,怎么说呢,有点类似脱裤子放屁,原则上 SSH 端口还是开着,不过实事求是来说,能省事一点,但是仍然没有达到隐藏 SSH 端口的目标

改高位端口意义不大,速度快的扫描器全端口扫描也就是十几秒的程度,尽管,意义上的确可以避免了那种大规模的扫描

端口敲门

默认关闭端口,只有按特定顺序访问几个端口后才临时开放真正服务端口,算是个比较经典的“隐蔽暴露面”方案,常见的实现方案如下

  • fwknop 使用 UDP SPA(单包授权),安全性最高,但是需要客户端
  • knockd 传统端口敲门,简单,无需客户端,但是需要时刻网卡监听流量
  • nftables + 自定义脚本,纯内核规则,让 AI 写脚本吧,很简单的

这种方案算是比较完美实现隐藏 SSH 端口,算是比较不折腾的实现

实现内网绑定 SSH 端口

可以使用 Wireguard/Tailscale/Zerotier 等系列 VPN 实现自己的 VPN 内网,然后把 SSH 绑定在 VPN 内网即可,只要能连接上自己的 VPN 意义上你能实现绑定任意的内网服务

理论上这个方案才是比较完美的实现,但是考虑到国内上网需要特殊手段,这里需要自行研究

此处特别推荐 Tailscale 我觉得这个东西真是互联网从业者必备工具,无论从哪种层面上看,都是必备工具


写完传统的系列方案,是时候脑洞大开时刻了,这种歪门邪道很难见到

蜜罐端口/陷阱端口

开放 SSH/22 端口为陷阱端口,只要这个端口被扫描/连接就立刻拉黑 IP 地址,这样尽管没有达到完全隐藏 SSH 端口的目标,但是还是很有意义的,放陷阱端口的意义在于,除了骇客在扫,网安也在扫你,云服务商的各种外包云安全也在扫你,不想接受他们“插一杠子”式的服务的话,做个微型蜜罐有益无害

如果你使用 NFTables 可以参考以下 NFTables 脚本配置 防火墙配置有风险,请自负风险!

#!/usr/sbin/nft -f
flush ruleset

# #########################
# use at your own risk...
# #########################

table inet filter {
    set honeypot_ipv4 {
        type ipv4_addr
        flags dynamic,timeout
        timeout 1d
    }
    chain input {
        type filter hook input priority 0;
        iifname "lo" return
        ip saddr @honeypot_ipv4 counter drop
        tcp dport 22 add @honeypot_ipv4 { ip saddr timeout 1d }
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}

直接关闭 SSH 服务

直接关掉 sshd, 改用 ttydgotty 基于 https 协议访问, 有各种开源的 webssh 实现,方便随时浏览器访问。

这种算是换种口味吧,只是换了种形式的 SSH 服务,运维过程中其实不够方便,比如你需要 scp 就比较麻烦了

使用此种方式请务必能保证自己 web 端安全,不然一窝端

使用 Cloudflare Tunnel 代理 SSH 服务

被称为赛博菩萨的 Cloudflare Zero Trust 有一个 Free 方案,支持最多 50 个用户。对于个人远程运维、管理家庭服务器或实验室设备来说,这个额度绰绰有余。

Cloudflare Tunnel 支持 Tunnel 代理 SSH,甚至可以直接浏览器访问就能操作服务器 SSH 而无需暴露任何端口配置,这个隧道服务当然也支持其他很多协议,比如 Windows RDP 和 Linux VNC 其实现过程网络拓扑简图如下

Your laptop --> SSH Client --> local Cloudflared(Tunnel) Client  
                                                                                               \
                                                                                   Cloudflared Infrastructure
                                                                                               /
Your server --> SSH Server(bind localhost:22) --> local Cloudflared(Tunnel) Server

使用 IPv6 来绑定 SSH 服务

使用 IPv6 来绑定 SSH 服务,毕竟 IPv6 地址空间太大了,大不可能使用扫描器扫描得完,以常规的 /64 地址段,就足足有 2^64 个 IP 地址,这可是 VPS 厂商给你自己分配的私有 IP 地址段啊,随便挑一个自己觉得有意义又不太可能被猜得出来的 IP 地址用来绑 SSH 服务即可

只要把 SSH 唯一绑定在 IPv6 地址,直接绑在 22 端口也没啥问题,只要这个 v6 地址你不主动暴露,理论上在互联网上你就是个隐藏的 IP 地址

如果使用动态的 IPv6 地址,自己搞个 DDNS 动态转发一下即可,简单的就跟 AI 沟通一下,很简单的


综合起来,其实最简单的就是使用 IPv6 来绑定 SSH 服务,知识毕竟需要活学活用,有种“弱水三千,只取一瓢饮”的感觉

标签
黑客+1