openwr折腾记7-Frpc使用自主域名解析透传本地服务

FFrpc使用自主域名解析透传本地服务

  • 综述
      • frp透传服务结构流程-http服务域名透传
  • 第一部分openwrt-frpc客户端配置和使用
    • 指定服务器
    • 指定规则
    • 在自己的域名运营商处添加域名解析
  • 第二部分gpt3.5辅助shell编码实现frp自由切换服务器并更新dns解析
    • 获取切换服务器参数
    • 脚本实现切换
  • 更新DNS解析
    • 指定运营商并托管域名到cloudflare
    • 根据参数(域名:地址)更新DNS记录CNAME

免责声明: 本文只提供技术路线,为方便学生与编程人员本地调试程序。不得用于非法用途,域名与网站原则上需要经过网络备案,与本文的内容在使用中产生的相关问题,本文作者不承担责任,本文不代表任何利益相关方,仅是一些使用心得,有不足这处请见谅。

综述

宽带拨号网络在运营商使用子网IP以后,动态域名解释失去了原来的作用,对于学生党,程序员来说一个云主机,一个独立IP,甚至一个域名,都是要花费一笔钱的。这其中域名是最便宜的一种。于是就有借助域名和frp,nps npc,这一类的代理透传软件,访问家中openwrt,NAS之类服务的想法。经过个人的摸索形成了一些步骤和代码,现在分享给大家。

本文以Freefrp.net提供的frps为例讲解openwrt中frpc服务的配置流程,其中重点是:
http+域名透传本地地址端口
最终解决在一个freefrp.net网络节点断网后,自动切换另一个可用的网络节点
我的成果
http://pan.ezdial.cn/

frp透传服务结构流程-http服务域名透传

openwrt-frpc frps服务器 互联网客户 域名解析DNS 我要建立连接,server:port,token 和规则(http域名,提供服务的本地地址端口) 接受请求准备接受连接 请求访问my.domain.com,谁提供服务? 由frp.freefrp.net提供服务 我域名my.domain.com,**告诉我**车在水里吗? 你告诉我的my.domain.com,出来干活了,车在水里吗? 根据之前的规则,询问了本地地址端口,车在水里吗?它说没在。 没在 openwrt-frpc frps服务器 互联网客户 域名解析DNS

第一部分openwrt-frpc客户端配置和使用

指定服务器

在这里插入图片描述

  • 我们使用三个服务器地址,以后有更新可以上freefrp.net官网查看
    frp.freefrp.net
    frp1.freefrp.net
    frp2.freefrp.net
  • 下面是服务器添加
    在这里插入图片描述

指定规则

比如我在192.168.2.8:3007打开了服务比如ChatbotUI,一个访问openai在聊天窗口,配置如下:

在这里插入图片描述
添加规则。
代理名称需要一个唯一的字符串,类型选择http,这样才能使用自主域名动态改变frp服务器
我使用子域名fa,自定义域名fa.ezdail.cn访问192.168.2.8在3007端口提供在chatbotui窗口。
且指定了一个简单的auth用户wjc密码***

  • 最后启动运行测试
    在这里插入图片描述

在自己的域名运营商处添加域名解析

加入一条解析记录CNAME类型,fa.ezdial.cn指向上面frpc使用的节点:frp2.ezdial.cn,现在已经在报废状态,于是有一下面部分的折腾。

第二部分gpt3.5辅助shell编码实现frp自由切换服务器并更新dns解析

获取切换服务器参数

ssh进入openwrt后台,或者使用web shell,ttyp客户端

uci show frpc.frps
这是第一个节点的内容
uci show frpc.frps
frpc.frps=server
frpc.frps.server_port='7000'
frpc.frps.tcp_mux='true'
frpc.frps.alias='frp2'
frpc.frps.server_addr='frp2.freefrp.net'
frpc.frps.token='freefrp.net'
uci set frpc.main.server="frps"
uci commit frpc
这是设置使用第一个节点
uci show frpc.@server[1]
frpc.cfg06769c=server
frpc.cfg06769c.alias='frp'
frpc.cfg06769c.server_addr='frp.freefrp.net'
frpc.cfg06769c.server_port='7000'
frpc.cfg06769c.token='freefrp.net'
frpc.cfg06769c.tcp_mux='true'
这是第二个节点的内容,其中cfg06769c是他的识别码,
uci set frpc.main.server="cfg06769c"
uci commit frpc
这是设置使用第二个节点
  • 以此类推可以显示并使用第三个节点 uci show frpc.@server[2] 在下一节要用到

脚本实现切换

这个脚本的写作过程中不断借用ChatGPT3.5的帮助,

提问了以下问题:shell列表声明,循环使用列表元素,网络诊断,函数参数传递,并得到了成套的代码。也感谢chatbotui这个项目使得调用很顺滑。

让我在几分外行的情况下用3个小时,实现了这剖分代码。

#!/bin/bashfrpss=("frps" "cfg02769c" "cfg03769c") #上节打开的后背freefrp.net节点
cd /root/frpcauto
check_network() {target=$1ping -c 1 "$target" > /dev/null 2>&1if [ $? -eq 0 ]; thenecho "网络连接正常"return 0elseecho "无法连接到网络"return 1fi
}check_network pan.ezdial.cn
if [ $? -eq 0 ]; thenecho ok
elsefor item in ${frpss[@]}; doecho $itemserver=$itemcomm="uci get  frpc.$server.server_addr"ss=`$comm`echo $sscheck_network $ssif [ $? -eq 0 ]; thenecho server is okuci set frpc.main.server=$item    #切换节眯uci commit frpc/etc/init.d/frpc restart         #重起frpc服务./updatedns.sh pan.ezdial.cn $ss    #下一节要提供的解析数据修改./updatedns.sh fc.ezdial.cn $ss    breakfidonefi

更新DNS解析

这一章是bing搜素来的代码,可能gpt的有些不正常,借鉴了我用在acme上key,也就只有cloudflare在这里呢。没有去重新找token,zoneid。感觉不好找。
我感觉阿里也有相关的代码使用存储文件updatedns.sh
放在要用的地方,chmod +x updatedns.sh
更新CNAME
./updatedns.sh fc.ezdial.cn frp.freefrp.net

#!/bin/bash
#wanip_v4=`curl -s -k https://ip.cn | jsonfilter -e "$.ip"`
wanip_v4='frp.freefrp.net'
echo "set $1 cname $2 "record_name='pan.ezdial.cn'
if [ "$1" ]; then
record_name=$1 ;
fi
if [ "$2" ];  then
wanip_v4=$2 ;
echo "two args $wanip_v4"
fizoneid='71f66fcff8c2a902cc69a573b54de5'
cftoken='5GLE2sFk6_sMSD9Iw60rViRqESIK__S8UJxci'
zoneinfo=`curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?name=$record_name&type=CNAME" \-H "Authorization: Bearer $cftoken" \-H "Content-Type:application/json"  `
#echo $zoneinfo
recordid=` jsonfilter -s $zoneinfo  -e  "$.result[0].id" `
echo $recordid
result_cf=`curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/$recordid" \-H "Authorization: Bearer $cftoken" \-H "Content-Type: application/json" \--data "{\"type\":\"CNAME\",\"name\":\"$record_name\",\"content\": \"$wanip_v4\", \"ttl\":1,\"proxied\":false}"`
echo $result_cf

指定运营商并托管域名到cloudflare

这是迁移到cloudflare域名管理的步骤,
1.将您当前的名称服务器记录更新为我们分配给 your.domain.org 的名称服务器:

  1. melinda.ns.cloudflare.com
  2. michael.ns.cloudflare.com## 得到API KEY和脚本示例

根据参数(域名:地址)更新DNS记录CNAME

./updatedns.sh fc.ezdial.cn frp.freefrp.net

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/77988.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes(K8s)从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群

Kubernetes K8s从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群 一、etcd高可用拓扑选项1.堆叠(Stacked)etcd 拓扑2.外部 etcd 拓扑 二、准备工作三、建立集群1.将 kubelet 配置为 etcd 的服务管理器。2.为 kubeadm 创建配置文件…

postgresql表膨胀处理之pgcompacttable部署及使用

环境: 1)redhat-release:CentOS Linux release 7.6.1810 (Core) 2)database version:postgresql 14.6 一、添加pgstattuple pgcompacttable工具使用过程中需要依赖pgstattuple,因此需先添加pgstattuple…

服务器排查并封禁ip访问

前言 购买的服务器难免会遇到被攻击的情况,当我们发现服务器状态异常时,可以通过连接当前服务器的ip排查一下,并对可疑ip进行封锁禁止。我们可以通过路由跟踪来查看可疑ip。以下是两种解决方案。 解决方案 iptables netstat是一个用于监视…

spring总结

目录 什么是Spring? Spring的优缺点? 优点: 缺点: Spring IOC的理解 Spring AOP的理解 事务的边界为什么放在service层? Spring Bean的生命周期 什么是单例池?作用是什么? 单例Bean的优势 Bean…

企业微信小程序在调用wx.qy.login时返回错误信息qy.login:fail

原因是大概是绑定了多个企业但是在开发者工具中没有选择正确的企业 解决方法: 重新选择企业后即可成功获取code

《Zookeeper》从零开始学Zookeeper源码(二)之数据序列化与通信协议

目录 序列化与反序列化通信协议请求头的数据结构响应头的数据结构 序列化与反序列化 zookeeper的客户端与服务端、服务端与服务端之间会进行一系列的网络通信,在进行数据的传输过程中就涉及到序列化与反序列化,zookeeper使用Jute作为它的序列化组件&…

文字转语音

键盘获取文字,转化为语音后保存本地 from win32com.client import Dispatch from comtypes.client import CreateObject from comtypes.gen import SpeechLib speakerDispatch(SAPI.SpVoice) speaker.Speak(请输入你想转化的文字) datainput(请输入:)#s…

拥抱创新:用Kotlin开发高效Android应用

拥抱创新:用Kotlin开发高效Android应用 引言 在当今数字时代,移动应用已经成为人们生活中不可或缺的一部分。无论是社交媒体、电子商务还是健康管理,移动应用已经深刻地影响了我们的生活方式。随着移动设备的普及和功能的增强,A…

深入了解速卖通详情API:提升商品数据获取与处理效率

1. 速卖通详情API概述 速卖通详情API是通过接口方式获取商品详细信息的一种方法。它可以让开发者按需获取商品的标题、描述、价格、库存等详细数据,为后续的数据分析和处理提供基础。通过API,开发者可以实现自动化的商品数据管理,提高工作效…

jenkins准备

回到目录 jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构…

django bootstrap html实现左右布局,带折叠按钮,左侧可折叠隐藏

一、实现的效果 在django项目中,需要使用bootstrap 实现一个左右分布的布局,左侧区域可以折叠隐藏起来,使得右侧的显示区域变大。(为了区分区域,左右加了配色,不好看的修改颜色即可) 点击折叠按钮,左侧区域隐藏,右侧区域铺满: 二、实现思路 1、使用col-md属性,让左…

unity行为决策树实战详解

一、行为决策树的概念 行为决策树是一种用于游戏AI的决策模型,它将游戏AI的行为分解为一系列的决策节点,并通过节点之间的连接关系来描述游戏AI的行为逻辑。在行为决策树中,每个节点都代表一个行为或决策,例如移动、攻击、逃跑等…

助力618-Y的混沌实践之路 | 京东云技术团队

一、写在前面 1、混沌是什么? 混沌工程(Chaos Engineering)的概念由 Netflix 在 2010 年提出,通过主动向系统中引入异常状态,并根据系统在各种压力下的行为表现确定优化策略,是保障系统稳定性的新型手段。…

K8s中的ConfigMap

ConfigMap作用:存储不加密数据到etcd,让Pod以变量或者Volume挂载到容器中 场景:配置文件 3.以Vlolume挂载到Pod容器中

前端实习day20

今天解决了不少bug&#xff0c;成就感满满&#xff0c;有几个问题困扰了我很久&#xff0c;我查阅了很多博客&#xff0c;终于找到解决思路&#xff0c;顺利解决&#xff0c;这里记录一下解决思路。 1、在通过this.$refs.layoutSide.style设置<a-layout-sider>的宽度时&…

计算机网络-三种交换方式

计算机网络-三种交换方式 电路交换(Circuit Switching) 电话交换机接通电话线的方式称为电路交换从通信资源分配的角度来看&#xff0c;交换(Switching)就是按照某种方式动态的分配传输线路的资源 电话交换机 为了解决电话之间通信两两之间连线过多&#xff0c;所以产生了电话…

TSINGSEE青犀视频汇聚平台EasyCVR多种视频流播放协议介绍

众所周知&#xff0c;TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入&#xff0c;包括主流标准协议GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。今天我们来说一说&#xff0c;EasyCVR平台支持分…

自定义MVC增删改查

目录 mymvcdemo是自定义mvc框架的使用示例 1.1 实体类 1.2 dao方法 1.3 写Service / biz 三层架构 1.4 建action 相当于selvert 1.5 con连接MySQL 8.0 版本 1.6 配置文件 XML 1.7 主界面布局 1.8 增加界面布局 1.9 写tld配置文件 2.0 注意架包 我是已经打包好的 mymv…

ffmpeg-ffplay代码架构简述

全局变量 /* Minimum SDL audio buffer size, in samples. */ // 最小音频缓冲 #define SDL_AUDIO_MIN_BUFFER_SIZE 512 /* Calculate actual buffer size keeping in mind not cause too frequent audio callbacks */ // 计算实际音频缓冲大小&#xff0c;并不需要太频繁…

ELK日志分析系统

文章目录 一. ELK日志分析系统概述1.ELK 简介2.ELK日志分析系统2.1 ElasticSearch2.1.1 ElasticSearch概述2.1.2 ElasticSearch核心概念&#xff08;作用&#xff09; 2.2 Kiabana2.2.1 Kiabana 概念2.2.2 Kiabana 主要功能 2.3 Logstash2.3.1 Logstash 概念2.3.2 Logstash主要…