設定 V2ray + TLS(進階篇)

前面那麽多步驟,就是希望 V2ray 能使用 TLS 來偽裝,現在到戲玉了。
這部份進階篇會假設大家已經懂得使用 SSH 進入,已經懂得安裝 V2Ray,如果不懂可以由第一頁看起,不再重複了。
最初準備工作會和基本篇一樣,在 firewall 開 port 和令 V2ray 開機自動執行。
使用 TLS 偽裝,當然最好使用 port 443, 萬一真的不能使用的話,可以考慮 8443. 而今次教學會使用 443.

本篇文假設你已經完成了基本篇,所以只會標示需要修改的地方。

首先在 firewall 開啓 port 443(將基本篇的 10086 改為 443)

nano /jffs/scripts/firewall-start

將以下內容複制 & 貼上

#!/bin/sh

iptables -I INPUT -p tcp --dport 443 -j ACCEPT

按 Ctrl + X 退出,之後按 Y 確定儲存,再按一下 Enter 確定檔案名。

再來建立一個令 V2ray reload 的設定。

nano /jffs/scripts/v2ray-reload.sh
#!/bin/sh

#find old v2ray process and kill it.
ps -w | grep /jffs/v2ray/v2ray | grep -v grep | awk '{print $1}' | xargs kill

#sleep 10s for wait port release
sleep 10

#load v2ray again
nohup /jffs/v2ray/v2ray --config=/jffs/v2ray/config.json >/dev/null 2>&1 &

按 Ctrl + X 退出,之後按 Y 確定儲存,再按一下 Enter 確定檔案名。

之後令到所有指令都變為可執行狀態:

chmod a+rx /jffs/scripts/*

現在,將 v2ray 自動重載指令會定時啓動,所以要將它加入 services-start.
現在 services-start 應該會變成這樣子。

nano /jffs/scripts/services-start
#!/bin/sh

RC='/opt/etc/init.d/rc.unslung'

i=30
until [ -x "$RC" ] ; do
  i=$(($i-1))
  if [ "$i" -lt 1 ] ; then
    logger "Could not start Entware"
    exit
  fi
  sleep 1
done
$RC start

#sleep 5min for DNS update
sleep 300

#cert create
sh /jffs/scripts/acme-issue.sh&

#v2ray start
mkdir /var/log/v2ray/
nohup /jffs/v2ray/v2ray --config=/jffs/v2ray/config.json > /dev/null 2>&1 &

#check v2ray every 15 minute
cru a check-v2ray "*/15 * * * * /jffs/scripts/v2ray-check.sh > /dev/null"

#let v2ray auto restart
cru a restart-v2ray "30 3 1 * * /jffs/scripts/v2ray-reload.sh > /dev/null"

按 Ctrl + X 退出,之後按 Y 確定儲存,再按一下 Enter 確定檔案名。

現在每個月 1 日 3:30am 都會自動重啓一次。

最大改變,就是 V2ray 的設定檔,今次介紹的設定是 V2ray + TLS 偽裝。
雖然比不上 NGINX 的完全 HTTP 連線,但已經是第二隱密的設定了。

nano /jffs/v2ray/config.json

將以下內容貼上,但同樣再次提醒,記得更改 ID,和你的 domain 域名。
如需要新的 UUID 可以到這個網站抄一個。

{
    "log" : {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "warning"
    },
    "inbound": {
        "port": 443,
        "protocol": "vmess",
        "settings": {
            "clients": [{
            "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
            "level": 1,
            "alterId": 64
            }]
        },
        "streamSettings": {
            "security": "tls",
            "tlsSettings": {
                "serverName": "ent-home.asuscomm.com",
                "certificates": [
                    {
                        "certificateFile": "/jffs/ssl/cert.pem",
                        "keyFile": "/jffs/ssl/key.pem"
                    }
                ]
            }
        }
    },
    "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"
            }]
        }
    }
}