此帖被万恶的NodeSeek管理员设置了私有状态,因此同步转发到此页面一次
此方法不能保证地址始终固定不变,且地址有可能变换到IDC机房,因此需要斟酌考虑。 
以下为效果图

vpngate项目是由全世界各个国家的网络志愿者支撑起来的,大部分地址都是志愿者使用自己的家庭宽带搭建此服务。
如果需要接入,直接下载softether客户端即可
但我认为还可以做的更加完善一些,首先原生的客户端不支持自动检测节点是否可用,如果我想要使用还需要挨个测试一次,直到选择合适的节点
还有就是,不支持常见的代理协议,如果我为了使用这个节点还需要开启电脑启动客户端才能使用,那就太麻烦了。
于是,我便开始按照我的设想、以及我现有的条件,将这些缺点修复:
第一,通过docker部署在服务器上,服务器本身有透明代理
第二,这个服务器要将vpngate节点转发出一个shadowsocks代理链接,这样方便的让手机也可以连接上
第三,这个项目要可以自动检测节点状态,并按照地区将节点分类、增加备用节点机制
第四,可以自动从vpngate网站拉取节点状态,并实时更新
由于我不会编程,所以用了codex将这个想法实现了。
实现的效果
我现在可以通过转发出来的shadowsocks链接

通过v2ray可以直接连接到我自己部署的“中转”节点
这是IP质量截图,虽然仍然显示IDC机房,但IP质量比其它机场、一般VPS好太多了,关键是免费
如果你对此感兴趣,并且需要这一项目,请接着查看部署方案
你需要有一个透明代理,至少服务器本身能够上国际互联网
因为这个项目解决的是 免费获取到纯净地址 而不是如何翻阅GFW
我用的方案是使用OpenWRT作为主路由,对整个局域网进行透明代理
对于服务器本身使用shell clash是否能够代理我不清楚,可以自己试试
随后使用docker compose进行部署
创建一个目录,比如/root/vpngate-to-proxy/
里面还需要有一个data目录,用来数据库存放节点数据
然后新建 docker-compose.yaml,里面填上
x-service-defaults: &service-defaults
restart: unless-stopped
x-gluetun-env: &gluetun-env
VPN_SERVICE_PROVIDER: custom
VPN_TYPE: openvpn
OPENVPN_CUSTOM_CONFIG: /config/client.ovpn
DNS_ADDRESS: 127.0.0.1
DNS_KEEP_NAMESERVER: off
FIREWALL_OUTBOUND_SUBNETS: 8.8.8.8/32
DOT: on
DOT_PROVIDERS: google
BLOCK_MALICIOUS: off
SHADOWSOCKS: on
SHADOWSOCKS_PASSWORD: ${SHADOWSOCKS_PASSWORD}
SHADOWSOCKS_CIPHER: ${SHADOWSOCKS_CIPHER}
SHADOWSOCKS_LISTENING_ADDRESS: :${SHADOWSOCKS_PORT}
x-manager-env: &manager-env
PYTHONUNBUFFERED: "1"
GLUETUN_CONTAINER_NAME: gluetun
OVPN_PATH: /config/client.ovpn
DB_PATH: /config/proxies.db
VPNGATE_URL: ${VPNGATE_URL}
TEST_URL: ${TEST_URL}
SOCKS_HOST: ${SOCKS_HOST}
SHADOWSOCKS_SERVER: ${SHADOWSOCKS_SERVER}
SHADOWSOCKS_PASSWORD: ${SHADOWSOCKS_PASSWORD}
SHADOWSOCKS_CIPHER: ${SHADOWSOCKS_CIPHER}
SHADOWSOCKS_PORT: ${SHADOWSOCKS_PORT}
PROBE_TIMEOUT: ${PROBE_TIMEOUT}
PROBE_ATTEMPTS: ${PROBE_ATTEMPTS}
PROBE_WORKERS: ${PROBE_WORKERS}
MAINTENANCE_INTERVAL: ${MAINTENANCE_INTERVAL}
SS_LOCAL_HOST: ${SS_LOCAL_HOST}
SS_LOCAL_PORT: ${SS_LOCAL_PORT}
CHECK_INTERVAL: ${CHECK_INTERVAL}
CHECK_TIMEOUT: ${CHECK_TIMEOUT}
FAIL_THRESHOLD: ${FAIL_THRESHOLD}
COOL_DOWN: ${COOL_DOWN}
WEB_HOST: 0.0.0.0
WEB_PORT: 8080
WEB_PASSWORD: ${WEB_PASSWORD}
GLUETUN_LOG_LINES: ${GLUETUN_LOG_LINES}
WEB_NODES_LIMIT: ${WEB_NODES_LIMIT}
services:
gluetun:
<<: *service-defaults
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
privileged: true
volumes:
- ./vpn-data:/config
ports:
- "${SHADOWSOCKS_PORT}:${SHADOWSOCKS_PORT}"
environment: *gluetun-env
manager:
<<: *service-defaults
image: kindmitaishere/vpngate-to-proxy:router-26.1.14
container_name: vpngate-manager
depends_on:
- gluetun
environment: *manager-env
volumes:
- ./vpn-data:/config
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "${WEB_PORT}:8080"然后创建一个.env文件,里面填上这些东西
# VPNGate fetch VPNGATE_URL=https://www.vpngate.net/api/iphone/ TEST_URL=http://www.google.com/generate_204 # Shadowsocks SHADOWSOCKS_PASSWORD=vpngate SHADOWSOCKS_CIPHER=chacha20-ietf-poly1305 SHADOWSOCKS_PORT=8388 SHADOWSOCKS_SERVER=gluetun SS_LOCAL_HOST=127.0.0.1 SS_LOCAL_PORT=1080 # Probe / maintenance PROBE_TIMEOUT=2 PROBE_ATTEMPTS=2 PROBE_WORKERS=30 MAINTENANCE_INTERVAL=60 # Connectivity monitor CHECK_INTERVAL=10 CHECK_TIMEOUT=5 FAIL_THRESHOLD=3 COOL_DOWN=20 SOCKS_HOST=127.0.0.1:1080 # Dashboard WEB_PASSWORD=kindmita WEB_PORT=8080 WEB_NODES_LIMIT=500 GLUETUN_LOG_LINES=200
这些都是配置内容,你可以保持默认,也可以自己修改
随后 docker compose up -d
等待执行完毕后,就可以进行通过 IP:8080 访问控制面板啦
shadowsocks的默认连接方式为 IP:8388 密码 vpngate 加密方式chacha20-ietf-poly1305
效果差不多就是如图上所示的一样,当然这个项目本身就比较的简陋,我不确定你们是否能够顺利的拉取到镜像,我听说docker仓库会删除长时间不被拉取的镜像
我是米塔山
发表评论