菜菜博士

博士在网络的家

入DN42坑

近来把 家和公司三处地方的网络(2个家,乡下老家嘛)通过 tunnel 手段连接到了一起, 三个地方的 LAN 分配不同的私网网段,因此配置好路由表后,三处内网的机器就可以互相访问了。 最初我使用的是添加静态路由,但是因为 vpn 是使用的点对点互联,而不是首先集中连到一个转发服务器上,所以需要配置路由表的路由器数量达到了4台,比较麻烦,关键是期间我还修改过私网使用的网段,结果每台路由器都...

拿到了移动宽带的公网IP

闻觉 CMCC 手握 HKIX 宝剑, 想必连 HK 节点的 VPN 访问世界一定更快。世界的一部分一般在 HK 本地也有 CDN 节点,因此多数时候并不需要再从 HK 去世界绕一圈。于是买新房后,就办理了免费的CMCC宽带。不再向恶势力CT低头了。 美中不足的是 CMCC 手头 ip 资源紧张,早早部署了 CGNAT,再经过猫一层 NAT,路由器又一层 NAT,访问个局域网都要3层NAT...

折腾 NAT64 实现 ipv6 only 内网

一直以来,虽然启用了 ipv6, 但是都是以 Dual Stack 模式运行。 你不知道,是服务器端不支持 ipv6 呢,还是客户端不支持,亦或二者皆有之。 而且Dual Stack虽然解决了互联问题,但是看起来非常的丑陋,多个协议一起跑什么的,才不要呢! 于是就有了搞 IPv6 Only 的想法。为了解决互联问题,还需要一台翻译的设备执行 NAT64。 所谓 NAT64 就是让一台网...

IPv6 这几天的体验

如果只是家里折腾上了 ipv6 那不算 ipv6。网络这种东西一定要互联互通才算。最近把公司的猫也折腾了一下下,上了 ipv6。 于是发现,在公司可以无缝访问家里的设备了。全部都在公网,无需端口映射之类的东西了。当然,家里也没有公网ipv4地址,映射了也白搭。 有了 ipv6 后,发现所有的机器都突然没有了 NAT 墙。那一道无形中把整个世界割裂的墙消失了,只要知道 ip 地址,所有的设...

中国移动原生IPv6配置

上峰拍了桌子, 要求 2018 年底之前商用 ipv6. 移动响应非常积极,已经可以用了. ipv6 带来的第一个好处就是削除了NAT, 对万恶的私网ip地址说再见! 在继续之前,首先讲下,ipv6 同 ipv4 在配置上的不同。 对于家庭宽带,ipv4 是 pppoe 拨号的时候自动配置的。isp 给且仅给一个 ipv4 地址。 如果有多台设备需要上网,就需要使用一种叫 NAT 的技术...

高并发服务器的静态内存分配策略

asio 的 async_accept 函数在高并发的时候,会发生遗漏 accept 的情况。根本原因在于,async_accept 回调的时候,已经 监听的socket已经没有执行 accept 操作了。 解决的办法就是投递多个 async_accept. asio 的 async_* 系列 函数通常只能投递一次,多次投递会发生未定义行为。async_accept 是为数不多的例外。 通...

挖矿与创新

所谓挖矿,就是寻找一个随机数,是的区块头部和随机数结合后的 sha256 数值小于一个特定的目标数字。 对于哪一个随机数能找到答案,没有人知道,也没有捷径,唯一的做法,就是一个一个的去试。 比特币诞生也有9年了,9 年来,不断的有人尝试寻找捷径,但最终都没有找到,只能依靠暴力穷举随机数。 只要尝试的次数足够多,参与尝试的矿工足够多,大约每十分钟总会有一个幸运儿找到这样的随机数。 当他找到...

换用wireguard

之前把家里网络 重新折腾 了一下, 用的是 走socks5 代理的 tcp 协议 openvpn. socks5 代理由 shadowsocks 提供. 不过, 最近偶然在 LWN 发现了 wireguard 这个新型 VPN, 于是盘算着用起来看看效果. 结果一不小心, 发现了vyatta-wireguard, 这个可以让我的路由器也能用 wireguard! 于是按照它的文档配置到了...

UPS和直流供电的思考

为了在网络断电后还能使用, 我曾经给路由器配置 12v 直流 UPS. 但是, 随着我的网络扩展, 出现了更多的设备, 而且这些设备不再是12v电压供电的了, 而是出现了 24v 和 54v 供电的设备. 同时, 12v 供电的设备也增加了, 原来的 UPS 容量就显得捉襟见肘了. 我继续要对 UPS 进行一次升级. 一劳永逸的解决方式, 其实是直接购买普通的 220v 逆变输出的 UPS...

网络重新配置

一直以来, 我用的都是基于 ss-redir 和 ipset + iptables 透明代理方式的科学上网. 但是 iptables 方式的上网, 其实还是不如 ChinaRoute 配合 VPN 来的爽. 因为只有 TCP 连接能被透明代理出去, UDP 和 ICMP 协议统统不能. 但是 openvpn 这种协议实在是太过招摇, 所以早就被方校长盯上了. 不可不可. 后来, 我想到了...

Immutable, RCU and Transnational Container

在编写并发程序的时候,经常要面对共享数据结构的保护问题。 虽然 C++ 提供的 RAII 实现的各种 guard lock 模式,早就让“忘记解锁” 导致的死锁成为历史。但是,锁带来的性能损耗依然是我们不得不面对的问题。 为了避免锁带来的开销,使用“无锁” 的数据结构似乎是个好主意。 然而事情的发展总是出乎所有人的意料。现代的多核CPU随着核数的越来越高,核与核之间的通信开销也变得越来越大...

C++ 是最好的编程语言

好的语言是怎么来的? 有人说, 是设计出来的, 有人说, 是抄出来的. newbie 说, 是实践来的. 什么是实践呢? 实践, 就是摸石头过河, 吸收合适的, 抛弃不合适的. 这不就是进化吗? 正如好的物种是进化来的一样, 好的语言也是进化来的. 物种的进化, 首先是要适应已有的环境, 然后才是展望未来, 设法适应未来的环境. 即使某些功能器官已经不再需要, 仍然保留着进化的痕迹. ...

不停机迁移

设计一套系统的时候, 最初的数据库结构总是不能适应未来业务的发展变化。经常需要调整数据库的表结构以适应新的业务需求或调整逻辑结构。 为此,需要让系统能支持不停机迁移。不停机迁移,用户0感知的,完成数据库升级。要做到这点,首先要做到程序本身的热更新。 如果是 php 之类的脚本语言编写的服务器端程序,热更新实现起来倒也轻松容易。但是既然是我这个c++佬出来写文章, 一定是关注的c++编写的...

使用异常实现cache

异常用来做错误处理的时候,程序到处都是 try cache ,代码十分的丑陋,我是不怎么喜欢的,我喜欢 asio 那种用 error_code 汇报错误 —— 不传 ec 的时候就抛异常,传就不抛,改为写入错误到 ec。 但是,异常用来做流程控制,又特别的好用。流程控制,无非顺序、选择、分支和循环。在 c++里,又比 C 多了一个异常。在嵌套很深的地方,跳出逻辑,除了异常,就没有其他更...

免费版的 PrimoCache

去年DIY一个 NAS. 其实就是台 MINI PC. 自带一个很小的 mSATA SSD 用来装系统, 然后外接了一个大 HDD 做存储. 问题在于, 这个 大 HDD 是渣机械, 一开迅雷, 硬盘就被 100% 占用! 然后导致整个 OS 响应迟缓. 然后因为 HDD 写入速度不足, 导致迅雷下载速度 0 . 磁盘疯狂写入. 后来下了一个 PrimoCache ( 以前叫 Fancy...

通知到轮询线程

在腐都工作也有大半个月了。工作过程中,遇到了一个轮询+通知的消息模式。所以要轮询,是因为通知是不可靠的。 所以要通知,是因为轮询是不及时的。既要保证及时,又要保证可靠,就只能轮询和异步通知一起上。 因为异步通知的时候,会把轮询需要获得的状态一并携带上了。所以,获得通知后只是取消定时器,让轮询线程立即唤醒干活肯定是。。。 可以的但是有点浪费。如果在异步通知线程里直接调用处理呢,就要把处理的东...

Yaoi-city-here-I-come

腐都我来啦!

TCP拥塞控制

BBR 为啥要对包的发送时机进行调度呢? 是为了防止缓存堆积. 比如对方的接收速率是 1MB/s . 你的本地发送速率可以达到 1.1GB/s . RTT = 500ms, 窗口大小是 500KB. 好, 现在有 500KB 的数据要发送, 那么你是一次性发出呢? 还是把 500KB 分到 0.5s 的时间内匀速发出? 500KB 是 500 个包. 在 10Gbps 的本...

使用邻居的CMCC宽带加速

基于某些特殊原因,我知道邻居家的wifi密码。 但是他家信号在我家虽然能收到,但是比较弱。所以一直没用。最近从newbie获赠了一个叫 Ubnt AirMAX 的山寨产品,有个定向天线。 这使得我可以在家接收邻居家的信号了。于是就开始用啦! 先上图。 这是在阳台装好的效果。这货还支持 POE 供电,非常不错,网线到就可以干活了。 邻居家使用的是CMCC的网络,这是我要连上他家网络...

错误配置的路由器

企业专线宽带通常会分配多个固定IP,一般是 4 个。也有的是 8 个。如何使用这多个IP地址也是一门学问。 我见过的多数企业,对于多个IP的使用基本上就2个模式。 模式1:只使用一个。(通常负责人还会抱怨给那么多地址干嘛,一个就够了,多的不要了,给降价吧!) 模式2:作为NAT地址池。提高大并发下的NAT效率。(这个负责人通常遇到上面那种人会觉得对方没文化,企业上网人数多,NAT端口不...