说明: 当我们在家中的设备中部署安装了 Emby、Jellyfin 等影音平台又或者是搭建了 nextcloud 个人云盘等程序,以往这些只能通过局域网才能进行内部访问,而现在你可以通过给路由器或设备配置DDNS动态解析(有公网IP)以及ZeroTier(无公网IP)就能达到远程访问的目的。

openwrt.png

一、DDNS 动态解析

通常 OpenWrt 自带 ddns 插件(动态DNS)默认支持较多的DDNS 服务提供商其中也包括我一直使用的 HE.NET,考虑到如果要以 HE.NET 为例进行介绍篇幅太长,就算介绍完如何更换DNS解析平台、创建域名、生成 Key这些内容还只是个开头,想了想就此作罢,退而求其次就简单介绍一下两款国内常用的DSNS插件吧。

配置阿里云 AliDDNS

登录阿里云,注册域名(具体步骤不赘述了)需要通过实名认证才可以进行域名解析等操作

创建Access Key

进入「控制台」,鼠标移动到个人头像,点击「AccessKey管理」;

aliddns-1.png

点击「使用子用户AccessKey」

aliddns-2.png

创建用户,填入登录名称和显示名称(随意填写),点击「确定」

aliddns-3.png

为子用户添加权限

aliddns-4.png

在「系统策略」中输入AliyunDNSFullAccess ,点选AliyunDNSFullAccess添加,并点击「确定」。

aliddns-5.png

为子用户创建 AccessKey

aliddns-6.png

保存好个人的AccessKey IDAccessKey Secret,OpenWrt 插件配置会用到。

aliddns-7.png

添加 A 记录

找到域名解析设置,添加一条A记录

aliddns-8.png

OpenWrt 插件设置

OpenWrt AliDDNS 插件下载 | 点击下载 ,安装过程不做赘述,请自行下载安装。

进入 OpenWrt 管理后台,在左侧导航中找到「AliDDNS」进行插件设置,参考如下:

aliddns-9.png

需要设置的内容包含:

  • 勾选「启用」;
  • 将此前获得的ID和Secret填入相应的区域。
  • 设置「WAN-IP来源」(wan/internet,建议设置wan);
  • 设置「主域名」(例如: test.github.com 则填: github.com)
  • 设置「子域名」(例如: test.github.com, 则填: test);
  • 「检查时间」(若WAN-IP来源选择internet则建议检查时间填写5分钟,否则建议填写1分钟)

最后,「保存并应用」,查看更新域名记录。

配置腾讯云 DDNS(推荐)

登录->腾讯云,注册域名(具体步骤不赘述了)需要通过实名认证后才可以进行域名解析等操作。

添加 A 记录

使用腾讯云的账号登录 DNSPOD 域名解析平台,在「我的域名」找到自己的域名,点击「解析」,添加记录:主机记录(随意填写)、记录类型(A记录)、线路类型(默认)、记录值(IP随意填写)、TTL(最低允许600),如下:

dnspod-1.png

填写完成后,点击确认。

创建 DNSPod Token

腾讯云 API 密钥 ->传送门,点击「DNSPod Token」,然后「创建密钥」。随意填写一下密钥名称,这时会自动生成密钥相关信息包含ID、Token,切记一定要保存好你的ID、Token信息,OpenWrt 插件配置会用到。

dnspod-2.png

OpenWrt 插件设置

OpenWrt 腾讯云 DDNS插件下载地址 --> 点击下载 ,安装过程不做赘述,请自行下载安装。

进入 OpenWrt 管理后台,在左侧导航中找到「腾讯云 DDNS」进行插件设置,参考如下(插件版本变化可能导致面板设置有所不同,但区别并不大):

dnspod-3.png

需要设置的内容包含:

  • 勾选「启用」;
  • 将此前创建好的ID和Token填入相应的区域。
  • 设置「WAN-IP来源」(wan/internet,建议设置wan);
  • 设置「主域名」(例如: test.github.com 则填: github.com)
  • 设置「子域名」(例如: test.github.com, 则填: test);
  • 「检查时间」(若WAN-IP来源选择internet则建议检查时间填写5分钟,否则建议填写1分钟)

最后,「保存并应用」,查看更新域名记录。

端口转发设置

「网络」-「防火墙」-「端口转发」,新建端口转发规则:

名称协议外部区域外部端口内部区域内部IP地址内部端口
LUCITCPWAN9080LAN192.168.0.180
SSHTCP+UDPWAN9022LAN192.168.0.122
注:OpenWrt 默认使用的Web端口为80端口被封禁,这里通过外部使用9080端口转发;SSH默认为22端口,这里使用外部9022端口进行转发。

例如,端口转发 emby 默认端口 8096 ,这里建议外部端口和内部端口保持一致:

端口转发-emby.png

防火墙设置

「网络」-「防火墙」-「常规设置」,修改「转发」设置为「接受」。

防火墙1.png

「网络」-「防火墙」-「常规设置」,在「区域」中将WAN口的「入站数据」和「转发」设置由「拒绝」修改为「接受」。

防火墙2.png

此刻 DDNS 配置完成!若不出意外,通过使用指定域名(包含主机记录的完整地址)+端口号(端口转发对应的外部端口号)的形式应该就能访问。例如 http://subdomain.com:9080/

常见问题

问题一:外网无法通过域名/公网IP访问?

解决方案:

进入 OpenWrt 后台,找到 uHTTPd 取消勾选「忽略公共接口上的私有 IP」

忽略公共接口上的私有 IP.png

如果面板上找不到 uHTTPd ,请通过 SSH 终端进入 OpenWrt 修改 uHTTPd 配置文件:

# 修改uhttpd配置文件
vim /etc/config/uhttpd

# 找到下面这行
option rfc1918_filter '1'
# 修改为
option rfc1918_filter '0'

修改完成后保存并退出,重启 uhttpd 使配置失效:

/etc/init.d/uhttpd restart

问题二:通过域名和公网IP访问速度奇慢?

解决方案:

1、关闭Turbo ACC,至少要关闭/禁用 「SFE (FLOW)Fast Path」,否则会严重影响端口转发效率。

2、对速度要求较高的应用,配置端口转发时,确保外部端口号和内部端口号是一致的。

二、ZeroTier 虚拟局域网

1、注册帐号

访问 ZeroTier -> 注册一个帐号 (账号注册过程不做赘述)

zerotier-1.png

2、创建网络

登录 https://my.zerotier.com/,创建一个虚拟局域网。

zerotier-2.png

此时系统会自动为你生成一个 NETWORK ID,保存好此 ID,OpenWrt 加入到虚拟局域网络会用到 NETWORK ID

zerotier-3.png

选择「Access Control」访问类型,推荐设置为「PRIVATE」,因为「PRIVATE」更具私密性,安全性更高。

zerotier-4.png

3、OpenWrt 插件设置

OpenWrt 插件 ZeroTier 下载地址 --> 插件下载 ,安装过程不做赘述,请自行下载安装。

插件安装完成后,进入 OpenWrt 管理后台,在左侧导航中找到「ZeroTier」配置如下:

zerotier-5.png

设置内容包含:

  • 勾选「启用」
  • 将获得的NETWORK ID填入到对应的区域
  • 保存并应用

4、授权设备加入网络

此时 ZeroTier NetWork 会收到一条授权请求,在列表中找到设备,勾选以授权此设备加入到你的网络。

zerotier-6.png

等待一会儿,刷新一下页面,此时会显示 ZeroTier 为该设备分配的虚拟局域网IP

zerotier-7.png

5、远程访问

作为用来访问 OpenWrt 的一端,请根据设备所属平台,下载 ZeroTier One 并完成安装。

zerotier-8.png

打开 ZeroTier One 点击 Join Network 填写之前获取到的 Network ID 然后点击 「Join」

zerotier-9.png

等待片刻 ZeroTier NetWork 会收到新的一条授权请求,在列表中找到该设备,勾选以授权此设备加入到你的网络。

此时,当前设备可被允许访问虚拟局域网内的任一设备,通过 OpenWrt 的虚拟局域网IP http://172.24.62.179/访问 OpenWrt 管理后台,而无需额外配置(无需配置端口转发、防火墙设置),就能轻松访问当前设备开放的所有端口。

三、两者差异比较

名称/类型速度与稳定性公网IP端口转发与防火墙开放程度配置难易度安全性
DDNS 动态解析稳定,可跑满带宽需要需配置公开访问较复杂一般
ZeroTier一般,速度勉强无需无需配置局域网络简单较高

相关推荐