NaiveProxy 取代VPN翻牆工具,實現科學上網

最後更新 2024-10-31 作者 Roy

最近要準備出差去對岸,最早是使用VPN走L2tp協定,但會出現偶發斷線問題。
歷經三年疫情、中間不斷有SS、SSR、v2ray新技術出來,但直到trojan和Naive我覺得這才是最終解決方案。
它們是以chrome的內核模仿用戶上網的行為,而且是走443 Port的加密連線,所以在資訊安全性和操作行為上是可以放心使用的。

NaiveProxy前期準備

  • Ubuntu 伺服器
  • 網域一組,並指向伺服器

NaiveProxy伺服器規格

  • Ubuntu 20.04 LTS
  • 1CPUs
  • 1GB RAM
  • 15G Disk
  • 1TB Bandwidth

NaiveProxy伺服器更新

更新伺服器的套件檔案清單

apt-get update

更新套件

sudo apt upgrade

安裝建議套件

sudo apt-get dist-upgrade 

NaiveProxy伺服器設定

安裝核心

安裝Golang、預設安裝是1.13版,需要1.21版以上才能順利編譯

wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz 

解壓縮到/usr/local

tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 

設置PATH

mkdir ~/.go
GOROOT=/usr/local/go
GOPATH=~/.go
PATH=$PATH:$GOROOT/bin:$GOPATH/bin

安裝xcaddy

go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

編譯xcaddy

~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive

Caddyfile配置

新增檔案

touch Caddyfile

編輯Caddyfile

nano Caddyfile

將下方資料替換成自己的後貼上,帳號和密碼中間要空格。
需要2個帳號只需將forward_proxy{…….}這段複製到後面接續即可。
預設是443 port,如果要改成其他port 第一行要修正為「:8080, naive.rdfarm.net:8080 」。

:443, naive.rdfarm.net #你的網域
tls example@gmail.com #你的信箱
route {
 #用户1
 forward_proxy {
   basic_auth user pass #帳號和密碼
   hide_ip
   hide_via
   probe_resistance
  }
 #用户2
 forward_proxy {
   basic_auth user2 pass2 #帳號和密碼
   hide_ip
   hide_via
   probe_resistance
  }
 reverse_proxy  https://rdfarm.net  { #偽裝網址
   header_up  Host  {upstream_hostport}
   header_up  X-Forwarded-Host  {host}
  }
}

接著執行以下指令,讓前台系統運作起來
第一次執行因為網域還沒取得憑證,所以會比較慢

./caddy run

這時鍵盤輸入Ctrl + C 先關閉目前頁面,接著輸入下方指令讓後台系統也運作起來

./caddy start

當系統都啟動後,輸入網址會發現網站內容是從我們偽裝網址所提供的

如果要讓服務關閉可以輸入下方指令

./caddy stop

如果服務在執行中有修改Caddyfile,記得輸入下面指令讓系統重新載入

./caddy reload

Ubuntu設定BBR加速

BBR是Google基於TCP擁塞所提出的優化方法,針對Web伺服器、影像串流等應用可以提升性能和增加用戶體驗,所以這部分會建議開啟。

修改sysctl.conf,依序輸入下面這三段指令

sudo -i
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

生效設定

sysctl -p

確認Linux內和已開啟BBR,輸入後會顯示下面的這段
net.ipv4.tcp_available_congestion_control = reno cubic bbr

sysctl net.ipv4.tcp_available_congestion_control

確認已啟動BBR,輸入後會顯示下面的這段
tcp_bbr 20480 42

lsmod | grep bbr

NaiveProxy用戶端設定

Windows用戶

首先要下載v2rayN和Naive

下載完後,解壓縮v2rayN

因為v2rayN沒有Naive的伺服器,所以將v2rayN和config複製到v2rayN資料夾內

以文字編輯器開啟config檔,設定好之後要存檔。
「user1」請填寫帳號、「passsss」請填寫密碼、「@」 後面填寫網域名稱

接著「以系統管理員身分」開啟v2rayN

點擊「添加自訂義服務器」

「別名」可填寫記得住的名稱
「地址」點擊瀏覽,將剛剛設定的config檔帶入

「Core類型」選擇naiveproxy
「Stock端口」填寫和config一樣的1080

接著將剛剛自訂的服務器設定為活動服務器

最後將v2rayN改為「自動配置系統代理」就可以穿透防火牆

Android用戶

Android需要先安裝SagerNetnaive-plugin

  • SagerNet工具載點(Github)
  • naive-plugin核心載點(Github)

接著開啟SagerNet,點擊右上角+符號

選擇手動設定

選擇Naive

這邊一樣填入我們前面所設定的資料後點擊右上角打勾符號儲存設定

「伺服器」填寫網址
「遠端連接埠」填寫443
「使用者名稱」填寫帳號
「密碼」填寫密碼

接著點擊右下角紙飛機的圖案後就可以開啟NaiveProxy連線

點擊下方粉紅色區塊,可以知道目前網路延遲狀況

Mac/iOS用戶

從Apple Store安裝Shadowrocket這套工具
這套工具需付費台幣90元,但之後使用同帳號登入iPhone、iPad、Macbook等裝置可以免費下載

下載完成後,點擊新增伺服器

型別,這邊選擇HTTPS或HTTP2都可以

下面資料依序填好之後,點擊右上角儲存
「地址」填寫網址
「埠」填寫443
「使用者」填寫帳號
「密碼」填寫密碼

最後點擊右上角即可開啟NaiveProxy連線

使用心得和常見問題

中國使用的網路營運商有中國聯通、中國移動、中國電信三家,投宿地方所提供的WiFi服務商不同、會影響連到國外的伺服器速度。
可以在香港、新加坡、日本、美國,這幾個租伺服器比較便宜的地區設定2-3台作為備援使用,選擇一個月5美金的即可。

*2024/10/25更新

如果伺服器突然不能使用可以使用下面的方法查看看是不是IP被ban掉了,被ban掉就只能租新的或者換個網路環境就有機率能使用。
使用traceroute追蹤網路連線是否正常或者斷線,適用Windows,Mac,Linux

關於作者 Roy

曾經北漂的工程師,現在專注於WordPress、.Net Core開發


發佈留言