背景:
今天在anyhk VPS供应商购得一款没有公网ip的主机,外网访问必须通过公网ip共享端口nat访问到内网主机,所以这里我必须把内网ip绑定到一个固定域名(动态ip就是随时会变化的ip地址),通过域名访问内网主机
解决思路:
域名API密匙获取
1,首先登录cloudfare官网,将自己的域名(比如我的站点域名:www.yugogo.xyz)托管由cloudfare解析。
2,其次,点击页面右上角的个人账户,点击个人资料即可详见下页。https://www.cloudflare.com/a/profile
3,点击“view”按钮,即可获取当前域名的API密匙,(注意:API不可泄漏给他人)
shell脚本获取
首先,利用ssh登录vps终端,将其下列命令复制粘贴到终端运行。
1 2 |
curl https://gist.githubusercontent.com/benkulbertis/fff10759c2391b6618dd/raw > /usr/local/bin/cf-ddns.sh chmod +x /usr/local/bin/cf-ddns.sh |
如果运行报错,检查vps是否没有装curl命令,没有装,请百度搜搜。
shell脚本配置
1,将下载好的脚本(/usr/local//usr/local/bin/cf-ddns.sh),进行配置更改,
1 |
vi /usr/local/bin/cf-ddns.sh |
2,找到一下代码将其改为自己的配置,
1 2 3 4 |
auth_email="user@example.com" auth_key="c2547eb745079dac9320b638f5e225cf483cc5cfdda41" # found in cloudflare account settings zone_name="example.com" record_name="www.example.com" |
auth_email=改为自己在cloudfare账户邮箱,auth_key=改为cloudfare的API密匙,zone_name=改为解析的一级域名,(注意:不是二级域名,比如我的一级域名:yugogo.xyz),record_name=改为即将解析的二级域名(比如我的二级域名:www.yugogo.xyz)
修改好配置,输入英文的冒号+wq保存退出即可。
shell脚本运行
1 |
bash /usr/local/bin/cf-ddns.sh |
如果运行脚本后,提示:IP changed to: X.X.X.X
,说明脚本运行成功,域名能够解析到此ip。
crontab定时运行
在终端输入crontab -e
,此时进入vi编辑界面,添加以下代码:
1 |
*/20 * * * * /usr/local/bin/cf-ddns.sh >/dev/null 2> &1 |
每隔20分钟,自动运行cf-ddns.sh脚本。这样当动态ip变化后,系统将会在20分钟内自动把ip告知域名解析服务器,完成动态ip的解析。
输入:service crond status
即可看到crond运行状态。
日志状态
脚本获取IP更改CloudFlare的DNS记录后,会在目录中生成ip.txt、cloudflare.ids和cloudflare.log三个文件。ip.txt记录的是本机的IP。脚本自动获取到IP后,会先与ip.txt中的IP进行比较,当不一致时(检测到IP发生变化),才会更新CloudFlare的DNS记录,并且把新IP写入ip.txt文件中。如果IP没变化,运行脚本会提示IP has not changed
。如果要强制运行脚本更新DNS记录,可以rm /usr/local/bin/ip.txt
删除掉ip.txt。
如果运行忽然出问题,可以试试rm /usr/local/bin/cloudflare.ids
把cloudflare.ids文件和ip.txt文件删除掉,再重新运行脚本。
最新评论
这个怎么开启啊,好像开启的命令不对
请问博主,代理列表中线路前的国旗图标是如何实现的呢?
AQWorlds
感谢分享,如果厌倦搭建的繁琐步骤,不妨来 devpn.store 看看,也许正是您需要的。
谢谢分享,devpn.store 有提供trojan和vpn服务,7天免费试用。
这个价格是大家共用,不是独用!所以正常。。。。
提供高速稳定科学上网节点,月付16,年付150,可试用 联系方式 telegram: @hellowordnew QQ: 3604500082
ios 有 sing-box testflight app