博文

目前显示的是 十一月, 2025的博文

sing-box的IPv4优先 IPv6优先行为受 gai.conf 控制?

图片
前言 群友反馈在Deiban13下不能设置IPv4优先 通过进一步的交流, 群友的意思是 sing-box 向外访问, 无法通过 gai.conf 来设置是 IPv4优先 还是 IPv6优先 群友用的是fakeip的模式, 翻墙客户端发给梯子的数据包中只有域名, 没有IP. 技术基础 用 curl socks5h 模拟翻墙客户端 fakeip 行为 编译getaddrinfo钩子 钩Go程序 编译sing-box https://sing-box.sagernet.org/zh/installation/build-from-source/ 准备测试环境 搭建一个简单的sing-box服务端 官方安装脚本  curl -fsSL https://sing-box.app/install.sh | sh 配置文件 nano /etc/sing-box/test-config.json {   "log": {     "level": "debug",     "output": "test-box.log",     "timestamp": true   },   "inbounds": [     {       "type": "socks",       "tag": "socks-in",       "listen": "127.0.0.1",       "listen_port": 1080     }   ],   "outbounds": [     {       "type": "direct"     }   ] } 命令行前台运行sing-box(不能Ctrl+C中断, 就这么放着) /usr/bin/sing-box -D /var/lib/sing-box -c /etc/sing-box/test-config.json run 新开一个SSH终端窗口. cur...

编译getaddrinfo钩子 LD_PRELOAD加载 钩Python程序 钩Go程序 GODEBUG=netdns=cgo

图片
上一篇, 我们用钩子拦截系统接口调用的方法验证某个程序是否调用了getaddrinfo系统接口. 这样的钩子技术可以应用在很多其它情况下. 并不会因为钩子的源代码是C, 就只能钩C写的程序 (curl 是 C写的). 编译钩子请参考 上一篇 , 略. 钩子文件是 /root/ hook_getaddrinfo.so 钩 Python 程序 感谢 Debian中文群的群友的 python 代码  https://t.me/c/1039975886/766756 python3 -c 'import sys, socket; [print(res) for res in socket.getaddrinfo(sys.argv[1], int(sys.argv[2] if len(sys.argv) > 2 else 80))]' api.myip.la 上面的代码是python调用系统 getaddrinfo. 我们在开头加上钩子, 得到 LD_PRELOAD=/root/ hook_getaddrinfo.so  python3 -c 'import sys, socket; [print(res) for res in socket.getaddrinfo(sys.argv[1], int(sys.argv[2] if len(sys.argv) > 2 else 80))]' api.myip.la 日志如下 钩 Go 程序 让GPT写一个Go程序, 实现简单的功能: 访问一个域名, 打印HTTP结果.  看起来就像curl 代码如下,  gurl.go package main import (   "fmt"   "io/ioutil"   "log"   "net/http"   "os"   "strings" // 导入 strings 包用于字符串操作   "time" ) func main() {   // --- 1. 处理命令行参数 ---   if len(os.Args) < 2 {     log.Fatalf("❌ 缺少参数。用法: gur...

The Hot3 in Last 7 Days

搭 Docker版 Sub-Store 带 http-meta 实现 集合订阅 测延迟 排序 筛选 生成新订阅 定时任务上传Gist

极简一键脚本 搭NaiveProxy梯子 自定义端口 与Caddy V2前置的VLESS/Vmess V2Ray共存 可开CDN