本指南详细说明如何使用动态DNS(DDNS)配合无IP和VPN远程访问你的OpenWRT路由器。提供的脚本自动化了安装和配置过程,允许用户从任何地方远程访问路由器。
如需更多支持,请访问OpenWRT论坛。
前提条件
- OpenWRT路由器:确保你的路由器运行的是OpenWRT 19.07。
- 无IP账户: 在No-IP 或其他动态DNS服务 创建账户。
- ZeroTier账户: ZeroTier在创建一个账户。
- SSH访问: 确保你已启用对路由器的SSH访问。
1. 创建无IP主机名
创建无IP账户:
- 去No-IP的网站注册账号。
创建主机名:
- 登录你的无IP账户。
- 进入“动态DNS”部分。
- 点击“添加主机名”。
- 输入主机名(例如 deadtest)并选择一个域(例如 ddns.net)。
- 点击“添加主机名”。
2. 准备脚本
请将以下脚本保存为setup_remote_access.sh在本地机器上,并请对以下变量进行修改:
- 下载脚本: setup_remote_access.sh
# 定义变量
NETWORK_ID='<networkID string>' # 替换为实际的网络ID
DOMAIN='<No-IP hostname>' # No-IP hostname
USERNAME='<No-Username NOT EMAIL!>' # 替换为你的无IP邮箱地址
PASSWORD='<Username password>' # 替换为你的无IP密码
3. 执行剧本。
- 上传脚本: 将setup_remote_access.sh脚本上传到你的路由器。用路由器的IP地址替换<router_ip>。
scp setup_remote_access.sh root@<router_ip>:/tmp/
-
在路由器上运行脚本:
ssh root@<router_ip>sh /tmp/setup_remote_access.sh
4. 授权该设备在ZeroTier Central上。
-
登录ZeroTier Central:
- 进入 ZeroTier Central 仪表盘并登录。
-
授权设备:
- 找到你指定的网络下的设备并授权它。.
5. 验证设置。
关于路由器:
- 查看DDNS状态:
/etc/init.d/ddns 状态
- 强制更新DDNS:
/usr/lib/ddns/update_noip.sh
- 检查零等级状态:
zerotier-cli status
zerotier-cli listnetworks
在你的本地机器上:
- 核实DDNS更新:
nslookup deadtest.ddns.net
- 测试SSH访问:
- 通过DDNS主机名:
- 通过零层IP地址:
ssh root@<zerotier_ip_address>
-
DDNS问题:
- 确保无IP凭证是正确的。
- 认DDNS更新脚本是可执行的。
- 检查DDNS更新日志(/var/log/ddns/)中的错误。
-
ZeroTier问题:
- 确保零层服务正在运行。
- 确认设备是否在ZeroTier Central授权。
- 检查网络连接问题。
-
SSH访问问题:
- 确保SSH服务正在运行(/etc/init.d/dropbear状态)。
确认防火墙规则是否正确配置,允许SSH访问。
- 确保SSH服务正在运行(/etc/init.d/dropbear状态)。
按照本指南操作,你可以通过无IP DDNS和ZeroTier VPN设置对OpenWRT路由器的安全远程访问。这种配置让你可以在任何有互联网连接的地方管理路由器,既方便又安全。
为增强安全性并降低暴力破解攻击的风险,建议使用SSH密钥对代替密码进行认证。
生成SSH密钥对
如果你本地机器还没有SSH密钥,可以生成一对密钥:
-
ssh-keygen -t rsa -b 4096 -C "[email protected]"
这将创建一个公钥(~/.ssh/id_rsa.pub)和一个私钥(~/.ssh/id_rsa)。
将公钥复制到路由器
把你的公钥复制粘贴到路由器 (https://192.168.1.1/cgi-bin/luci/admin/system/admin/sshkeys)。
-
cat ~/.ssh/id_rsa.pub
禁用密码认证
复制公钥后,关闭路由器的密码认证,以防止暴力破解攻击:
- 编辑Dropbear配置:
vi /etc/config/dropbear
- 修改配置以禁用密码认证:添加以下行,或如果已有的话进行修改:
config dropbear option PasswordAuth 'off' option RootPasswordAuth 'off'
- 重启Dropbear服务:
/etc/init.d/dropbear restart
测试SSH密钥认证
尝试通过SSH连接到你的路由器,确保基于密钥的认证有效且密码认证已禁用:
-
ssh root@<router_ip>
如果认证成功且未要求密码,则基于SSH密钥的认证是正确的。

