利用go的闭包机制实现函数缓存,并用 sync.Map 优化并发性能,weak 优化GC流程,同时通过泛型机制方便缓存的创建。
利用go的闭包机制实现函数缓存,并用 sync.Map 优化并发性能,weak 优化GC流程,同时通过泛型机制方便缓存的创建。
使用 Go 编写的简单 HTTP 文件服务器,支持静态文件服务、目录列表展示和 HTTP Range 请求。
HTTP协议的时序与报文
概述 本文讲述如何在一台普通的Linux(常见的发行版应该都没问题)安装Mihomo核心代理本机和局域网流量,并让steam和tailscale流量直连。同时不需要手动编辑iptables和nftables的规则。 对于负责代理的主机/软件,这里统称为 代理网关 在代理网关内部的流量,默认都会经过代理网关,局域网的流量则根据规则来判断。 准备工作 开启Linux内核流量转发 开启内核流量转发的关键在于设置以下几个参数 如果需要持久启用,可以将以下内容填入/etc/sysctl.d/99-sysctl.conf(如果由systemd管理),也可以在/etc/sysctl.conf设置 net.ipv4.ip_forward = 1 net.ipv4.conf.all.forwarding = 1 net.ipv6.conf.all.forwarding = 1 设置路由器静态路由 将FakeIP网段192.18.0.0/16的下一条设置为代理网关的IP,这样所有通过FakeIP DNS解析的请求都会被路由到代理网关。 Tun TUN设备是一个虚拟的三层网络接口,其实功能和只能用IP通信的网口(网卡)一样,特定的流量会被路由到TUN设备,只不过这些流量在被路由到TUN设备之后不会像普通的网卡一样,去往网关,而是会回到本机,由用户空间的程序进行处理(在这里指得就是Mihomo了)。不过因为TUN设备在三层,是无法获取到需要的代理的流量原本的域名,所以还需要需要 IP-域名 的映射表,这样就可以对流量进行分流。 TUN设备配置 Mihomo Tun的基础配置。 记得排除其他VPN网段的流量,如tailscale使用 100.64.0.0/10 网段。 tun: enable: true stack: mixed # 可选system或者gvisor,如果在windows上或者mac系统上选择mixed或者system需要放行防火墙 auto-route: true # 自动设置路由表, route-exclude-address: # 把以下这些地址/网络排除在外 - 192.168.0.0/16 - fc00::/7 # 排除Tailscale流量 - 100.64.0.0/10 FakeIP FakeIP能够创建这样一张映射表。启用FakeIP首先需要启用DNS功能。FakeIP是一个具有“黑魔法”的DNS服务器,它需要监听53端口(当然也可以通过DNS劫持等方法将DNS流量劫持到Mihomo),设置上游DNS服务器。对于不需要返回fakeip(也就是不走代理的流量,作用一样,但是并不是同一个东西)的请求,它将请求的域名转发给上游,最后返回服务器的IP地址,向IP-域名映射表中记录真实的映射关系。真正的“黑魔法”在于:对于需要代理的请求,FakeIP在收到这个请求以后立即返回一个虚假的IP,并添加到映射表中,对于后续的IP流量,直接转发给对端(也就是代理供应商的)。 注意,当启用FakeIP进行透明代理时,需要关闭浏览器/操作系统的安全DNS(DoH,DoT),并将DNS服务器设为代理网关的IP。 FakeIP配置 如果想要开启FakeIP,首先需要配置DNS,为了只代理有需要的流量,还需要进行DNS分流。 DNS 分流 在Mihomo中,DNS的作用如下: 规则匹配: 当匹配到基于IP的规则(且没有no-resolve,反之则不解析)时,比如根据geoip数据库判断是否为国内流量,如果是则走直连GEOIP,cn,DIRECT,Mihomo调用DNS模块解析出IP,然后进行比对,并判断是否执行操作。 直连: 如果请求的域名在fake-ip-filter中,返回由上游DNS解析出的真实IP,后续的流量请求则不再经过代理网关。 分流规则集: clash-rules fake ip filter 把希望直连或者代理会出问题(主要是游戏和NTP,一是延迟高,二是服务器可能处理不好UDP)的域名放在fakeip filter中。如果不是来自本机,在fake ip filter中的域名的后续请求不会再经过代理网关。 Steam分流 Steam的分流策略:默认直连,同时对Steam Community进行代理。Steam用 +.steamserver.net 域名来判断下载地区,所以需要返回真实IP。 ...
使用llama-index, google-gemini搭建RAG系统