OpenWrt旁路由配置动态域名, 开启SSL远程访问教程

本文摘要本文以博主家庭网络为例,介绍在旁路由上配置 CloudFlare 动态域名并安装 ACME 证书,实现远程访问的方法。设置动态域名的前提:光猫拨号后获取的必须是公网地址。家庭网络主路由使用华为 P812E 光猫,配置为路由模式。负责拨号上网,同时为 AP 提供 PoE 供电。几个面板组成 Mesh 网络,由一台 r6s 旁路由负责分配 DHCP,并提供其他服务。一、P812E 开启端口转发进入 P...

本文以博主家庭网络为例,介绍在旁路由上配置 CloudFlare 动态域名并安装 ACME 证书,实现远程访问的方法。

设置动态域名的前提:光猫拨号后获取的必须是公网地址。

家庭网络主路由使用华为 P812E 光猫,配置为路由模式。负责拨号上网,同时为 AP 提供 PoE 供电。几个面板组成 Mesh 网络,由一台 r6s 旁路由负责分配 DHCP,并提供其他服务。

一、P812E 开启端口转发

进入 P812E 光猫 Web 设置界面,转到高级设置 > 转发规则 > IPv4 端口映射,添加一条映射规则。由于运营商一般都将公网常用的 80、443、8080 等端口屏蔽,我们选择一个可用的端口进行映射。本示例使用 9443 端口,将 WAN 接口上的 9443 端口映射到 OpenWrt 旁路由 443 端口上,192.168.18.2 为旁路由的 LAN 地址。

P812E 端口转发规则界面

点击应用,现在就可以使用 https://wan ip:9443 端口访问 OpenWrt。

二、设置动态域名

  1. CloudFlare 上,添加一条动态域名记录,这里使用了一个二级域名,IPv4 地址输入临时地址(客户端配置好动态域名程序后会自动更新地址),关闭代理选项,点击保存。

CloudFlare 添加 DNS 记录

  1. 在 OpenWrt 上,通过软件包安装 ddns-go 插件,如果软件包中没有这个插件,可以去 这里这里 下载最新的 ipk 程序并手动安装。安装完成后,转到服务 > ddns-go,启用 ddns-go 服务。

OpenWrt 中启用 ddns-go 服务

浏览器输入 LAN IP:9876 地址打开 DDNS-GO 设置页面,设置参数如下图所示,本教程使用 CloudFlare 管理的域名,只需要输入 DNS 的令牌和域名信息即可。其他服务商请参考设置说明。

DDNS-GO 配置界面

设置完成点击左上方的 Save 按钮,保存配置。实时连接信息可以点击右上方的日志进行查看。如果设置无误,那么在 CloudFlare 上添加的记录应该更新了光猫 WAN 接口公网地址。

浏览器输入 https://test.pfchina.xyz:9443,应该可以打开 OpenWrt 旁路由登录界面。由于没有配置证书,会提示连接不安全。

浏览器提示连接不安全

三、配置 ACME 证书

详细安装说明请参考 官方文档

安装 acme.sh

进入 OpenWrt 的后台,安装 acme.sh,标红部分请替换为用于注册 acme 的邮箱。

curl https://get.acme.sh | sh -s email=your@email.com

如果有奇奇怪怪的问题无法成功安装,可以先挂个代理。

配置证书

由于 80 和 443 端口无法使用,只能使用手动 dns 方式在域名上添加一条 txt 解析记录, 验证域名所有权。Cloudflare Domain API 提供了两种 自动颁发证书 的方法。

使用全局 API 密钥

使用 Cloudflare 账户的 全局 API 密钥 和域名注册邮箱替换下面标红部分,并在 OpenWrt 执行这两条命令:

export CF_Key="key"
export CF_Email="your@email.com"

使用 DNS 区域令牌

登录 Cloudflare 帐户,找到网站,打开自己使用的动态域名所使用的顶级域名,在右侧找到区域 ID (export CF_Zone_ID) 和帐号 ID (export CF_Account_ID)。找到个人资料菜单,点击左侧的 API 令牌栏,然后点击创建令牌,添加一个对应项级域名的 API 令牌 (export CF_Token)。

CloudFlare API 令牌相关界面

用上面获取的数据替换下面标红部分,并在 OpenWrt 上执行这三条命令:

export CF_Token="token"
export CF_Zone_ID="zone"
export CF_Account_ID="id"

两种方法使用一种即可。添加完 txt 解析记录后,执行以下命令申请证书,标红部分为设置的域名。

/root/.acme.sh/acme.sh --issue --dns dns_cf -d test.pfchina.xyz -d www.test.pfchina.xyz

在申请证书之前,建议先关闭代理。申请证书需要一点时间,请耐心等待。申请成功以后将会出现以下信息:

acme.sh 申请证书成功输出

证书和私钥默认保存在以下位置:

/root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.cer
/root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.key

证书的有效期为三个月,acme.sh 安装程序添加了定时任务,到期会自动更新证书。

acme.sh 定时任务示例

四、修改 OpenWrt 配置文件

使用 vi 命令,打开 /etc/config/uhttpd 文件,修改标红部分并保存退出。

config uhttpd 'main'
    list listen_http '0.0.0.0:80'
    list listen_http '[::]:80'
    list listen_https '0.0.0.0:443'
    list listen_https '[::]:443'
    option redirect_https '1'
    option home '/www'
    option rfc1918_filter '1'
    option max_connections '100'
    option cert '/root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.cer'
    option key '/root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.key'

执行命令,重启 uhttpd。

/etc/init.d/uhttpd restart

五、检查测试

浏览器输入 https://test.pfchina.xyz:9443,检查证书是否生效,是否挂锁成功。

浏览器成功显示安全锁

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~