(使用VirtualBox)构建Ubuntu下的clash旁路由服务

效果图一张 几个月前写了一篇文章,讲怎么在Windows下面利用HyperV安装OpenWRT软路由。最近发现了几篇旁路由的文章,另外发现其实clash完全可以在ubuntu下面跑,不用再费那么多事情去研究OpenWRT了,于是乎就有了本文。 目标 本文的目标是利用一台Windows主机(或直接使用Linux主机)搭建一个旁路由服务器,这个服务器与我的光纤猫LAN口连接,提供网关服务,并且能够通过网页ui对clash服务进行配置修改。需要使用旁路由服务的终端(或无线AP),可以通过手工设定网关地址与DNS地址来接驳到旁路由上;同时,需要默认路由服务的终端,只需使用默认DHCP服务即可。施工完成后,家里的网络拓扑大致如下: 光纤猫 192.168.1.1 |- 192.168.1.21 旁路由服务器 |- 192.168.1.20 无线路由器(接驳旁路由网关192.168.1.21) | |- 192.168.50.xxx 手机、iPad、笔电等终端 |- 192.168.1.19 电视机(无需旁路由服务,使用DHCP的网关192.168.1.1) |- … 硬件需求 任意主机,直接运行Ubuntu系统或使用Windows系统。服务器需要有一个网口。本人用来跑旁路由服务的主机是一台Intel J1900,4GB内存的主机。 VirtualBox配置 首先需要安装一个Ubuntu,我选择的是20.04LTS Server版本,所以没有图形化界面。 在系统安装好之后,关闭虚拟机,需要在VirtualBox里配置网络接口类型。默认的网络接口类型应该是NAT,这边找到主机连接光猫的那个网络接口,改为桥接。桥接的意思是,把虚拟主机看做一个独立的主机接入光纤猫的LAN网络,于是乎他就有了一个独立于物理机器的一个“平等的”IP地址了。这个IP地址也就是旁路由的网关地址。 如果你的光猫可以配置静态IP地址分配的白名单,建议把这个旁路由的MAC地址对应的IP分配成静态的,避免因为光纤猫DHCP变动导致旁路由的IP地址不是一个静态值。 Ubuntu配置 允许ip转发 sudo vim /etc/sysctl.conf 找到 net.ipv4.ip_forward=1 这一行,取消掉注释。如果没有找到的话直接新增一行也可以的。随后执行 sudo sysctl -p 使修改生效。 配置iptables 依次执行下面的指令,注意注释的部分,修改成自己的网络配置 iptables -t nat -N clash iptables -t nat -N clash_dns # 这个是fake-ip对应的dns地址,一般不用动… Continue reading (使用VirtualBox)构建Ubuntu下的clash旁路由服务

[C++] 在linux或windows上使用direct io

首先 Direct IO是一种不用内核缓存的IO, 它可以做到直接将用户空间的内存直接写入磁盘或者将磁盘数据直接读到用户空间的缓冲区,这种策略就是不用内核的缓存而使用用户自己设计的缓存. 需要注意的是,使用DirectIO会完全绕过系统的预取(prefetch)以及页缓存机制,如果不是必须,那么我认为还是优先考虑普通的read或者直接mmap吧。 Linux 几个方面注意一下就可以了 在调用[open]1时,把O_DIRECT加上。比如int fd = open("/path/to/file", O_DIRECT, O_RDONLY); 用于文件读写的buffer,必须和磁盘的块大小对齐(保守起见一般可以设为4KB)。有两种方法能拿到地址对齐的内存块: 直接使用posix_memalign; 直接new一段内存,然后根据返回的内存地址,往后找到第一个满足对齐要求的地址就可以。这种方法会浪费前面一段空间,不过其实posix_memalign在系统操作的时候”浪费”了; 借用mmap申请MAP_ANONYMOUS匿名映射,addr参数填NULL的话mmap出来的地址是页对齐的(至少是4K对齐),所以可以直接拿来用; 如果需要lseek之类的操作,注意seek的文件位置偏移量必须是磁盘块大小的整数倍; 2.4内核下, 每次文件读写的长度必须是块大小的整数倍(e.g. N * 4KB). Linux 2.6.0+无此要求; Windows下 参考这篇文章,可以知道Windows下也可以启用类似的机制,对应的打开文件flag是FILE_FLAG_NO_BUFFERING.用法类似,与Linux不同的地方在于: 在CreateFileA(…)调用的dwFlagsAndAttributes参数里把FILE_FLAG_NO_BUFFERING填上; 用于文件读写的buffer也是需要对齐的 也可以使用类似的方法_aligned_malloc申请对齐的内存,但是必须注意要使用_aligned_free释放内存,否则runtime error;

[洋垃圾专业户] 夏普Aquos R2 (SHV42)

于2020年秋天购入了一款洋垃圾,白色的夏普Aquos R2 (SHV42)。二手货还是比较便宜的,这款手机用了六百多块钱。 基本参数 CPU: 高通骁龙845 内存(RAM): 4GB 内置存储(ROM): 64GB(UFS),支持插TF卡 相机:2260万像素(主摄像头),1630万(副摄像头) 系统:出厂Android 8,官方升级至Android 10 重量:約181g 网络支持:单卡。电信4G(VoLTE), 移动2/4G,联通4G 屏幕:6.0吋 WQHD+ (1,440 × 3,040像素)IGZO 100HZ 高刷LCD屏 电池容量:3130mAh 快充支持:Quick Charge 3.0 / USB Power Delivery 中文支持:原生中文支持 印“相” (防窥模式) 上手感觉 机器重量适中,握持感还可以,就是厚度有点点厚。指纹识别位于机身下部,形成了一个下巴有那么一点尴尬,识别速度很快; 屏幕素质一流。虽然是二手机器,但是目测没有发现什么斑点。LCD屏的细腻程度是相当不错的,细看的话可以轻松秒杀手持的iPhone 12 Pro,但是亮度没有OLED屏高。这个机器最大的卖点估计是屏幕,但是我觉得这个挖孔真的是够碍眼。另外这个屏幕支持防窥模式,见上面第三张图,主要就是侧面看的时候能够看到很多图案; 摄像头:中规中矩,没什么特色; 响应速度:配合谷歌全家桶,响应速度还是很不错的。4GB的RAM只要不装太多国产渠道的App,没有发现不够用。但是由于是买来玩的机器,没有完全覆盖日常使用的场景;另外Android10给我的感觉挺不错,全屏幕手势的支持也比较到位; 续航:续航有点不大够用,不知道是这个二手机的电池本身已经不大行了还是怎么的,屏幕开启(高刷)的情况下耗电还是比较厉害的,估计是一天两充的水平。