主要应对近期针对 docker.io. 的封锁,过于严重,影响面过大,所以做了统一的解决方案。 分享下解决逻辑,目前还没找到更好的解决办法
前置条件
后置条件
应用场景
ip addr add 172.32.1.1/32 dev eth0 # 增加 IP
# 安装部署 gost - 提供 SNI 代理
# ===============
curl -LO https://github.com/go-gost/gost/releases/download/v3.0.0-rc8/gost_3.0.0-rc8_linux_amd64.tar.gz
tar zxvf gost*.tar.gz
# 监听 80, 443 - 上游代理为 192.168.1.2:7890 ,如果在当前节点也可以 127.0.0.1:7890
./gost -L sni://:80 -L sni://:443 -F socks5://192.168.1.2:7890
# 测试 gost 代理是否成功
curl -H 'Host: google.com' 127.0.0.1
# 安装部署 dnsmasq
# ===============
apk add dnsmasq
# 上游配置
cat << EOF > /etc/dnsmasq.d/main.conf
server=223.5.5.5
log-queries=extra
EOF
# 配置代理常用的域名
curl -L https://ghproxy.com/raw.githubusercontent.com/wenerme/wener/master/notes/service/dns/gfwlist.txt \
| sed -E 's#.+#address=/&/172.32.1.1#' > /etc/dnsmasq.d/gfwlist.conf
# 测试启动
dnsmasq -d
# 测试,返回 172.32.1.1 为正常结果
nslookup google.com 127.0.0.1
# service dnsmasq start # 服务启动
# rc-update add dnsmasq # 开机自动启动
博文 https://wener.me/story/sni-proxy 原文 https://github.com/wenerme/wener/blob/master/story/2023/2023-06-21-sni-proxy.md
1
AngryPanda 2023-06-21 15:27:00 +08:00 16
国人做点事情太难了
不是🇺🇸人卡你脖子 就是🇨🇳人卡你脖子 |
2
iRiven 2023-06-21 15:27:28 +08:00
对于非 80/443 端口的流量,这样子不就变成 DNS 污染了。
|
3
wenerme OP @iRiven 但是需要代理的这些域名一般不会用到非 80 443 ,目前我自己用到了这些域名 https://github.com/wenerme/wener/blob/master/notes/service/dns/gfwlist.txt
|
5
ShareDuck 2023-06-21 17:09:48 +08:00
有被墙吗?广东电信和广东广电都能访问。
|
6
liantian 2023-06-21 17:13:30 +08:00
用得着那么麻烦么....
配个代理再拉镜像不就完了...以前又不是没封过了 |
7
realpg 2023-06-21 17:46:22 +08:00
封就封呗,无论是服务器还是自己电脑,整个梯子难度都是 0 ,何必瞎鸡儿折腾
买个锤子看啥都像钉子 |
8
dode 2023-06-21 17:54:57 +08:00 via Android
很棒
|
9
dode 2023-06-21 17:58:02 +08:00 via Android
clash 开启 DNS 服务可以提供同等功能吗
|
11
IvanLi127 2023-06-21 18:08:27 +08:00 via Android
话说为啥不直接在路由上跑 Clash ,除了吃性能外,好像挺方便的
|
12
yuange1975 2023-06-21 18:59:43 +08:00
fakedns?
|
13
billlee 2023-06-21 19:46:23 +08:00 via Android
IP 不如用国防部或 IBM 的网段
|
14
wenerme OP |
15
jiulang 2023-06-21 20:52:07 +08:00
Cloudflare 的 IP 都 block 了
|
16
kangyue9999 2023-06-21 22:52:14 +08:00
@AngryPanda 剩下人想卡卡不到?
|
17
lovelylain 2023-06-21 23:07:57 +08:00 via Android
clash fakedns 透明代理 不香吗?
|
18
bugfan 2023-06-22 01:19:25 +08:00
去年做 vpn 时候 ,写过 sni 代理,其实还是挺好用的。代码量也不大,只不过当时只实现了 ipv4,没做 ipv6.
这玩意好处就是客户端只需要配置个 dns 就行了,别的都不用动。 |
19
wwbfred 2023-06-22 01:28:02 +08:00
七层代理在中国泛用度肯定不如四层代理。使用代理的需求肯定不仅是 HTTP 和 HTTPS ,这个方案的适用度有限。这个方案我在家里也有些类似的应用,但主要用途是中间人攻击,另外对于部分限制 IP 的服务也有效果。
|
20
xxcheng 2023-06-22 12:01:20 +08:00
奈飞的 DNS 解锁是这个原理吗
|
22
huahsiung 2023-06-22 17:23:24 +08:00
这个方法我都用了好久了,但是我不是用 gost
gost 太重了,直接把 sniproxy 用 proxychain 代理出去就行,我就是这样用的。都用了好久了 自己的服务器或者电脑上其实不用 dnsmasq ,adguard 。把 /etc/hosts 添加一条记录就行,反正有控制权 172.32.1.1 docker.io 还可以添加多条 host 记录 172.32.1.1 docker.io 172.32.1.1 www.google.com 172.32.1.1 chat.opanai.com 解锁 chatGPT 等服务 |
23
wenerme OP 增加了 Docker, 简化部署
```bash # --network=host or -p 80:80 -p 443:443 -p 53:53/udp # -e FAKEIP=172.32.1.1 docker run --rm -it -e PROXY=socks5://192.168.66.1:7890 -p 80:80 -p 443:443 -p 53:53/udp --name proxy wener/sni-rev-proxy nslookup google.com 127.0.0.1 curl --resolve google.com:80:127.0.0.1 google.com # 添加 FAKEIP ip addr add 172.32.1.1/32 dev eth0 ``` - Dockerfile https://github.com/wenerme/dockerfiles/tree/master/sni-rev-proxy - https://github.com/wenerme/wener/blob/master/story/2023/2023-06-21-sni-proxy.md |