.:. 草榴社區 » 技術討論區 » 基于云函数 制作 v2ray 节点监测 自动复活机制
--> 本頁主題: 基于云函数 制作 v2ray 节点监测 自动复活机制 字體大小 寬屏顯示 只看樓主 最新點評 熱門評論 時間順序
爱自由


級別:新手上路 ( 8 )
發帖:314
威望:41 點
金錢:293011 USD
貢獻:0 點
註冊:2015-03-27


基于云函数 制作 v2ray 节点监测 自动复活机制



0. 前记
题主 v2ray 是购买的 aws lightsail 自己搭建的, 3.5 刀一个月.
但是时不时会抽风, ip 被和谐.
因此, 研究了下, 基于云函数制作了 定时监测 以及挂了自动刷新 ip 的脚本,
感觉不错, share 出来

1. 原理
整个流程, 比较简单.
首先云函数用的 阿里云的 python 允函数, 免费额度够用了,
其次监测 是 基于 v2ray 官方的 vmessping 工具实现的.
aws 的服务器有一点好的就是关闭后在启动, 服务区 ip 会变, 所以, 如果 ip 被墙, 重启换个 ip 就又复活了
这里我是每次服务器变更 ip 后, 自动把新 ip 指向我的域名, 我客户端也是直接使用的 域名.
所以当前 v2ray 服务端变更 ip 后, 手机/电脑上的 v2ray 客户端不需要做变更,也可正常使用
流程图 大概如下:

 

2. 具体实现
2.1 云函数
这里我用的阿里云的云函数, region 选的 北京,
必须选大陆的 region, 因为网络请求是在当前region下发起的, 如果选国外, 那么大概率你的梯子永远“健康”...
考虑到篇幅问题, 我把部分 refresh_ec2_ip 函数代码去掉了,其实就是调用 aws 官方接口把自己的实例, 关机在开机.
複製代碼

# -*- coding: utf-8 -*-
import logging
import json
import os
import re
regex = r"([0-9]+) requests made, ([0-9]+) success, total time ([0-9.]+)s"
AWS_CONFIG = {
    "aws_access_key_id": "xxxx",
    "aws_secret_access_key": "xxxx",
    "region_name": "ap-southeast-1",
    "instanceName": "CentOS-1-V2ray",
}
LIGHTSAIL_CLIENT = boto3.client(
    'lightsail',
    aws_access_key_id=AWS_CONFIG['aws_access_key_id'],
    aws_secret_access_key=AWS_CONFIG['aws_secret_access_key'],
    region_name=AWS_CONFIG['region_name']
)
def get_instance_vmess():
    item = LIGHTSAIL_CLIENT.get_instance(
        instanceName=AWS_CONFIG.get('instanceName')
    )
    detail = {
        "v": "2",
        "ps": "爱自由",
        "add": item['instance'].get('publicIpAddress'),
        "port": 3306,
        "id": "xxxx",
        "aid": 2,
        "net": "tcp",
        "type": "none",
        "host": "",
        "path": "",
        "tls": "none"
    }
    return detail, str(base64.b64encode(json.dumps(detail).encode('utf-8')), 'utf-8')
def handler(event, context):
  logger = logging.getLogger()
  vmess = get_instance_vmess()
  output = os.popen(f'/opt/python/vmessping_amd64_linux -c 3 {vmess}')
  ping_resp = output.read()
  matches = re.search(regex, ping_resp, re.MULTILINE)
  matches.groups()
  matches = re.finditer(regex, ping_resp, re.MULTILINE)
  ping_result = matches.groups()
  if groups[1]=='0':
    refresh_ec2_ip(LIGHTSAIL_CLIENT)
  return ''

2.2 云函数触发器
 

2.3 vmessping
vmessping 这个是 v2ray 官方二进制程序,  Github Release 页面下载后直接打包进函数代码即可:
用法 : vmessping 'vmess://ew0KI ...'
vmess:// 后面那一串是自己节点信息的json串, 然后执行 base64 得到的.
这个命令 监测返回格式如下:
複製代碼
3 requests made, 3 success, total time 2.618939579s

代表 ping 了 三次, 成功 三次, 耗时 2.61秒, 如果 成功数为0,则检测失败, 我们就可以执行服务器重启的业务逻辑了.
複製代碼

Vmessping ver[v0.3.4], A prober for v2ray (v2ray-core: 4.23.2)
Net: tcp
Addr: xxx.xxx.xxx.xxx
Port: 3306
UUID: xxxx
Type: none
TLS: none
PS: xxx
Ping http://www.google.com/gen_204: seq=1 time=208 ms
Ping http://www.google.com/gen_204: seq=2 time=235 ms
Ping http://www.google.com/gen_204: seq=3 time=174 ms
--- vmess ping statistics ---
3 requests made, 3 success, total time 2.618939579s


后记
关于 v2ray 的搭建, 其实下次也可出一片文章.
授人以鱼不如授人以渔




赞(40)
DMCA / ABUSE REPORT | TOP Posted: 08-26 21:14 樓主 引用 | 發表評論
最爱咬


級別:新手上路 ( 8 )
發帖:615
威望:62 點
金錢:44998 USD
貢獻:0 點
註冊:2015-03-23


膜拜技术区大佬
TOP Posted: 08-26 21:16 #1樓 引用 | 點評
马勒逼船长


級別:新手上路 ( 8 )
發帖:536
威望:54 點
金錢:2510 USD
貢獻:0 點
註冊:2023-04-07

1024
TOP Posted: 08-26 21:29 #2樓 引用 | 點評
Loopll哼


級別:新手上路 ( 8 )
發帖:39
威望:4 點
金錢:251 USD
貢獻:0 點
註冊:2023-07-31

技术大佬在哪儿都值得赞👍🏻
TOP Posted: 08-26 21:32 #3樓 引用 | 點評
卡拉卡拉


級別:聖騎士 ( 11 )
發帖:1462
威望:300 點
金錢:12095 USD
貢獻:30000 點
註冊:2007-10-02

看不懂啊,纯支持。
TOP Posted: 08-26 21:42 #4樓 引用 | 點評
ygq1024


級別:新手上路 ( 8 )
發帖:15
威望:2 點
金錢:51 USD
貢獻:0 點
註冊:2023-08-25

大佬厉害👍🏻,感谢分享
------------------------
1
TOP Posted: 08-26 21:52 #5樓 引用 | 點評
唯有淫心


級別:聖騎士 ( 11 )
發帖:7942
威望:829 點
金錢:50074 USD
貢獻:2637 點
註冊:2019-03-12

不懂,只知道厉害
TOP Posted: 08-26 21:53 #6樓 引用 | 點評
Gorgeoustar


級別:天使 ( 14 )
發帖:3415
威望:342 點
金錢:37609741 USD
貢獻:3000000 點
註冊:2014-06-05

不明觉厉
TOP Posted: 08-26 22:13 #7樓 引用 | 點評
十二次承诺


級別:風雲使者 ( 13 )
發帖:1708
威望:181 點
金錢:14666346 USD
貢獻:250616 點
註冊:2012-04-22

技术大佬
TOP Posted: 08-26 22:14 #8樓 引用 | 點評
特洛夫斯基


級別:精靈王 ( 12 )
發帖:13324
威望:1235 點
金錢:56021082 USD
貢獻:28944 點
註冊:2015-01-27

这是技术大佬
TOP Posted: 08-26 22:51 #9樓 引用 | 點評
潇洒在风尘间


級別:騎士 ( 10 )
發帖:3777
威望:381 點
金錢:7403 USD
貢獻:10 點
註冊:2023-03-15

程序看不懂,牛逼就行了
TOP Posted: 08-26 22:53 #10樓 引用 | 點評
笑春风多情


級別:聖騎士 ( 11 )
發帖:5741
威望:575 點
金錢:957403 USD
貢獻:2391 點
註冊:2015-12-26


完全看不懂
TOP Posted: 08-26 23:07 #11樓 引用 | 點評
天外非仙


級別:光明使者 ( 14 )
發帖:13230
威望:18907 點
金錢:15771 USD
貢獻:110606 點
註冊:2011-06-06

看不懂  但是就是觉得技术帝牛BPLUS
------------------------
江湖啊,没什么好,就是酒还行!

 
TOP Posted: 08-26 23:08 #12樓 引用 | 點評
电脑专家


級別:精靈王 ( 12 )
發帖:1315
威望:105 點
金錢:1347 USD
貢獻:56850 點
註冊:2014-08-25

好久没自己搭过梯子了,期待v2ray的帖子
TOP Posted: 08-26 23:12 #13樓 引用 | 點評
未完待续2014


級別:精靈王 ( 12 )
發帖:354
威望:36 點
金錢:113572401 USD
貢獻:100000 點
註冊:2014-04-30

这个可以的,谢谢分享,有空研究下!
TOP Posted: 08-26 23:30 #14樓 引用 | 點評
软件工程师


級別:俠客 ( 9 )
發帖:2810
威望:282 點
金錢:9551 USD
貢獻:21 點
註冊:2022-09-08

鱼渔看不懂
TOP Posted: 08-26 23:31 #15樓 引用 | 點評
李知恩


級別:聖騎士 ( 11 )
發帖:785
威望:311 點
金錢:34005 USD
貢獻:22222 點
註冊:2021-06-10

支持技术分享
TOP Posted: 08-26 23:39 #16樓 引用 | 點評
多屏共享


級別:新手上路 ( 8 )
發帖:378
威望:76 點
金錢:447 USD
貢獻:5 點
註冊:2021-05-12


1024
TOP Posted: 08-27 00:05 #17樓 引用 | 點評
虛極靜篤


級別:俠客 ( 9 )
發帖:1440
威望:190 點
金錢:4692 USD
貢獻:0 點
註冊:2022-10-24

技术贴看不懂啊。
TOP Posted: 08-27 01:45 #18樓 引用 | 點評
美胸控


級別:聖騎士 ( 11 )
發帖:7787
威望:780 點
金錢:11573 USD
貢獻:0 點
註冊:2019-02-23

感谢楼主分享
TOP Posted: 08-27 05:23 #19樓 引用 | 點評
clarkechan


級別:俠客 ( 9 )
發帖:1919
威望:192 點
金錢:4977 USD
貢獻:0 點
註冊:2022-04-16

很有意思
TOP Posted: 08-27 05:25 #20樓 引用 | 點評
子树


級別:精靈王 ( 12 )
發帖:19133
威望:1944 點
金錢:26675 USD
貢獻:0 點
註冊:2022-11-15

感谢分享
TOP Posted: 08-27 06:46 #21樓 引用 | 點評
空耳君


級別:騎士 ( 10 )
發帖:2081
威望:239 點
金錢:1132 USD
貢獻:10918 點
註冊:2020-09-05

支持技术贴,技区发扬光大,做大做强!
TOP Posted: 08-27 07:07 #22樓 引用 | 點評
地狱猫


級別:新手上路 ( 8 )
發帖:40
威望:5 點
金錢:43 USD
貢獻:0 點
註冊:2022-12-10


技术贴,需要支持
TOP Posted: 08-27 10:50 #23樓 引用 | 點評
玩切死哦


級別:新手上路 ( 8 )
發帖:120
威望:13 點
金錢:245 USD
貢獻:0 點
註冊:2023-05-20

1024.
TOP Posted: 08-27 17:20 #24樓 引用 | 點評

.:. 草榴社區 -> 技術討論區

快速回帖 頂端
內容
HTML 代碼不可用

使用簽名
Wind Code自動轉換

按 Ctrl+Enter 直接提交