本指南詳細說明如何使用動態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訪問。
按照本指南操作,你可以通過無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金鑰的認證是正確的。

