seo网站推广简历,公司培训网站建设,wordpress评论楼,门户网站兴化建设局 金Frpc使用自主域名解析透传本地服务 综述frp透传http服务结构流程 第一部分openwrt-frpc客户端配置和使用指定服务器指定规则在自己的域名运营商处添加域名解析 第二部分shell编码实现frp自由切换服务器并更新dns解析获取切换服务器参数脚本实现切换脚本更新DNS解析打开openwrt计… Frpc使用自主域名解析透传本地服务 综述frp透传http服务结构流程 第一部分openwrt-frpc客户端配置和使用指定服务器指定规则在自己的域名运营商处添加域名解析 第二部分shell编码实现frp自由切换服务器并更新dns解析获取切换服务器参数脚本实现切换脚本更新DNS解析打开openwrt计划任务 免责声明
本文只提供技术路线为方便学生与编程人员本地调试程序。不得用于非法用途域名与网站原则上需要经过网络备案本文的内容在使用中产生的相关问题本文作者不承担责任本文不代表任何利益相关方仅是一些使用心得有不足这处请见谅。 综述
宽带拨号网络在运营商使用子网IP以后动态域名解释失去了原来的作用对于学生党程序员来说一个云主机一个独立IP甚至一个域名都是要花费一笔钱的。这其中域名是最便宜的一种。我原本就有一个域名为了访问家中的网络和服务就有了借助域名和frpnps npc这一类的代理透传软件的需要。
经过个人的摸索形成了一些步骤和代码发现freefrp.net免费且还算稳定但在某个时期会节点被停。刚刚找到自动切换节点的方法一并分享给大家。
本文先介绍以Freefrp.net提供的frps为例讲解openwrt中frpc服务的配置流程其中重点是 http域名透传本地地址端口。 然后解决在一个freefrp.net网络节点断网后自动切换另一个可用的网络节点 我的成果 家中的frp转nas-panindex http://pan.ezdial.cn/ 免费的cloudflarepagegithubhugo http://hugo.ezdial.cn/ frp透传http服务结构流程 #mermaid-svg-Kh9XYdXcqNRnbmjQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .error-icon{fill:#552222;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .marker.cross{stroke:#333333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Kh9XYdXcqNRnbmjQ text.actortspan{fill:black;stroke:none;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .actor-line{stroke:grey;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .sequenceNumber{fill:white;}#mermaid-svg-Kh9XYdXcqNRnbmjQ #sequencenumber{fill:#333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .messageText{fill:#333;stroke:#333;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .labelText,#mermaid-svg-Kh9XYdXcqNRnbmjQ .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .loopText,#mermaid-svg-Kh9XYdXcqNRnbmjQ .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-Kh9XYdXcqNRnbmjQ .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .noteText,#mermaid-svg-Kh9XYdXcqNRnbmjQ .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .actorPopupMenu{position:absolute;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-Kh9XYdXcqNRnbmjQ .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-Kh9XYdXcqNRnbmjQ .actor-man circle,#mermaid-svg-Kh9XYdXcqNRnbmjQ line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-Kh9XYdXcqNRnbmjQ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} openwrt-frpc frps服务器 互联网客户 域名解析DNS server:porttoken 和规则域名-本地地址端口 接受请求准备接受连接 请求访问my.domain.com谁提供服务 由frp.freefrp.net提供服务 请求规则中域名my.domain.com车在水里吗? 请求规则中域名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.83007打开了服务比如ChatbotUI,一个访问openai在聊天窗口配置如下 添加规则。 代理名称需要一个唯一的字符串类型选择http这样才能使用自主域名动态改变frp服务器 我使用子域名fa自定义域名fa.ezdail.cn访问192.168.2.8在3007端口提供在chatbotui窗口。 且指定了一个简单的auth用户wjc密码***
最后启动运行测试日志存放在/tmp/frpc.log
在自己的域名运营商处添加域名解析
加入一条解析记录CNAME类型fa.ezdial.cn指向上面frpc使用的节点:frp2.ezdial.cn,现在已经在报废状态于是有一下面部分的折腾。
第二部分shell编码实现frp自由切换服务器并更新dns解析
获取切换服务器参数
ssh进入openwrt后台或者使用web shellttyp客户端
uci show frpc.frps
这是第一个节点的内容uci show frpc.frps
frpc.frpsserver
frpc.frps.server_port7000
frpc.frps.tcp_muxtrue
frpc.frps.aliasfrp2
frpc.frps.server_addrfrp2.freefrp.net
frpc.frps.tokenfreefrp.netuci set frpc.main.serverfrps
uci commit frpc
这是设置使用第一个节点uci show frpc.server[1]
frpc.cfg06769cserver
frpc.cfg06769c.aliasfrp
frpc.cfg06769c.server_addrfrp.freefrp.net
frpc.cfg06769c.server_port7000
frpc.cfg06769c.tokenfreefrp.net
frpc.cfg06769c.tcp_muxtrue
这是第二个节点的内容其中cfg06769c是他的识别码uci set frpc.main.servercfg06769c
uci commit frpc
这是设置使用第二个节点以此类推可以显示并使用第三个节点 uci show frpc.server[2] 在下一节要用到
脚本实现切换
这个脚本的写作过程中不断借用ChatGPT3.5的帮助 提问了以下问题shell列表声明循环使用列表元素网络诊断函数参数传递并得到了成套的代码。也感谢chatbotui这个项目使得调用很顺滑。 让我在外行的情况下用3个小时实现了这剖分代码。本来我也不敢想像能做成以往google代码是很耗费时间的chatgpt相当于有一个很大的代码库提供咨询很智能的样子。
将文件更换为自己的frpss列表存储为autosw.sh
#!/bin/bashfrpss(frps cfg02769c cfg03769c) #上节找到的节点记录对应三个freefrp.net地址
cd /frpcauto
check_network() {target$1ping -c 1 $target /dev/null 21if [ $? -eq 0 ]; thenecho 网络连接正常return 0elseecho 无法连接到网络return 1fi
}check_network pan.ezdial.cn
if [ $? -eq 0 ]; thenecho ok
elsefor item in ${frpss[]}; doecho $itemserver$itemcommuci get frpc.$server.server_addrss$commecho $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的有些不正常代码是旧的指定运营商并托管域名到cloudflare 这是迁移到cloudflare域名管理的步骤 将您当前的名称服务器记录更新为我们分配给 your.domain.org 的名称服务器
melinda.ns.cloudflare.commichael.ns.cloudflare.com## 如果不更换托管商则更改相关运营商的代码比如阿里腾讯请自行查找。 代码使用登陆cloudflare找到zoneid和cftoken替换为自己的。存储为updatedns.shchmod x updatedns.sh根据参数域名地址更新CNAME ./updatedns.sh fc.ezdial.cn frp.freefrp.net
#!/bin/bash
#wanip_v4curl -s -k https://ip.cn | jsonfilter -e $.ip
wanip_v4frp.freefrp.net
echo set $1 cname $2 record_namepan.ezdial.cn
if [ $1 ]; then
record_name$1 ;
fi
if [ $2 ]; then
wanip_v4$2 ;
echo two args $wanip_v4
fizoneid71f66fcff8c2a902cc69a573b54de5
cftoken5GLE2sFk6_sMSD9Iw60rViRqESIK__S8UJxci
zoneinfocurl -s -X GET https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?name$record_nametypeCNAME \-H Authorization: Bearer $cftoken \-H Content-Type:application/json
#echo $zoneinfo
recordid jsonfilter -s $zoneinfo -e $.result[0].id
echo $recordid
result_cfcurl -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打开openwrt计划任务
将这两块代码存在一个目录并更改测试成功。 添加一个合适的频率检测本身域名可访问状态不通则切换到下一个节点数分钟后应该就能成功上线了。最近cloudflare的表现好像在1分钟之内能更新解析纪录。不知道为什么这么快。
* */1 * * * * path/autosw.sh.
分时日月星期,每小时运行一次