OpenGFW 是一个 Linux 上灵活、易用、开源的 GFW 实现,并且在许多方面比真正的 GFW 更强大。可以部署在家用路由器上的网络主权。
本项目仍处于早期开发阶段。测试时自行承担风险。
我们正在寻求贡献者一起完善本项目,尤其是实现更多协议的解析器!
go build
export OPENGFW_LOG_LEVEL=debug
./OpenGFW -c config.yaml rules.yaml
io:
queueSize: 1024
local: true # 如果需要在 FORWARD 链上运行 OpenGFW,请设置为 false
workers:
count: 4
queueSize: 16
tcpMaxBufferedPagesTotal: 4096
tcpMaxBufferedPagesPerConn: 64
udpMaxStreams: 4096
关于规则具体支持哪些协议,以及每个协议包含哪些字段的文档还没有写。目前请直接参考 "analyzer" 目录下的代码。
规则的语法请参考 Expr Language Definition。
- name: block v2ex http
action: block
expr: string(http?.req?.headers?.host) endsWith "v2ex.com"
- name: block v2ex https
action: block
expr: string(tls?.req?.sni) endsWith "v2ex.com"
- name: block shadowsocks
action: block
expr: fet != nil && fet.yes
- name: block trojan
action: block
expr: trojan != nil && trojan.yes
- name: v2ex dns poisoning
action: modify
modifier:
name: dns
args:
a: "0.0.0.0"
aaaa: "::"
expr: dns != nil && dns.qr && any(dns.questions, {.name endsWith "v2ex.com"})
http://github.com/apernet/OpenGFW
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。