前言
Asus Merlin 是一款第三方韌體,基於 Asus 官方韌體修改而來,提供了更多的功能和選項。
本文將介紹如何在 Asus Merlin 路由器上安裝 Xray Core。
必須要注意的是,路由器的硬體性能和記憶體大小會影響 Xray Core 的運行效果,如果硬體性能和記憶體不足,可能會導致路由器運行緩慢或者無法運行。
另外 JFFS 壽命有限,需要使用 USB 隨身碟或者其他存儲設備來存放 Xray Core 和組態檔案,以免影響 JFFS 的壽命。所以路由器必須要有 USB 插槽。
建立組態檔案
假設路由器的 USB 位置是 /mnt/Router/
,在這之下建立一個 vpn
目錄,然後下載 Xray Core 及其他附加檔案。具體路徑可以使用 df
命令查看。
首先,建立一個 Xray Core 的設定檔案,當中的 id
是用於驗證用戶的,必須更改為自己的 UUID,可以使用 UUID 生成器 或者使用 uuidgen
命令生成。
在目錄 /mnt/Router/vpn/
下建立 config.json
檔案,並將以下內容填入。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| {
"log": {
"loglevel": "warning"
},
"inbound": {
"port": 10086,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "c80017df-e5dd-4739-9c18-cd98296c1cc7",
"level": 1,
"alterId": 64
}
]
}
},
"outbound": {
"protocol": "freedom",
"settings": {}
},
"outboundDetour": [
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"routing": {
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
],
"outboundTag": "blocked"
}
]
}
}
}
|
下載 Xray Core
查看路由器的 CPU 架構,然後根據架構下載對應的 Xray Core 執行檔。一般來說,Asus 路由器的 CPU 架構是 armv7l
。
如果是 armv7l
,則下載 arm32-v7a
版本的 Xray Core。如果是 aarch64
,則下載 arm64-v8a
版本的 Xray Core。
下載 XTLS/Xray-core
:
1
2
3
4
| cd /mnt/Router/vpn/
wget -O xray-core.zip https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-arm32-v7a.zip
unzip xray-core.zip
chmod +x xray
|
下載 GeoIP 和 GeoSite
在官方的壓縮包中,已附帶 GeoIP 和 GeoSite 的 DAT 檔案,但是這些檔案可能不是最新的,可以按照以下步驟下載最新的 GeoIP 和 GeoSite DAT 檔案。
當中的 geo*.dat
檔案是用來分析 IP 地址的,config.json
是 Xray Core 的組態檔案,xray
是 Xray Core 的執行檔。
可以用於過濾特定的流量,也可以用於去除廣告等。
類別列表:
geoip:cloudflare
geoip:cloudfront
geoip:facebook
geoip:fastly
geoip:google
geoip:netflix
geoip:telegram
geoip:twitter
geosite:category-ads-all
下載或更新 GeoIP 和 GeoSite DAT 檔案:
1
2
3
4
| cd /mnt/Router/vpn/
rm -f geoip.dat geosite.dat
wget -N -O geoip.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
wget -N -O geosite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
|
設定開機自動啟動
修改 /jffs/scripts/xray-check.sh
檔案,加入以下內容:
1
2
3
4
5
6
7
8
9
10
11
| #! /bin/sh
case "$(pidof xray | wc -w)" in
0) echo "Restarting Xray: $(date)" >> /mnt/Router/vpn/xray-status.log
nohup /mnt/Router/vpn/xray --config=/mnt/Router/vpn/config.json >/dev/null 2>&1 &
;;
1) # all ok
;;
*) echo "Removed double Xray: $(date)" >> /mnt/Router/vpn/xray-status.log
kill $(pidof xray | awk '{print $1}')
;;
esac
|
設定 xray-check.sh
檔案的執行權限:
1
| chmod +x /jffs/scripts/xray-check.sh
|
修改 /jffs/scripts/services-start
檔案,加入以下內容:
1
2
3
4
| sleep 60
nohup /mnt/Router/vpn/xray --config=/mnt/Router/vpn/config.json > /dev/null 2>&1 &
#check xray every 15 minute
cru a check-xray "*/15 * * * * /jffs/scripts/xray-check.sh > /dev/null"
|
這邊會在路由器開機後等待 60 秒,然後啟動 Xray Core,並且每 15 分鐘檢查一次 Xray Core 是否運行正常。可以根據需要調整檢查的時間間隔。
組態防火牆
如果你的路由器有啟用防火牆,請確保防火牆允許 Xray Core 的流量通過。
修改 /jffs/scripts/firewall-start
檔案,加入以下內容:
1
| iptables -I INPUT -p tcp --dport 10086 -j ACCEPT
|
10086
是 Xray Core 的連接埠,如果你修改了連接埠,請將 10086
替換為你的連接埠。
設定 firewall-start
檔案的執行權限:
1
| chmod +x /jffs/scripts/firewall-start
|
關於 DMZ 功能
如果有使用 DMZ 功能,則需要同時啟用 Port Forwarding 功能,將 Xray Core 的連接埠對應到路由器上,這樣才能保證 Xray Core 的流量能夠正常通過。
可參考以下設定:
1
2
3
4
5
| Service Name: VPN
External Port: 10086
Internal Port: (空白)
Internal IP Address: 192.168.1.1 (路由器的 IP 地址)
Protocol: TCP
|
External Port 可以根據需要調整,如果是連號的連接埠,則可以使用格式 10086:10090
來同時對應多個連接埠。
設定 SWAP,增加可用內存
如果你的路由器內存不足,可以設定 SWAP,增加可用內存。要留意的是,不要將 SWAP 設定在 JFFS 上,這樣會令 JFFS 的壽命快速縮短,到時就只能更換路由器了。所以必須將 SWAP 建立在 USB 隨身碟上。
建立 SWAP 檔案
1
| dd if=/dev/zero of=/mnt/Router/swapfile bs=1M count=1000
|
1000 是 SWAP 檔案的大小,可以根據需要調整。如果只需要 512MB 的 SWAP,則將 count=1000
替換為 count=500
。
格式化 SWAP 檔案
1
| mkswap /mnt/Router/swapfile
|
啟用 SWAP 檔案
1
| swapon /mnt/Router/swapfile
|
另外也需要在 /jffs/scripts/post-mount
檔案中加入以上指令,這樣每次開機都會自動掛載 SWAP 檔案。
設定開機自動掛載 SWAP 檔案
1
| echo "swapon /mnt/Router/swapfile" >> /jffs/scripts/post-mount
|
檢查 SWAP 是否正常運作
如果看到 Swap
欄位有數值,則表示 SWAP 正常運作。
結語
以上例子中,我們將 Xray Core 安裝在 Asus Merlin 路由器上,並且設定了自動啟動和防火牆規則。同時也設定了 SWAP,增加了可用內存。
例子中的 XRay 採用了 VMess 協議,在實際使用中,需要根據自己的需求進行組態,建議使用 VLESS 及 Reality 協議,以提高安全性。