NATMap+Cloudflare实现公网IPv4访问内网服务
前言
当我们需要从外网访问家中的NAS、网站或开发板时,往往受限于没有公网IPv4地址或配置端口转发过于复杂。而借助NATMap和Cloudflare的组合,我们可以巧妙地利用内网穿透技术,无需公网IP和复杂路由设置,即可将内网服务安全、稳定地暴露在公网上。本文将演示这一整套轻量级方案的搭建与配置过程。
前期准备
一个 CloudFlare 账号
一台刷了OpenWRT的路由器
一个域名
一台电脑
配置路由器为NAT1
根据这篇文章的“配置常用功能→网络加速”部分将路由器配置为NAT1全锥形
安装NATMap
登录OpenWRT路由器管理后台,在系统→软件包筛选“natmap”(如果搜不到的话,先更新软件列表),安装简体中文版本
安装完成后刷新网页,在服务菜单下面就可以看到NATMap功能
配置Cloudflare
打开Cloudflare官网,登录(没有账号就先注册之后再登录)
输入自己提前准备好的域名,继续
选择免费计划
添加两个记录,一个A类型的,一个CNAME类型的,内容都是随便填。A类型的记录是用来指向公网IPv4地址的,不需要开启代理;CNAME类型的记录是用来重定向到A类型记录的,并且要走Cloudflare官方流量,所以要开启代理。添加完成后点击“继续前往激活”
复制那两个DNS服务器地址
去域名服务商那里,将域名的DNS服务器修改成上面那两个
修改完成之后回到Cloudflare,点击“我已更新名称服务器”,然后等待出现成功的页面
在规则→概述里创建一个重定向规则
规则名称填natmap_v4(要跟后面的脚本保持一致),中间的匹配内容填写主机名等于上面那个CNAME记录,然后部署
配置脚本文件
打开记事本,先把下面的脚本复制进去,方便后面补充信息
1 | #!/bin/sh |
在域名的概述页面,划到下面可以找到域名的区域ID
进入DNS→记录页面,按下F12打开开发者工具,切换到网络页面,刷新一下网页,然后筛选dns_records会出现几个结果
点击第一个结果,在响应页面的result下面就可以找到子域名ID了(这个子域名是CNAME类型那个需要重定向的域名,也就是你实际访问的域名)
进入规则→概述页面,清空开发者工具的筛选内容,并且清空记录,然后点击创建的重定向规则
找到entrypoint这个数据请求,其中的id就是重定向规则ID
点击右上角头像,选择配置文件
创建API令牌
创建自定义令牌
名称随便填,权限要跟下图一样,然后继续
创建令牌
这个就是API令牌
将获取到的信息填入脚本内,如下图所示(访问域名填CNAME类型那个,重定向域名填A类型那个)
通过SSH登录路由器,创建名为“wdns”的文件
按i键进入编辑模式,将编辑好的脚本粘贴进去,然后按下ESC键后输入:x回车保存并退出
配置NATMap
编辑默认的规则
按下图进行配置即可(通知脚本如果是放在其他地方的话需要修改)
勾选启用,保存并应用后就会出现公网IP和对应的端口了
配置防火墙
进入网络→防火墙→端口转发,添加
参考下图进行配置(外部端口要跟上面NATMap填写的一致,内部IP地址选局域网服务的IP,内部端口是局域网服务的端口),然后保存
配置动态域名
动态域名使用Lucky来进行配置。Lucky的部署比较简单,直接通过Docker部署就可以,这里就不演示部署流程了。
浏览器打开Lucky后台,输入账号和密码登录
切换到动态域名页面,添加任务
任务名称随便填,托管服务商选择Cloudflare,输入Token(也就是上面创建的API令牌)
启用ipv4Addr,添加同步记录
记录名填写重定向域名(域名后缀可填可不填),记录类型选择A,然后添加任务
看到任务正常运行并且同步成功就可以了
现在就可以直接通过域名远程访问内网的服务了
结语
通过NATMap与Cloudflare的联动,我们成功绕过了传统公网IP的限制,实现了对家庭内网服务的稳定公网访问。这套方案既保留了数据的安全性,又降低了运维成本,尤其适合需要远程管理设备或临时对外分享服务的场景。


(部分素材来源于网络,如有侵权请联系作者删除)







