动态域名内网穿透

前言

我们会有这样的需求,就是在外时能够访问自己家中的电脑,但是家中电脑的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/ddns
recordId='上面步骤中的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 client
sudo 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.com
zone = "你在dynv6拥有的zone全面,如example.dynv6.net"
type = local
use_ipv6 = false
use_ipv4 = true
command_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

动态域名内网穿透(永久免费)相关推荐

  1. 内网穿透 永久免费 简单实现外网访问内网SpringBoot

    本地已经创建了SpringBoot项目的hello world, 在内网可以访问,但是没有公网ip,外网如何访问,这是个头疼的问题,今天我们来用简单的方法解决这一问题: 使用工具:网云穿 应用场景:外 ...

  2. 黑群晖6.21无公网IP无域名内网穿透教程

    黑群晖6.21无公网IP无域名免费内网穿透教程 鼓捣黑群晖的起因,由于生了二胎,照片视频大量数据没有存储.闲来无事,准备解决大量照片存储问题.在咸鱼收了一块二手硬盘6T红盘. 但是问题来了,家里没有台 ...

  3. FRP内网穿透服务免费使用的详细教程

    FRP是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议.对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共 ...

  4. 利用阿里云和frp实现无域名内网穿透

    在学校做了一个deep learning项目通过web提供服务,验收阶段需要给甲方测试,但是学校是内网甲方无法访问,于是搜索内网穿透,解决方案非常多,身边同学推荐花生壳,经实测花生壳体验版速度慢,流量 ...

  5. 使用工具ngrok 实现内网穿透(免费)

    使用工具ngrok 实现内网穿透 工具下载:ngrok下载,提取码:5555 使用:

  6. linux/windows内网穿透(fpr免费开源软件)

    前提条件 一台有公网IP的服务器 Frp介绍 frp 是一个开源.简洁易用.高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议.frp 项目官网是 github.c ...

  7. 内网穿透使用免费的frps服务器

    疫情在家办公怎么连接家里电脑调试 本地电脑怎么接收微信通知,支付回调 https://www.freefrps.com/ 该服务器frps使用0.40.0版本 请使用相同版本的frpc. 下载地址 h ...

  8. 内网穿透的作用 免费内网穿透有哪些 可以用来干什么

    相信有很多人都会被一个问题所困惑,我们在日常办公和生活中:一些内网访问的应用,如何让实现在任意外网进行链接访问呢?有人说可以用内网穿透 内网穿透具体是什么,原理是什么:今天我们用网云穿来做演示.内网穿 ...

  9. (免费)钉钉内网穿透教程

    钉钉内网穿透教程 免费的内网穿透针不戳 github地址:https://github.com/open-dingtalk/pierced 下载了之后打开文件地址,以window为例: 进入你下载的文 ...

  10. 无公网IP,使用ZeroTier免费内网穿透

    无公网IP,使用ZeroTier免费内网穿透 有公网IP的用户还是建议使用端口转发的方式(速度最理想) 没有固定的公网IP,想要在家里或外地访问公司的服务器,常见的实现方案向日葵.teamviewer ...

最新文章

  1. 模块可测性设计之无损插桩
  2. 构造函数(constructor)与原型链(prototype)关系
  3. JavaScriptSerializer进行JSON序列化,得到字符串
  4. C#函数式编程之标准高阶函数
  5. mysql算法优化原则_Mysql优化原则_小表驱动大表IN和EXISTS的合理利用
  6. 常见的ORACLE锁模式汇总
  7. ekf pose使用方法 ros_robot_pose_ekf 使用说明
  8. 【进出理论】投入与收益
  9. Humble Numbers USCAO chapter 3.1
  10. mysql result mysqli_MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT
  11. div不继承父类样式_Java三大特性之继承
  12. submit text 插件安装教程
  13. 28.程序管理(ps,top)
  14. w3c 菜鸟mysql_w3c菜鸟
  15. C++二维vector初始化大小方法
  16. AcrelEMS-IDC综合能效管理系统 XXX数据中心案例分享
  17. 台式机连接蓝牙音响没声音 以及 声音延迟 问题解决
  18. The Economist 《经济学人》常用词汇总结
  19. ICCV、ECCV、CVPR三大国际会议
  20. 详解 C语言 青蛙跳台阶问题

热门文章

  1. 正则表达式验证ip是否是内网ip
  2. QComboBox显示文本居中问题
  3. 读 Paxos 到 ZooKeeper ¥ 50大洋
  4. 1688接口,item_search_seller - 搜索店铺列表
  5. visio画直线箭头
  6. 信息安全——密码学(下)
  7. html 网页地图集制作ECHARTS,pyecharts绘制地图(示例代码)
  8. Shell脚本初学习
  9. GPU 共享内存地址映射方式
  10. 工商管理专业的毕业论文怎么选题?