NordVPN 支援 OpenWrt 嗎?
據消息指出,搭載 OpenWrt 韌體的路由器支援 NordVPN 等 VPN 服務。 然而,請注意以下設定尚未經過 NordVPN 員工的測試,而是由我們出色的客戶分享並測試出來的流程。 NordVPN 在此特別感謝 OpenWRT 社群的活躍成員 ulmwind,感謝他們持續協助並提供我們最新的 OpenWRT 說明。
本文提供兩種 OpenWrt 設定指南:
- GUI 介面操作說明(簡易版本)
- CLI 操作說明(更進階)
如果遇到任何問題,歡迎隨時聯絡我們的支援團隊取得近一步協助! 此為進階教學,但同時也提供一些較為簡易的使用說明。
GUI 操作說明
本指南將介紹如何透過 LuCI 網頁介面,在使用 OpenWrt 韌體的路由器設定 NordVPN 連線。
-
在網際網路瀏覽器輸入 OpenWrt 路由器本機 IP 位址,然後登入其 LuCI 介面。
預設 IP
位址為192.168.1.1,而使用者名稱為root。
預設情況下並無設定密碼,因此此欄位可以留白。不過登入時,您將會收到一則關於設定密碼的訊息。
如欲設定密碼,請點選「系統 (System)」 > 「管理 (Administration)」,在該處即可設定密碼。 -
登入後,選擇**「系統 (System)」分頁,並選擇「軟體
(Software)」。
- 點選「更新清單 (Update lists)」按鈕,等待流程完成並點選「忽略 (Dismiss)」。
-
在「篩選
(Filter)」欄位輸入以下套件的名稱,並點選「安裝…
(Install…)」即可。
- openvpn-openssl
- ip-full
-
luci-app-openvpn
\
- 點選「儲存並套用 (Save & Apply)」,並重新整理路由器頁面。 現在應能看到名為「VPN」的新分頁。 點選該分頁,並從下拉式選單中選擇「OpenVPN」。
- 現在您需要下載 OpenVPN 用戶端設定檔。 您可透過 Nord 帳戶連線至推薦的伺服器。
按照以下步驟找到手動連線設定檔:
-
登入Nord 帳戶,然後點選「NordVPN」。
-
向下捲動至「進階設定」,並點選「手動設定 NordVPN」。
-
選擇「OpenVPN 設定檔」分頁。
-
使用**「搜尋列」進行搜尋,或向下捲動,點選「下載
UDP」或「下載 TCP」進行下載,找到想連線的伺服器。
-
手動連線至OpenVPN和IKEv2時,在「服務憑證」分頁上,您將需要使用使用者名稱及密碼。
本指南將依教學目的使用us5104.nordvpn.com伺服器。
-
在「OVPN 設定檔上傳(OVPN configuration file upload)」專區的*執行體名稱 (Instance name)」欄位中,為 VPN 連線命名(我們將其命名為「nordvpn_us」)。然後,點選「選擇檔案 (Choose
File)」按鈕,找到下載好的伺服器檔案,並點選「上傳
(Upload)」**。
-
在「OpenVPN 執行體 (OpenVPN
instances)」專區,點選剛建立好執行體旁邊的「編輯
(Edit)」按鈕。
-
在下方欄位內,分別於不同行輸入 NordVPN 服務的使用者名稱和密碼。
使用者名稱
密碼
您只要前往Nord 帳戶儀表板,就能找到自己的 NordVPN 服務憑證(服務使用者名稱和服務密碼):
請按照以下步驟找到手動連線設定的服務憑證:
-
登入Nord 帳戶,按一下**「NordVPN」,然後在
「手動設定」中點選「服務憑證」。在這裡可以找到手動連線必須用到的使用者名稱和密碼**。
- 現在,複製包含帳密欄位正上方給出的憑證檔案路徑,並將其貼至上方「Config file」專區中的「auth-user-pass」行旁邊。
畫面應如下所示:auth-user-pass /etc/openvpn/nordvpn\_us.auth
- 點選位於底部的「儲存 (Save)」按鈕。
- 點選頁面頂部的「網路 (Network)」分頁,並選擇「介面 (Interfaces)」。
- 選擇「加入新介面… (Add new interface…)」並將其命名為「nordvpntun」。
- 點開「通訊協定 (Protocol)」下拉式選單,並選擇「未託管 (Unmanaged)」。
-
在「介面 (Interface)」下拉式選單中,於底部的 -- custom -- 欄位中輸入名稱「tun0」,按下「確認 (Enter)」鍵。
- 點選「建立介面 (Create interface)」欄位和「儲存 (Save)」按鈕。
- 再次選擇位於頂部的「網路 (Network)」,然後前往「防火牆 (Firewall)」專區。
- 點選「新增 (Add)」並調整如下:```
- 將其命名為「vpnfirewall」;
2. 將「輸入 (Input)」選項設定為「拒絕 (Reject)」;
3. 將「輸出 (Output)」保持為「接受 (Accept)」,「轉發 (Forward)」保持為「拒絕 (Reject)」;
4. 選取「偽裝 (Masquerading)」選項;
5. 選取「MSS 箝制 (MSS clamping)」選項;
6. 從「已覆蓋網路 (Covered Networks)」下拉式選單中選擇「nordvpntun」;
7. 在「允許從來源區域轉發 (Allow forward from source zones)」下拉式選單中,選擇「區域網路 (lan)」;
8. 按一下「儲存 (Save)」按鈕。
```

19. 在\*\*「區域 (Zones)」專區中,找到名為「區域網路 (lan)」的區域並點選「編輯 (Edit)」\*\*按鈕。

20. 在\*\*「允許轉發至目的地區域 (Allow forward to destination zones)」下拉式選單中,選取「nordvpntun」\*\*條目。

21. 再次點選位於頁面頂部的\*\*「網路 (Network)」,然後從下拉式選單中選擇「DHCP 與 DNS (DHCP and DNS)」\*\*。
22. 在\*\*「一般設定 (General Settings)」分頁找到「DNS 轉發 (DNS forwardings)」選項,並在那裡輸入 NordVPN DNS 位址。 位址為:103.86.96.100和103.86.99.100\*\*

23. 前往\*\*「Resolve 與 Host 檔案 (Resolv and Hosts Files)」分頁,選取「忽略 Resolve 檔案 (Ignore resolve file)」方塊,然後點選「儲存並套用 (Save & Apply)」\*\*按鈕。

24. 最後,請返回\*\*「VPN」\*\* > \*\*「OpenVPN」\*\*分頁。
25. 在\*\*「OpenVPN 執行體 (OpenVPN instances)」專區中,選取選單中位於 NordVPN 選項旁的「已啟用 (Enabled)」選項,並點選「儲存並套用 (Save & Apply)」\*\*按鈕。

26. 點選已建立 NordVPN 執行體 (instance) 旁的\*\*「啟動 (Start)」\*\*按鈕來連線至 VPN 伺服器。
按照以上說明操作後,您應該能使用已完成的連線設定成功連線。 若想查看是否成功連線,請造訪 NordVPN 的首頁,位於頁面頂部的狀態應顯示為\*\*「受保護」\*\*
如欲中斷 VPN 連線,可點選位於\*\*「VPN」\*\* > 「OpenVPN」 > \*\*「OpenVPN instances」專區內 NordVPN 選項旁的「Stop」\*\*按鈕。
## CLI 操作說明
若在尋找更進階的教學,請按照本指南進行操作。 若要取得 VPN 在 OpenWrt 上的優勢,所使用的路由器需要搭載 OpenWrt 韌體和已啟用的 OpenVPN 用戶端。 韌體主頁為[https://openwrt.org/](https://openwrt.org/)。
1. 若要開始進行操作,必須先使用路由器的區域網路 IP 位址,透過 SSH 來存取路由器。 預設情況下,IP 位址設為192.168.1.1,使用者名稱為root。不過,如果您曾變更過任何一個預設值,IP 位址可能會有差異。
2. 在預設情況下,OpenVPN 套件並不包含在韌體映像中。 如欲安裝此套件,請執行以下指令:
opkg update\
opkg install openvpn-openssl\
opkg install ip-full
此外,您也可以安裝 OpenVPN 設定的 LuCI 元件,不過此元件為選擇性安裝。 您可以執行這串指令來進行安裝:
opkg install luci-app-openvpn
3. 安裝好 OpenVPN 套件後,若希望套件在路由器開機時自動執行,可執行以下命令:
/etc/init.d/openvpn enable
4. 接著,您將需要下載伺服器設定檔。
按照以下步驟找到手動連線設定檔:
1. 登入[Nord 帳戶](https://my.nordaccount.com/zh-tw/),然後點選\*\*「NordVPN」\*\*。

2. 向下捲動至\*\*「進階設定」,並點選「手動設定 NordVPN」\*\*。

3. 選擇\*\*「OpenVPN 設定檔」\*\*分頁。

4. 使用\*\*「搜尋列」進行搜尋,或向下捲動,點選「下載 UDP」或「下載 TCP」進行下載,找到想連線的伺服器。

5. 手動連線至OpenVPN和IKEv2時,在\*\*「服務憑證」分頁上,您將需要使用使用者名稱及密碼\*\*。

6. 本指南使用了伺服器\*\*「uk2054.nordvpn.com」\*\*,但您應該使用網站推薦的伺服器。
若要下載伺服器檔案,請選擇想連線的國家/地區,並點選「顯示可用的通訊協定 (Show available protocols)」,右鍵按一下「OpenVPN TCP」或「OpenVPN UDP」的「下載設定檔 (Download config)」,並選擇「複製連結位址 (Copy link address)」。
然後返回 SSH 工作階段,並執行以下指令:
wget -P /etc/openvpn [https://downloads.nordcdn.com/configs/files/ovpn\_udp/servers/uk2054.nordvpn.com.udp.ovpn](https://downloads.nordcdn.com/configs/files/ovpn_udp/servers/uk2054.nordvpn.com.udp.ovpn)
不過,請確保使用為特定的伺服器檔案所複製的連結。 這串指令會將設定檔下載至\*\*「/etc/openvpn」\*\*目錄,方便快速存取。
或者,您可以將伺服器設定檔下載至不同的裝置上,並使用替代方式(例如 SCP 或 SFTP 通訊協定),將其轉移至 OpenWrt 路由器。
_如為舊版 OpenWrt:_\
您可以在此下載檔案[https://downloads.nordcdn.com/configs/archives/certificates/servers.zip](https://downloads.nordcdn.com/configs/archives/certificates/servers.zip)。 在下載好的檔案中,您會找到 .crt 和 .key 副檔名的對應檔案。 這些是每個 VPN 伺服器的特有檔案。
7. 每當 OpenVPN 啟動時,NordVPN 的 OpenVPN 設定會要求您輸入 NordVPN 服務的使用者名稱和密碼。 不過,我們將進行一些調整,好讓程式之後會自動填入帳密。
為了讓流程更加簡便,請先執行以下指令來安裝nano文字編輯器:
opkg install nano
或者,您也可以使用內建的vi文字編輯器。 更多關於文字編輯器的資訊,請參閱此文:[https://openwrt.org/docs/guide-user/base-system/user.beginner.cli](https://openwrt.org/docs/guide-user/base-system/user.beginner.cli)。
現在,請使用 nano 文字編輯器開啟下載好的伺服器設定檔。 在本範例中的指令為:
nano /etc/openvpn/uk2054.nordvpn.com.udp.ovpn
然後,將單字「secret」(不含引號)添加至字串「auth-user-pass」尾端。 最後整串文字應如下所示:
auth-user-pass secret。
現在,我們需要建立一個名為 _secret_ 的新檔案,並將 NordVPN 的服務憑證儲存於其中。 為此,請執行以下指令:
nano /etc/openvpn/secret
此操作將建立新檔案,接著請用 nano 文字編輯器開啟該檔案。
在檔案的第一行中,請輸入 NordVPN 服務使用者名稱,並在第二行輸入 NordVPN 服務密碼。
您只要前往[Nord 帳戶儀表板](https://my.nordaccount.com/dashboard/nordvpn/),就能找到自己的 NordVPN 服務憑證(服務使用者名稱和服務密碼)
請按照以下步驟找到手動連線設定的服務憑證:
1. 登入[Nord 帳戶](https://my.nordaccount.com/zh-tw/),按一下\*\*「NordVPN」,然後在
「手動設定」中點選「服務憑證」。在這裡可以找到手動連線必須用到的使用者名稱和密碼\*\*。

2. 以下兩種方式均可使用下載的設定檔設定 OpenVPN:
1. 將檔案的副檔名從\*\*.ovpn變更為.conf\*\*,這麼一來,OpenVPN 就能透過副檔名自動找到檔案。
為此,可以使用mv指令:
mv /etc/openvpn/uk2054.nordvpn.com.udp.ovpn /etc/openvpn/uk2054.nordvpn.com.udp.conf
2. 使用以下的「uci」指令,將檔案名稱指定為「/etc/config/openvpn」:
uci set openvpn.nordvpn=openvpn\
uci set openvpn.nordvpn.enabled='1'\
uci set openvpn.nordvpn.config='/etc/openvpn/uk2054.nordvpn.com.udp.ovpn'\
uci commit openvpn
之後,「/etc/config/openvpn」檔案結尾應已新增以下字串:
config openvpn 'nordvpn'\
option enabled '1'\
option config '/etc/openvpn/uk2054.nordvpn.com.udp.ovpn'
如欲進行確認,請執行這串指令:
tail /etc/config/openvpn
您也可以將檔案的副檔名從\*\*.ovpn改為.conf\*\*,並於「/etc/config/openvpn」檔案中指定該副檔名。但如為這種情況,OpenVPN 僅會使用該設定檔啟動一次。
3. 請執行以下指令,建立新網路介面:
uci set network.nordvpntun=interface\
uci set network.nordvpntun.proto='none'\
uci set network.nordvpntun.ifname='tun0'\
uci commit network
在所有流程均正確進行的情況下,「/etc/config/network」檔案結尾應已新增以下字串:
config interface 'nordvpntun'\
option proto 'none'\
option ifname 'tun0'
您可使用tail /etc/config/network指令進行檢查。
4. 透過執行以下指令建立新防火牆區域,並新增從區域網路轉發至 VPN 的規則:
uci add firewall zone\
uci set firewall.@zone\[-1\].name='vpnfirewall'\
uci set firewall.@zone\[-1\].input='REJECT'\
uci set firewall.@zone\[-1\].output='ACCEPT'\
uci set firewall.@zone\[-1\].forward='REJECT'\
uci set firewall.@zone\[-1\].masq='1'\
uci set firewall.@zone\[-1\].mtu\_fix='1'\
uci add\_list firewall.@zone\[-1\].network='nordvpntun'\
uci add firewall forwarding\
uci set firewall.@forwarding\[-1\].src='lan'\
uci set firewall.@forwarding\[-1\].dest='vpnfirewall'\
uci commit firewall
如果步驟正確執行,「/etc/config/firewall」檔案結尾應已新增以下字串:
config zone\
option name 'vpnfirewall'\
option input 'REJECT'\
option output 'ACCEPT'\
option forward 'REJECT'\
option masq '1'\
option mtu\_fix '1'\
list network 'nordvpntun'
config forwarding\
option src 'lan'\
option dest 'vpnfirewall'
您可透過執行tail -13 /etc/config/firewall指令來進行檢查, 這將顯示最後 13 行文字,包含前面所提到的字串。
5. 現在必須設定 DNS 伺服器。 最簡單的方法是使用 NordVPN DNS 作為路由器的廣域網路 (WAN) 介面。 若要新增 NordVPN DNS,請執行以下指令:
```
uci set network.wan.peerdns='0'
```
```
uci del network.wan.dns
uci add\_list network.wan.dns='103.86.96.100'
uci add\_list network.wan.dns='103.86.99.100'
uci commit
_執行_ _uci del network.wan.dns_ _指令時,如果收到錯誤訊息「__uci: Entry not found__」,請忽略。_
「/etc/config/network」檔案應包含「wan」區塊。並於檔案底端新增三條字串:
config interface 'wan'
<...>
option peerdns '0'
list dns '103.86.96.100'
list dns '103.86.99.100'
您可以透過執行cat /etc/config/network指令進行檢查,並在輸出資料中找到「wan」介面。
也可以執行以下指令來新增不同的 DNS 位址,例如 Google 的 DNS 位址:
uci set network.wan.peerdns='0'
uci del network.wan.dns
uci add\_list network.wan.dns='8.8.8.8'
uci add\_list network.wan.dns='8.8.4.4'
uci commit
結尾新增的字串應與先前的類似。
```
\*\*(選用)\*\*為避免在 VPN 通道連線中斷時發生流量外洩,您可以使用文字編輯器打開「/etc/firewall.user」檔案,並在檔案中新增以下內容:
\# This file is interpreted as a shell script.
\# Put your custom iptables rules here, and they will be executed with each firewall (re-)start
\# Internal uci firewall chains are flushed and recreated on reload, so
\# put custom rules into the root chains, e.g. INPUT or FORWARD, or into the
\# special user chains, e.g. input\_wan\_rule or postrouting\_lan\_rule.
if (! ip a s tun0 up) && (! iptables -C forwarding\_rule -j REJECT); then
iptables -I forwarding\_rule -j REJECT
fi
此外,您應該透過執行nano /etc/hotplug.d/iface/99-prevent-leak指令,在「/etc/hotplug.d/iface」資料夾中建立一個名為「99-prevent-leak」的檔案,並在檔案中新增以下內容:
#!/bin/sh
if \[ "$ACTION" = ifup \] && (ip a s tun0 up) && (iptables -C forwarding\_rule -j REJECT); then
iptables -D forwarding\_rule -j REJECT
fi
if \[ "$ACTION" = ifdown \] && (! ip a s tun0 up) && (! iptables -C forwarding\_rule -j REJECT); then
iptables -I forwarding\_rule -j REJECT
fi
在某些情況下,OpenVPN 連線可能會當掉,而連線日誌中會出現類似「couldn’t resolve host…」的內容。 在這種情況,VPN 通道仍持續存在,但是 VPN 會斷線。 若要自動重新連線,請先使用文字編輯器開啟「/etc/rc.local」檔案,並新增以下文字:
/etc/openvpn/reconnect.sh &
此外,您必須在「/etc/openvpn」目錄中建立「reconnect.sh」檔案。 執行nano /etc/openvpn/reconnect.sh指令即可建立該檔案。
請在檔案中輸入以下程式碼:
#!/bin/sh
n=10
while sleep 50; do
t=$(ping -c $n 8.8.8.8 | grep -o -E '\[0-9\]+ packets r' | grep -o -E '\[0-9\]+')
if \[ "$t" -eq 0 \]; then
/etc/init.d/openvpn restart
fi
done
按照以上說明操作後,您應該能使用已完成的連線設定成功連線。 若想查看是否成功連線,請造訪 NordVPN 的首頁,位於頁面頂部的狀態應顯示為「受保護」。
如想中斷 VPN 連線,請執行以下指令:
service openvpn stop