动态域名:动态域名内网穿透(永久免费) 2024-04-03 02:01:42 0 0 动态域名内网穿透 前言 我们会有这样的需求,就是在外时能够访问自己家中的电脑,但是家中电脑的IP又是动态的。这时候我们就需要使用动态域名映射去解决我们的问题 由于本人由自己几个低功耗机子,但是不喜欢单独拿一个装openwrt啥的,都是装的centos,所以选择比较轻量方式实现,所以选择如下方式,自己机器只有shell脚本和定时任务。我自己是有备案的腾讯云域名,所以选择了第一种方式,第二种方式则完全免费。实现优点缺点**方式一:**腾讯云DNS服务 + Shell脚本稳定、快速、域名名称由自己喜好选择域名收费**方式二:**dynv6DDNS服务 + Shell脚本完全免费只能填二级域名,注册稍微麻烦 实现原理 接下来,分别讲解两种方式的操作步骤 一、方式一:腾讯云 + Shell脚本 1、腾讯云操作 1)注册腾讯云 忽略… 2)购买域名 登录腾讯云后,点击右上角控制台,点云产品,点域名注册 点注册域名,购买后即会显示自己的域名 这一步需要记下你的域名,如:baidu.com。后续客户端配置会用到 3)添加解析记录 在自己的域名后面点击解析,并添加一条记录,主机记录即你的二级域名 通过浏览器找到自己记录的ID,具体方法需要用浏览器F12打开浏览器调试点击网络,点击Fetch/XHR,然后再搜索中写上你刚刚天的记录名称进行搜索,从请求中找到自己的记录ID,是个数字 这一步需要记下你的二级域名,如上面的:home;记录ID:如:12312321。后续客户端配置会用到 4)添加API密钥 API密钥用于配置客户端有权限调用腾讯云的API,以便动态更新域名 点击头像 - 访问管理 - API密钥管理 - 新建密钥 这一步需要记下你的SecretId和SecretKey 2、客户端操作 1)腾讯云配置填入脚本 【脚本文件在文章结尾给的网盘】 百度云脚本头部部分参数填写,文件名称可以为ddns.sh,拷贝如下内容#!/bin/bash#/usr/bin/ddnsrecordId='上面步骤中的recordId'domain='你的域名,如:baidu.com'subDomain='子域名:如home'sId='你的云API秘钥SecretId'sKey='你的云API秘钥SecretKey'signatureMethod='HmacSHA1'... 2)放到自己的机器中 连接自己的服务器,将ddns.sh脚本放到自己指定的目录,我这边是放在自己创建的目录(/usr/local/txddns)下 授权ddns.sh执行权限chmod u+x ddns.sh 3)测试 执行脚本测试./ddns.sh 执行结束后,到腾讯云去看看你添加的那条记录的IP,是不是你家当前网的公网IP,如果是的,则表示成功了哦。注意,如果ip没有变化,这个最后操作时间是不会变的 4)添加定时任务 输入命令crontab -e打开编辑器,例如,每隔15分钟执行一次,则将追加如下内容:其中目录根据自己实际情况修改*/15 * * * * /usr/local/txddns/ddns.sh > /dev/null 2>&1 保存后,该脚本应该就能自动执行了。如果想测试脚本是否执行了,可以到腾讯云中将解析的记录改成别的,到一定时间看看有没有更新即可。 至此,方式一的动态域名映射已经完成。接下来,介绍下免费的dynv6。 二、方式二:dynv6 + Shell脚本 1、dynv6操作 1)注册dynv6 https://dynv6.com/ 过程忽略(我之前注册过程有个人机验证码图片,由于是国外,可能看不到,所以要自己想办法) 2)创建Zone 这里的Zone可以理解为二级域名 取个二级域名名称,选一个域名 3)添加SSH密钥 此步骤的SSH Public Keys需要先在客户端(也就是你自己的机器上生成,然后填入),具体生成方法,在下节客户端操作部分有描述。 2、客户端操作 1)安装ssh client并生成密钥# 安装ssh clientsudo yum install openssh-client# 生成密钥ssh-keygen -t ecdsa# 查看密钥cat ~/.ssh/id_ecdsa.pub# 将整个文本拷贝,到dynv6(https://dynv6.com/keys/ssh/new)填入并保存。# 尝试连接,如果出现欢迎界面则表示成功了- ssh api@dynv6.com 2)脚本文件 【脚本文件在文章结尾给的网盘】 3)dynv6配置填入脚本配置文件 【配置文件在文章结尾给的网盘】 ddns.conf配置文件说明[common]dynv6_server = dynv6.comzone = "你在dynv6拥有的zone全面,如example.dynv6.net"type = localuse_ipv6 = falseuse_ipv4 = truecommand_type = "curl或者wget,根据你部署该脚本主机拥有的命令决定【注意:填写时不要带双引号】"devices = "需要获取ipv6的网络设备名,留空则取找到的第一个ipv6地址" 4)放到自己的机器中 连接自己的服务器,将ddns.sh脚本和ddns.conf配置文件放到自己指定的目录,我这边是放在自己创建的目录(/usr/local/dynv6ddns)下 5)测试 给ddns.sh运行权限(命令chmod u+x ./ddns.sh),运行脚本(命令./ddns.sh),观测其输出是否正常,是否有报错等情况;如果运行成功,到dynv6查看是否已经完成更新(连接到dynv6服务器较为缓慢,需耐心等待);如果失败,检测配置文件是否错误、各主机ssh配置问题等; 6)添加定时任务 输入命令crontab -e打开编辑器,例如,每隔15分钟执行一次,则将追加如下内容:其中目录根据自己实际情况修改*/15 * * * * /usr/local/dynv6ddns/ddns.sh /usr/local/dynv6ddns/ddns.conf > /dev/null 2>&1 保存后,该脚本应该就能自动执行了。如果想测试脚本是否执行了,可以到腾讯云中将解析的记录改成别的,到一定时间看看有没有更新即可。 至此,方式二的动态域名映射已经完成。 三、路由配置端口映射 经过上述方式的操作,域名已经与你的动态公网IP绑定了,接下来可以通过你的路由配置端口映射到某台机器上了。 比如,需要将外网80端口转发到你内网192.168.1.100:80,则在路由器找到端口转发配置的地方,进行如下配置 这样通过域名就可以访问到你内网192.168.1.100:80了 四、脚本文件云盘地址 链接:https://pan.baidu.com/s/1z-7yFMknpW375Yrrvwod7g 提取码:j95b 收藏(0)