科学上网-去你妈的gfw
0.代理方案
代理是一种网络技术,允许用户或应用通过中间服务器(代理服务器)与目标服务器进行通信,从而实现数据传输的控制、过滤、加速等功能。普通的HTTP/HTTPS代理、SOCKS代理、VPN等传统代理通常不专门设计来对抗防火墙和审查系统,其功能主要是聚焦于流量转发、访问控制、加密通信等。专用于GFW的代理在设计时就考虑到深度包检查、流量分析和阻断,其通过强加密、流量伪装与混淆等方式对抗网络封锁,一般都会采用客户端服务器模式
1.NavieProxy
NaïveProxy是一个基于Chromium网络栈(net 模块)开发的轻量级代理工具,其核心设计目标是模拟普通HTTPS流量,以规避深度包检测和流量审查。其客户端部分使用github-action构建项目,服务端使用Caddy充当代理服务器。
[Browser → Naïve client] ⟶ Censor ⟶ [Frontend → Naïve server] ⟶ Internet
代理过程中客户端浏览器的HTTPS请求被Naïve客户端接收(其用一个伪造的证书(如自动申请的免费证书)来和客户端完成TLS握手,拿到明文数据),随后客户端把明文包装成自己的HTTPS请求,再通过另一个 TLS连接发往后端真实代理服务器,代理服务器收到再解密、还原原始请求,再访问真实目标网站,数据的返程封装与请求过程一致。
安装
二进制安装,https://github.com/klzgrad/forwardproxy/releases中选择对应平台的二进制进程直接绿色安装
配置
服务器配置:
{
order forward_proxy before file_server
}
:443, hostdare.diyao.me {
tls hostdare@diyao.me
forward_proxy {
basic_auth diyao cauc.peter@gmail.com
hide_ip
hide_via
probe_resistance
}
file_server {
root /var/www/html
}
}
客户端配置:
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://diyao:cauc.peter@gmail.com@hostdare.diyao.me"
}
2.Tuic
Tuic(全称为TUIC - Tailscale UDP In Congestion control)是一个现代、高性能、低延迟的UDP传输协议,专为代理和绕过网络限制场景而设计,尤其适合替代传统的TCP/TLS + HTTP/HTTPS代理技术。它本质上是一个基于QUIC协议的应用层代理协议。QUIC内建的多路复用,加密(TLS 1.3),快速握手,自带拥塞控制和重传机制,使得Tuic天生就具备低延迟、无HOL(头阻塞)和NAT穿透能力强等优势
安装
二进制安装,https://github.com/EAimTY/tuic/releases中选择对应平台的二进制进程直接绿色安装
配置
服务器配置:
{
"server": "[::]:44443",
"users": {
"00000000-0000-0000-0000-000000000000": "cauc.peter@gmail.com"
},
"certificate": "/etc/letsencrypt/live/hostdare.diyao.me/fullchain.pem",
"private_key": "/etc/letsencrypt/live/hostdare.diyao.me/privkey.pem",
"congestion_control": "cubic",
"alpn": ["h3", "spdy/3.1"],
"udp_relay_ipv6": true,
"zero_rtt_handshake": false,
"dual_stack": true,
"auth_timeout": "3s",
"task_negotiation_timeout": "3s",
"max_idle_time": "10s",
"max_external_packet_size": 1500,
"send_window": 16777216,
"receive_window": 8388608,
"gc_interval": "3s",
"gc_lifetime": "15s",
"log_level": "warn"
}
客户端配置:
{
"relay": {
"server": "hostdare.diyao.me:44443",
"uuid": "00000000-0000-0000-0000-000000000000",
"password": "cauc.peter@gmail.com",
"ip": "185.238.248.111",
"congestion_control": "bbr",
"alpn": ["h3"]
},
"local": {
"server": "127.0.0.1:50000"
},
"log_level": "info"
}
3.Hysteria
Hysteria2是一个专为高性能网络代理设计的传输协议,特别擅长在 高丢包、高延迟、不稳定网络(如移动网络、跨境链路)中保持良好体验。它与Tuic一样,是新一代的"传输层代理",但实现方式不同,底层使用UDP + uTLS + 自定义协议(高效的流复用、多路并发、拥塞控制)
安装
二进制安装,https://github.com/apernet/hysteria/releases中选择对应平台的二进制进程直接绿色安装
配置
服务器配置:
listen: :44445
tls:
cert: /etc/letsencrypt/live/hysteria2.diyao.me/fullchain.pem
key: /etc/letsencrypt/live/hysteria2.diyao.me/privkey.pem
auth:
type: password
password: cauc.peter@gmail.com
masquerade:
type: proxy
listenHTTPS: :44445
proxy:
url: https://news.cctv.com/
rewriteHost: true
客户端配置:
server: hysteria2.diyao.me:44445
auth: cauc.peter@gmail.com
socks5:
listen: 127.0.0.1:9999
4.Trojan
Trojan是一种将代理数据使用TLS协议封装,使得网络流量躲避GFW的检测和运营商Qos限制的技术手段。Trojan是典型的TLS in TLS协议,将用户的https请求封装在正常的TLS请求中,在代理服务器侧还原请求,转发至真实服务器,完成代理功能。Trojan-Go使用Golang语言实现Trojan代理协议。
Trojan-Go支持:
- 多路复用提升并发性能
- 使用路由模块实现国内外分流
- 支持CDN流量中转(基于 WebSocket over TLS)
- 支持使用AEAD对Trojan流量进行二次加密(基于Shadowsocks AEAD)
- 支持可插拔的传输层插件
- 允许替换TLS使用其他加密隧道传输Trojan协议流量
安装
- 二进制安装https://github.com/p4gefau1t/trojan-go/releases中选择对应平台可执行文件
- 包管理工具ubuntu包管理工具安装,debian类系统,apt install trojan
- 源码安装
yum install git golang
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
export https_proxy=http://127.0.0.1:2080
export http_proxy=http://127.0.0.1:2080
git clone https://github.com/p4gefau1t/trojan-go.git
cd trojan-go && make && make install #安装systemd服务等,可选
配置
配置详细说明: https://p4gefau1t.github.io/trojan-go/basic/full-config/
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 4443,
"remote_addr": "HOST_IP",
"remote_port": 8081,
"log_level": 1,
"log_file": "",
"password": ["PASSWORD"],
"buffer_size": 6553600,
"dns": [],
"disable_http_check": false,
"ssl": {
"verify": true,
"verify_hostname": false,
"cert": "/etc/trojan-go/cert1.pem",
"key": "/etc/trojan-go/privkey1.pem",
"key_password": "",
"cipher": "",
"curves": "",
"prefer_server_cipher": false,
"sni": "wuhan.chinalemon.net",
"alpn": [
"http/1.1"
],
"session_ticket": true,
"reuse_session": true,
"plain_http_response": "",
"fallback_addr": "HOST_IP",
"fallback_port": 1234,
"fingerprint": "firefox"
},
"tcp": {
"no_delay": true,
"keep_alive": true,
"prefer_ipv4": false
},
"mux": {
"enabled": true,
"concurrency": 1024,
"idle_timeout": 30
},
"router": {
"enabled": false,
"bypass": [],
"proxy": [],
"block": [],
"default_policy": "proxy",
"domain_strategy": "as_is",
"geoip": "/usr/local/bin/geoip.dat",
"geosite": "/usr/local/bin/geosite.dat"
},
"websocket": {
"enabled": false,
"path": "",
"hostname": ""
},
"shadowsocks": {
"enabled": false,
"method": "AES-128-GCM",
"password": ""
},
"transport_plugin": {
"enabled": false,
"type": "",
"command": "",
"plugin_option": "",
"arg": [],
"env": []
},
"forward_proxy": {
"enabled": false,
"proxy_addr": "",
"proxy_port": 0,
"username": "",
"password": ""
},
"mysql": {
"enabled": false,
"server_addr": "MYSQL_HOST",
"server_port": 53306,
"database": "vps",
"username": "trojan",
"password": "PASSWORD",
"check_rate": 600
},
"redis": {
"enabled": false,
"server_addr": "localhost",
"server_port": 6379,
"password": "PASSWORD"
},
"api": {
"enabled": true,
"api_addr": "0.0.0.0",
"api_port": 10000,
"api_tls": true,
"ssl": {
"cert": "/etc/trojan-go/server-cert.pem",
"key": "/etc/trojan-go/server-key.pem",
"key_password": "PASSWORD",
"client_cert": []
}
}
}
5.SSH正向代理
ssh -NfD 1080 root@hostdare.diyao.me // 不执行ssh远程命令 后台运行 本地创建socks端口代理
6.Kcptun + Shadowsocks
隧道Kcptun
- 安装
- 包管理工具安装 apt-get install kcptun
- 源码安装 https://github.com/xtaci/kcptun
- 配置
{
"localaddr": ":8388",
"remoteaddr": "185.238.248.111:5353",
"key": "yaodi_cauc@163.com",
// 激进的重传策略, 适合低延时的应用要求
"mode": "fast3",
// Differentiated Services Code Point, 配置 IP 数据包的 QoS, 通过对 IP 数据包的头部进行标记,
// 来实现在网络设备(如路由器、交换机)中优先处理高优先级流量
// https://en.wikipedia.org/wiki/Differentiated_services#Commonly_used_DSCP_values
// 46 EF Expedited Forwarding (EF) PHB — dedicated to low-loss, low-latency traffic
"dscp": 46,
// 服务器连接的总数限制
"conn": 8,
// 一个连接900s中没有数据传输, 断开连接
"autoexpire": 900,
// 进制数据压缩
"nocomp": true,
"sockbuf": 16777217
}
代理Shadowsocks
- 安装, pip install shadowsocks
- 配置
服务端配置
{
"server":"127.0.0.1",
"server_port":8388,
"password":"yaodi_cauc@163.com",
"timeout":600,
"method":"aes-256-cfb", // 内核支持选项 减少三次握手数量
// 1. 传统交互 syn -> sync + ack -> ack
// 2. TFO 首次依旧是传统的三次握手(sync + FOC标记 -> 根据源ip计算出cookie, 发送sync+ack -> 存储cookie下次)
// 重连:
// 1. sync + cookie + data -> 验证cookie
// a. 失败发送sync+ack传统握手
// b. 数据提交应用层 + 发送sync + ack, 不必等待客户端ack, 服务端处理完数据, 发送处理结果
"fast_open":false,
"tunnel_remote":"8.8.8.8",
"dns_server":["8.8.8.8", "8.8.4.4"],
"tunnel_remote_port":53,
"tunnel_port":53,
"libsodium":"/usr/local/lib/libsodium.so",
"libmbedtls":"/usr/local/lib/libmbedcrypto.2.4.0.dylib"
}
客户端配置
{
"server":"127.0.0.1",
"server_port":8388,
"local_port":1080,
"password":"yaodi_cauc@163.com",
"timeout":600,
"method":"aes-256-cfb",
"local_address":"192.168.5.9",
"fast_open":false,
"tunnel_remote":"8.8.8.8",
"dns_server":["8.8.8.8", "8.8.4.4"],
"tunnel_remote_port":53,
"tunnel_port":53,
"libsodium":"/usr/local/lib/libsodium.so",
"libmbedtls":"/usr/local/lib/libmbedcrypto.2.4.0.dylib"
}
目前常见的代理工具远不止前文提到的这些,实际上还有许多其他有效的代理方案可供使用。例如,VLESS和VMess等工具不仅功能更强大(all in one),而且伪装效果可能更加出色。由于时间有限,后续有机会再进一步补充
1.管理面板
git clone https://github.com/v2board/v2board-docker.git
cd v2board-docker/
git submodule update --init
echo ' branch = dev' >> .gitmodules
git submodule update --remote

管理员界面 https://xboard.diyao.me/13241964
用户界面 https://xboard.diyao.me/
2.环境变量
一般情况系统可以通过设置 http_proxy|https_porxy|ftp_proxy|all_proxy|no_proxy|socks_proxy 配置代理
常用工具代理配置
- curl
curl --proxy=http://127.0.0.1:2080 your.forbidden.resources
echo proxy=http://127.0.0.1:2080 >> ~/.curlrc
- wget
https_proxy=http://127.0.0.1:2080 wget https://your.forbidden.resources
- git
git config --global|--local http.proxy http://127.0.0.1:2080
git config --global --unset http.proxy
git clone https://github.com/v2board/v2board.git
- apt
apt-get install cmake -o Acquire::Http::Proxy=http://127.0.0.1:2080
cat << EOF > /etc/apt/apt.conf.d/proxy.conf
Acquire::Http::Proxy "http://127.0.0.1:2080";
Acquire::Https::Proxy "http://127.0.0.1:2080";
EOF
- yum
http_proxy=http://127.0.0.1:2080 yum install cmake
cat << EOF > /etc/yum.conf
proxy=http://127.0.0.1:2080
EOF
- docker(most systemd管理应用均使用drop in可插拔方式)
mkdir -p /etc/systemd/system/docker.service.d
cat << EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:2080"
Environment="ALL_PROXY=http://127.0.0.1:2080"
Environment="HTTPS_PROXY=http://127.0.0.1:2080"
Environment="NO_PROXY=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.0/8,localhost"
EOF
3.高级主题
在掌握基本的科学上网原理与工具使用之后,本节进一步探索更深入的网络策略与优化手段。这些高级主题不仅有助于提升连接的稳定性与速度,还能增强整体系统的可用性与隐蔽性。无论是在应对复杂网络环境,还是在追求更高匿名性与抗干扰能力的场景中,这些进阶内容都至关重要。
-
高可用, 负载均衡 haproxy
通过将多个后端代理节点挂在HAProxy后面,即使某个节点宕机,客户端请求仍可被路由到其他健康节点,保证服务不中断。同时,HAProxy还支持基于端口、协议、路径的智能路由,可应对复杂的流量分发需求,是科学上网架构中提升可靠性和可维护性的常见手段
listen admin_stats stats enable bind *:28888 #监听的ip端口号 mode http #开关 option httplog log global maxconn 10 stats refresh 1s #统计页面自动刷新时间 stats uri /admin?stats #访问的uri ip:8080/admin stats realm haproxy stats auth diyao:625886 #认证用户名和密码 stats hide-version #隐藏HAProxy的版本号 stats admin if TRUE #管理界面,如果认证成功了,可通过webui管理节点 global maxconn 5120 #默认最大连接数 log 127.0.0.1:514 local0 debug #输出到本机,info级别 #log 192.168.5.170:9001 local0 debug #输出到本机,info级别 defaults mode tcp #所处理的类别,默认采用http模式 option forwardfor #将客户端真实ip加到HTTP Header中供后端服务器读取 option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只>能模拟这种模式的实现 retries 2 #2次连接失败就认为服务器不可用,主要通过后面的check检查 option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器 option abortonclose #当服务器负载很高时,自动结束掉当前队列中处理比较久的链接 timeout connect 180000 #连接超时时间 timeout client 180000 #客户端连接超时时间 timeout server 180000 #服务器端连接超时时间 maxconn 5120 #默认最大连接数 log global userlist UsersFor_ProxyAuth user diyao insecure-password 625886 frontend trojan-in mode http option httplog option http_proxy option http-use-proxy-header capture request header proxy-authorization len 128 capture response header status-code len 32 http-request set-log-level debug bind 0.0.0.0:38888-38890 alpn h2,http/1.1 default_backend trojan-client acl auth_acl http_auth(UsersFor_ProxyAuth) http-request auth realm BasicAuth unless auth_acl backend trojan-client mode http option http-use-proxy-header timeout server 180000 balance uri option httpchk GET /generate_204 HTTP/1.1\r\nHost:\ client3.google.com\r\nProxy-Connection:\ Keep-Alive server 185.238.248.111 127.0.0.1:1443 maxconn 5120 weight 60 check inter 30000 rise 2 fall 3 -
dns-cache dnsmasq systemd-resovled
计算机科学中有两大难题:命名、缓存失效和off-by-one错误。在代理服务器上开启systemd-resovled,优化dns缓存配置可以提升DNS解析速度和连接稳定性
-
代理内部优化
代理内部优化主要涉及代理工具的配置参数调整,不同的代理方案配置选项不同。
-
隐蔽ip 1. cloudfare proxy 2. tor网络
- cloudfare,利用其cdn功能可以防止公网ip的暴露,缓解直接封锁。更高级的玩法还有域前置、TLS 加密、混淆协议、ESNI/ECH、分布式代理等技术,进一步提高代理安全性
- tor网络,其实与科学上网并无很大关联,它的核心目标是匿名通信,而非绕过特定国家或地区的网络封锁。但可以在代理服务器侧接入tor网络,可以提升匿名性与抗审查能力
-
gfw绕过 https://github.com/gfwlist/gfwlist.git
gfwlist是一个由社区维护的域名列表,包含了在中国大陆被防火长城(GFW)屏蔽的网站域名。这份列表最初用于配合代理软件(如Shadowsocks、Privoxy、SwitchyOmega等)实现"按需代理"功能,即仅对列表中被屏蔽的站点走代理,其余流量则直连,大幅降低代理负载,提高访问效率。其使用Adblock Plus的规则语法,格式简洁易于解析。许多科学上网工具(如 Clash、V2Ray)也提供了与gfwlist兼容的配置方式,或支持将其转换为YAML、PAC等格式用于路由策略。在实际使用中,建议将gfwlist作为基础策略。鉴于新版的chrome浏览器停止对扩展Manifest V2版本的支持,用户需要使用zeroomega加载gfwlist作为基础代理策略
-
切换内核拥塞控制算法bbr
TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由Google开发的一种TCP拥塞控制算法,旨在显著提高互联网传输速度,同时减少网络延迟。BBR的核心思想是基于网络的瓶颈带宽和往返时间(RTT)来控制网络流量,而不是依赖于传统方法中的数据包丢失作为网络拥塞的主要指标。BBR拥塞控制算法在内核4.9版本正式发布,用户只需要简单开启即可。BBR积极地争取带宽使用权,能更快突破GFW的限速窗口,其对抗GFW限速、丢包等轻度干扰效果明显。现在BBR算法存在多个版本,如需最新版本可能需要重新编译内核模块。
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf sudo sysctl -p