自建最強科學上網4:NaiveProxy + Caddy
【美博翻牆2019.12.30】trojan、v2fly(V2Ray)、NaiveProxy系列翻牆方法中,因封鎖加劇,目前美博建議僅使用如下建立的NaiveProxy:
手動申請SSL證書自建代理:NaiveProxy + Caddy - 美博園 https://allinfa.com/manual-ssl-certificate-naiveproxy-caddy.html 自建代理申請SSL證書頻頻失敗的測試記錄 - 美博園 https://allinfa.com/ssl-certificate-failed-test-record.html
-------------------------------------------------------------
NaiveProxy是比較新的代理項目,與trojan類似也採用HTTPS協議,但有其獨到特點,NaiveProxy可減輕流量指紋識別(特徵)、主動探測和數據包長度分析的GFW審查帶來的風險,就是說更難被牆檢測和封鎖。而且,設置比v2ray、trojan還要簡略一些,目前網上NaiveProxy+Caddy的構建詳細教程極少,美博測試後發布此方法與網友分享。
NaïveProxy簡介【美博根據原文翻譯】
官方項目主頁:
GitHub - klzgrad/naiveproxy: Make a fortune quietly https://github.com/klzgrad/naiveproxy
註:官方項目使用的是這個詞 NaïveProxy,i上面是二點,為了方便書寫本文還是通用為 NaiveProxy。
據官方介紹:NaiveProxy 使用Chrome的網路堆棧來偽裝流量,與自定義的網路堆棧(如:Shadowsocks、V2Ray,手工Golang堆棧)相比,具有更強的抗審查能力和更低的可檢測性。復用Chrome堆棧使得NaïveProxy在(代理)性能和安全方面有最佳的表現。
NaïveProxy可緩解以下幾種方式的流量攻擊:
# 網站指紋識別/流量分類:通過HTTP/2中的流量復用來緩解。
# TLS參數指紋識別:因復用Chrome的網路堆棧而不能識別。
# 主動探測:被前端應用所克制,即將代理伺服器隱藏在具有應用程式層路由的常用前端後面。(美博註:這應是指反向代理)
# 基於數據包長度的流量分析:通過長度充填來減免。
原理是:【瀏覽器 → Naïve(客戶端)】→ GFW牆(審查員)→ 【前端 → Naïve(伺服器)】 → 網際網路
NaiveProxy 使用Chrome的網路堆棧,GFW牆(審查器)攔截的流量行為與Chrome和標準前端(例Caddy,HAProxy)之間的常規HTTP/2流量相同,沒有特徵信號。前端還會將未經身份驗証的用戶和活動探針重新路由到後端HTTP伺服器,從而使得無法檢測到代理的存在,即:探測Probe → 前端伺服器 → index.html(網頁)。(美博註:這個部份在v2ray、trojan也都有實現)
------------- 美博翻牆(allinfa.com)發布的幾個目前最好的自建代理,可自行選擇使用: 自建最強科學上網3+:trojan + Caddy(SSL證書自動續期) 自建最強科學上網2+:V2Ray + Caddy + Tls + WebSocket 自建最強科學上網5+:V2ray + Caddy + Tls + HTTP/2 自建最強科學上網4:NaiveProxy + Caddy 美博點評:V2Ray、trojan、NaiveProxy代理的異同及相關問題 美博認為這幾個組合都是目前翻牆思路最好、最強的翻牆方法,可等同使用。 -------------
本方法代理構建的系統要求:Ubuntu ≧ 16.04 or Debian ≧ 9,建議使用 Debian 10,不適用於 CentOS 。
本文有關的幾個概念介紹:
NaiveProxy:以常見的https協議和Chrome的網路堆棧技術構建的繞過網路限制、審查、翻牆的工具。 Caddy:作為部署代理的前端web伺服器。 HTTP/2(H2):是網際網路HTTP網路協議的主要修訂版。它源自Google最初開發的實驗SPDY協議。 TLS:安全傳輸層協議,用於在兩個通信應用程式之間提供保密性和數據完整性。 反向代理:相對正向代理而言,真實的web伺服器受到保護、對外不可見,外網只能看到反向代理,而反向代理伺服器上並沒有真實數據,從而保護web伺服器的資源安全,並可加速網站訪問速度等。
本教程按照實際製作過程進行描述:
為方便網友搭建,前面的步驟、命令、文件結構美博盡量做到與前文方法保持一致。
一、選擇 VPS 伺服器並安裝系統
購買VPS並安裝系統,請見教程:
自己搭建代理伺服器:VPS的選擇 自己搭建代理伺服器:Vultr VPS 購買圖文教程 自己搭建代理伺服器:Vultr VPS 系統安裝圖文教程
請記住VPS安裝系統後得到的: ip地址、 密碼、 用戶名(默認是root),後面會用到。
二、購買網域並設置與伺服器ip關聯
請參考教程:
自己搭建代理伺服器:網域購買及設置與ip伺服器關聯
網域是為了建立網站(網頁)用的,本方法實際建立一個網站(網頁),將翻牆代理隱身其中,翻牆就像是實實在在的在瀏覽網站,消除代理的特徵信號,提高翻牆代理安全性,這樣的思路一直以前的翻牆軟體難以實現的,NaiveProxy也實現了這個願望,成為目前最好的翻牆方法系列之一。
三、用SSH工具連接VPS伺服器
用SSH工具連接VPS伺服器後,可以輸入各種指令(命令)來安裝系統、安裝各種應用程式
在自家電腦上通過安全的SSH連接到遠端的VPS伺服器,就可以發出各種指令(命令)來安裝系統、安裝各種應用程式,包括建立代理的各種組件等等。在電腦上安裝XShell軟體來實現SSH連接非常方便,美博園推薦這個工具。
請參考:SSH連接軟體-Xshell下載及使用教程
如果你使用的是Linux或macOS系統,本身就內置有SSH鏈接的終端模擬器,無需下載額外的軟體。
=========== 幾點說明 =========
# 本文方法以root用戶來構建,建議不熟悉改變命令的網友不要自建用戶,否則此法的很多命令將不可用。 # 新手注意:以下命令都是在英文半形輸入完成,電腦的輸入法不要處於中文輸入狀態,以免無意輸入中文字元出錯。 # 在執行下面各種命令時,首先都是要以root用戶登錄SSH連接VPS伺服器,然後輸入各種命令來執行。 # 下面的步驟,如果不明白其中命令的含義沒有關係,請按照下面的全部順序,有的步驟是不能移動順序的,一步一步輸入命令完成即可。
==============================
四、更新及優化系統
購買VPS時已經選擇了安裝系統,首先我們要輸入指令更新系統:
4-1、更新系統
依次輸入【每輸入一行都要回車(按[Enter])】:
apt update
apt -y upgrade
註:以下每個命令輸入後都要按[Enter] 回車執行,下面不再重複註明。
4-2、用nano編輯器打開sysctl.conf配置文件
nano是Linux的一款文本編輯器,如同windows系統中的記事本、寫字板、EmEditor等文字編輯器一樣的作用。
輸入
nano /etc/sysctl.conf
編輯器打開後會有一個#綠色游標,這是可輸入內容的位置,都是象這樣子:

請注意一下使用nano編輯器和粘貼命令的規範操作,新手常常輸入出錯:
打開編輯器後,在#綠色游標處,先按enter回車,就會增加一空行;
再按「左方向鍵←」 讓綠色游標上移到空行處;
然後,點滑鼠右鍵,在右鍵菜單中點「粘貼」,不要使用ctrl+v來粘貼;
這樣就可以看到上述設置內容粘貼到nona編輯器中新增的空行處了。
請記住:以下nano編輯操作都要如上所述。
4-3、調整系統控制參數
為代理伺服器優化配置,將以下配置內容粘貼到上面命令打開的/etc/sysctl.conf文件的綠色游標處
# max open files fs.file-max = 51200 # max read buffer net.core.rmem_max = 67108864 # max write buffer net.core.wmem_max = 67108864 # default read buffer net.core.rmem_default = 65536 # default write buffer net.core.wmem_default = 65536 # max processor input queue net.core.netdev_max_backlog = 4096 # max backlog net.core.somaxconn = 4096 # resist SYN flood attacks net.ipv4.tcp_syncookies = 1 # reuse timewait sockets when safe net.ipv4.tcp_tw_reuse = 1 # turn off fast timewait sockets recycling net.ipv4.tcp_tw_recycle = 0 # short FIN timeout net.ipv4.tcp_fin_timeout = 30 # short keepalive time net.ipv4.tcp_keepalive_time = 1200 # outbound port range net.ipv4.ip_local_port_range = 10000 65000 # max SYN backlog net.ipv4.tcp_max_syn_backlog = 4096 # max timewait sockets held by system simultaneously net.ipv4.tcp_max_tw_buckets = 5000 # TCP receive buffer net.ipv4.tcp_rmem = 4096 87380 67108864 # TCP write buffer net.ipv4.tcp_wmem = 4096 65536 67108864 # turn on path MTU discovery net.ipv4.tcp_mtu_probing = 1 # for high-latency network net.core.default_qdisc=fq net.ipv4.tcp_congestion_control = bbr
4-4、退出nano編輯狀態
註:下面凡是用到nano編輯命令的,退出nano編輯狀態都是這個辦法。
輸入上述內容後,如何退出nano編輯狀態
同時按 Ctrl + X 若詢問你是否儲存檔案 (Save modified buffer? (Answering "No" will DISCARD changes.)) , 輸入 y 再按 Enter(回車),就可以退出nano編輯狀態了。
4-5、激活更改
輸入:
sysctl -p
五、安裝 Caddy
5-1、先安裝Web數據傳輸實用程序curl
輸入:
apt install curl
若詢問 Do you want to continue? [Y/n]
就按
y
繼續安裝直到完成。
--- 補充說明 開始 ---
有網友提醒:在谷歌雲(GCP,Google Cloud Platform)上的debian系統沒有自帶wget。
如果你使用的是谷歌雲,在這裡安裝caddy之前,在此步需要先安裝wget
若你使用的其它VPS也遇到無法安裝caddy,提示:wget: command not found
也可以試用下面方法:
輸入:
sudo apt-get install yum
再輸入:
yum -y install wget
--- 補充說明 結束 ---
5-2、安裝Caddy個人使用版本
說明:因caddy停止下載v1版,本教程修正此替代安裝方法,文件為官方原版,安裝連接由美博產生,是安全可靠的。但此處安裝鏈接可能不定時改變,敬請安裝時,瀏覽本文當下的安裝指令。
依次輸入:
wget -P /usr/local/bin "https://daofa.cyou/c1/caddy.tar"
tar -xvf /usr/local/bin/caddy.tar -C /usr/local/bin
rm /usr/local/bin/caddy.tar
5-3、確定caddy文件安裝在何處
輸入:
whereis caddy
顯示為:
root@vmi:~# whereis caddy
caddy: /usr/local/bin/caddy
5-4、賦予所有權和許可權
#root擁有caddy文件防止其他賬戶修改
輸入:
chown root:root /usr/local/bin/caddy
#修改許可權為755,root可讀寫執行,其他賬戶不可寫
輸入:
chmod 755 /usr/local/bin/caddy
5-5、允許Caddy綁定到特權連線埠
#Caddy不會由root運行,使用setcap允許caddy作為用戶進程綁定低號連線埠(伺服器需要80和443)
輸入:
setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
5-6、www-data的組和用戶
檢查名為www-data的組和用戶是否已經存在
輸入:
cat /etc/group | grep www-data
顯示為:
root@vm:~# cat /etc/group | grep www-data
www-data:x:33:
輸入:
cat /etc/passwd | grep www-data
顯示為:
root@vm:~# cat /etc/passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
注意:你的顯示結果與上面一樣,就不需要下面輸入;如果顯示不一樣、其組和用戶不存在,則需要創建它們,如下操作:
輸入:
groupadd -g 33 www-data
輸入:
useradd -g www-data --no-user-group --home-dir /var/www --no-create-home --shell /usr/sbin/nologin --system --uid 33 www-data
5-7、為 Caddy 創建目錄
#創建資料夾存儲Caddy的配置文件
輸入:
mkdir /etc/caddy
#創建資料夾存儲Caddy所管理的站點證書
輸入:
mkdir /etc/ssl/caddy
#允許root及www-data組訪問相關文件,允許Caddy寫入站點證書資料夾
依次輸入【每輸入一行都要回車(按[Enter])】:
chown -R root:root /etc/caddy
chown -R root:www-data /etc/ssl/caddy
chmod 770 /etc/ssl/caddy
#創建記錄文件
依次輸入【每輸入一行都要回車(按[Enter])】:
touch /var/log/caddy.log
chown root:www-data /var/log/caddy.log
chmod 770 /var/log/caddy.log
六、創建網站(網頁)
6-1、為您的網站創建目錄
#如果默認站點根目錄不存在,創建以下資料夾
輸入:
mkdir -p /var/www/html
#允許www-data組擁有站點資料夾
輸入:
chown -R www-data:www-data /var/www
#創建空的Caddy配置文件
輸入:
touch /etc/caddy/Caddyfile
6-2、向網站添加內容
基本上有二種方式,一種是建立一個簡單的網頁,另一種是建立一個實實在在的簡易網站,可以裝一些內容。當用網域訪問時,是可以看到真實內容的。美博這裡先介紹創建一個簡單網頁的方法。
6-2-1、創建網站方法
這裡只是給朋友們提供一個思路去自己處理:
本方法的掩護網站建立的位置在 /var/www/html/ 目錄中,其中網頁啟動文件是 index.html。
了解網站的網友知道,你自己可以在網上找到很多網站模板(主題)程序,到處都有網站模板(主題)演示,下載一個模板(主題)後,把其全部文件(只要裡面的內容文件,不要模板(主題)名目錄)複製到 /var/www/html/ 目錄中,其中的 啟動文件 index.html 一定要在 html/ 目錄下,不要放在其它子目錄中,就OK了。
如何將本地電腦的網站模板文件上傳到指定的伺服器 /var/www/html/ 目錄中,請參考教程:
WinSCP:連接遠端伺服器的管理傳輸工具的使用教程
建議:不要變動以上的網站目錄結構(路徑),不然就可能需要更改目錄路徑和重新設置安裝本文一些其它步驟。
6-2-2、創建一個網頁
這個方法簡單,可以廣泛採用這個方法。
先特別說明:裡面的中文字內容,請不要千篇一律的複製,可任意改為你自己編輯的獨一無二的、普通的、無敏感詞的內容,如:詩詞、圖片、外文等等,
6-2-2-1、首先創建一個作為掩護的真正的網頁
輸入:
touch /var/www/html/index.html
6-2-2-2、編輯網頁文件
輸入:
nano /var/www/html/index.html
將以下內容粘貼到 #綠色游標處
<!DOCTYPE html> <html> <head> <title>Hello</title> </head> <body> <h1 style="font-family: sans-serif"> 這裡是標題,這些中文字可改為你自己的任何語言的任何內容 </h1> 這裡是網站網頁正文內容, 這些中文字可改為你自己的任何語言的任何內容 添加多少內容都可以 代碼部份不要改動,是一個簡易網頁的結構 網站網頁正文內容-結束 </body> </html>
註:圖片加入的格式為:<img src="你的圖片鏈接" />,可以加入多張圖片,圖文並茂更好,圖片插入的位置可以在你的正文內容(即上例所示的中文字部份)的「任意」位置。
總之,就是改為你自己知道的唯一的內容, 重申:其中不要有敏感字詞。
同上【4-2、調整系統控制參數】所述:nano編輯器和粘貼的的規範操作:
打開編輯器後,在#綠色游標處,點滑鼠右鍵,在右鍵菜單中點「粘貼」,不要使用ctrl+v來粘貼;
這樣就可以看到上述設置內容粘貼到nona編輯器中新增的空行處了。
然後,按老規矩退出nano編輯狀態:
同時按 Ctrl + X
若詢問你是否儲存檔案,按下 y
再按 Enter(回車),退出nano編輯狀態。
七、設置SystemD服務
7-1、安裝SystemD服務,配置 caddy.service
由於caddy準備拋棄caddy v1,所以後來的配置文件一改再改。我們自己來創建這個配置文件,比較穩妥實用,這個就不依賴於 caddy.service 的官方下載。
1)、創建 caddy.service 空文件
輸入:
touch /etc/systemd/system/caddy.service
2)、在nano編輯器中打開caddy.service
輸入:
nano /etc/systemd/system/caddy.service
3)、編輯caddy.service配置
將下面內容「原封不動」的複製出來,然後右鍵粘貼到nano編輯框中
[Unit] Description=Caddy HTTP/2 web server Documentation=https://caddyserver.com/docs After=network-online.target Wants=network-online.target systemd-networkd-wait-online.service ; Do not allow the process to be restarted in a tight loop. If the ; process fails to start, something critical needs to be fixed. StartLimitIntervalSec=14400 StartLimitBurst=10 [Service] Restart=on-abnormal ; User and group the process will run as. User=www-data Group=www-data ; Letsencrypt-issued certificates will be written to this directory. Environment=CADDYPATH=/etc/ssl/caddy ; Always set "-root" to something safe in case it gets forgotten in the Caddyfile. ExecStart=/usr/local/bin/caddy -log stdout -log-timestamps=false -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp ExecReload=/bin/kill -USR1 $MAINPID ; Use graceful shutdown with a reasonable timeout KillMode=mixed KillSignal=SIGQUIT TimeoutStopSec=5s ; Limit the number of file descriptors; see `man systemd.exec` for more limit settings. LimitNOFILE=1048576 ; Unmodified caddy is not expected to use more than that. LimitNPROC=512 ; Use private /tmp and /var/tmp, which are discarded after caddy stops. PrivateTmp=true ; Use a minimal /dev (May bring additional security if switched to 'true', but it may not work on Raspberry Pi's or other devices, so it has been disabled in this dist.) PrivateDevices=false ; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys. ProtectHome=true ; Make /usr, /boot, /etc and possibly some more folders read-only. ProtectSystem=full ; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there. ; This merely retains r/w access rights, it does not add any new. Must still be writable on the host! ReadWritePaths=/etc/ssl/caddy ReadWriteDirectories=/etc/ssl/caddy ; The following additional security directives only work with systemd v229 or later. ; They further restrict privileges that can be gained by caddy. Uncomment if you like. ; Note that you may have to add capabilities required by any plugins in use. ;CapabilityBoundingSet=CAP_NET_BIND_SERVICE ;AmbientCapabilities=CAP_NET_BIND_SERVICE ;NoNewPrivileges=true [Install] WantedBy=multi-user.target
然後,按老規矩退出nano編輯狀態:
同時按 Ctrl + X
若詢問你是否儲存檔案,按下 y
再按 Enter(回車),退出nano編輯狀態。
7-2、設置caddy.service許可權
輸入:
chown root:root /etc/systemd/system/caddy.service
輸入:
chmod 644 /etc/systemd/system/caddy.service
7-3、重載systemd使其檢測到新安裝的Caddy服務
輸入:
systemctl daemon-reload
八、配置 Caddy
8-0、產生密碼
因後面配置中要用到密碼,你可以自己隨意寫一串數字、字母組合的密碼,補充:建議不要用符號,特別是#、@、:等這些符號不要用;
可以通過執行下面命令隨機產生一組密碼:
輸入:
head /dev/urandom | tr -dc a-z0-9 | head -c 16 ; echo ''
得到的密碼像這樣:
cal32u233ndcfu0m
不用記,複雜一些就好,複製下來,在下面配置中會用到,並且以下配置中要用到密碼的地方都要與這個完全相同。
8-1、加入Caddy配置文件
輸入:
nano /etc/caddy/Caddyfile
請注意,先要修改下面紫紅色標記的「網域」、「信箱」為你自己的資料(下面有詳細說明)
然後再將內容粘貼到 #綠色游標處
這裡舉例用一個二級網域 np.abcdef.com
np.abcdef.com { log stdout errors stderr root /var/www/html tls 12345@gmail.com forwardproxy { basicauth 你的用戶名 你的密碼 hide_ip hide_via probe_resistance upstream https://127.0.0.1:8080 } }
然後,同時按 Ctrl + X,再按y,再按 Enter(回車),退出nano編輯狀態。
說明: 1)np.abcdef.com:要改為你自己的網域,若是這樣的二級網域,其正確解析請參考前文【自己搭建代理伺服器:網域購買及設置與ip伺服器關聯】; 2)12345@gmail.com:要改為你自己的郵箱,Caddy將自動與Let's Encrypt聯繫以獲取SSL證書並在90天到期後自動更新證書; 3)你的用戶名:隨機填寫你自己的,數字字母組合隨意; 4)你的密碼:這裡就要用到上一步隨機產生的密碼; 即:這句 basicauth 你的用戶名 你的密碼,實際寫出來就是這樣子:basicauth myuserid cal32u233ndcfu0m 注意格式,中間都有一個半形英文空格 5)Caddy將自動與Let's Encrypt聯繫以獲取SSL證書。它將證書和密鑰放在「/etc/ssl/caddy/acme/acme-v02.api.letsencrypt.org/sites/你自己的網域/」 目錄中; 6)此文件保存後,Caddy會隨即向Let's Encrypt發出SSL證書申請,一般很快在一分鐘就可完成,但可能有人會遇到特殊情況比較久一些才會完成。
8-2、賦予Caddy配置文件許可權
#給它適當的所有權和許可權:
輸入:
chown root:root /etc/caddy/Caddyfile
輸入:
chmod 644 /etc/caddy/Caddyfile
8-3、啟動Caddy
#啟動Caddy
輸入:
systemctl start caddy
8-4、檢查Caddy啟動狀態
要檢查Caddy是否正在運行並且正在偵聽連線埠80和443,可輸入:
systemctl status caddy
你應該看到這樣子的結果,如看到如下綠色字 active (running),表明 caddy已經啟動:

8-5、檢查SSL證書是否生效及效果
上面Caddy配置是否生效,SSL證書是否已經生成,到這裡要進行檢查,這在NaiveProxy構建時是需要做的。因為SSL證書沒有生成,後面是不能成功搭建NaiveProxy代理的。而且,上面這一步的Caddyfile配置是專為你的網域生成證書,在後面會刪除這個設置,所以,這一步一定要檢查SSL證書已經生成才可以往下面的步驟走。
檢查很簡單:
1)、在瀏覽器中用 https://你的網域
如果已經可以訪問你的網站,顯示你自己建的網站內容,就表明SSL已經安裝成功了。
因有時SSL證書申請要等幾分鐘,如果沒有馬上生效,可稍等一下。
2)、如果要進一步看看SSL效果,可以在 SSL Labs網站查看
https://www.ssllabs.com/ssltest/
在其中輸入自己的網域,可以檢測一下https配置評分。
8-6、自啟動Caddy
若上一步啟動無問題則可啟用開機自啟動Caddy
輸入:
systemctl enable caddy
會顯示:
Created symlink /etc/systemd/system/multi-user.target.wants/caddy.service → /etc/systemd/system/caddy.service.
8-7、若Caddy沒有正常啟動的記錄查看
注意:如果Caddy無法正常啟動,則可以查看日誌數據以幫助找出問題。如果已經啟動,不需要此步檢查。
輸入:
journalctl --boot -u caddy.service
8-8、修改 Caddy 配置會用到的相關命令 -- 此節只是說明
註:此節內容不需要接上下步驟操作,只是修改配置文件時才需要
若caddy沒有正常啟動,檢查到前面的步驟中某一步驟有輸入錯誤等,要修改 Caddyfile、caddy.service等等文件,那麼就會用到的一些命令:
修改前,
一般要先停止Caddy服務:
caddy -service stop
修改完成後:
重載systemd使其檢測到新安裝的Caddy服務
systemctl daemon-reload
啟動Caddy服務:
caddy -service start
或
重啟Caddy服務:
caddy -service restart
查看啟動狀態
systemctl status caddy
若不需要、或安裝錯誤Caddy服務,可卸載再重新安裝
卸載Caddy服務:
caddy -service uninstall
九、安裝 NaiveProxy
9-1、先安裝組件
輸入:
apt install libnss3
若有詢問:
Do you want to continue? [Y/n]
輸入: y
繼續安裝。
9-2、安裝 NaiveProxy
這個需要先到NaiveProxy官網(Github 頁面)去查看最新版本,文件要根據你的系統是什麼來選擇,修改下面命令的版本號才能安裝到最新版:
在瀏覽器中,打開其官方頁面:
https://github.com/klzgrad/naiveproxy/releases
可見有版本號,如目前最新版是 v81.0.4044.92-1,我們選擇 這個 naiveproxy-v81.0.4044.92-1-linux-x64.tar.xz
你可以在官網這個文件上點右鍵複製其下載鏈接,也可以直接將版本號複製出來替換下面命令中的版本號,即:
特別說明:我們這裡舉例的naiveproxy版本號 v81.0.4044.92-1,如何你使用的是自己選擇的版本號,請記得在下面幾個步驟里要修改為相應的版本號
先執行如下命令:
wget https://github.com/klzgrad/naiveproxy/releases/download/v81.0.4044.92-1/naiveproxy-v81.0.4044.92-1-linux-x64.tar.xz (註:此步要修改為你自己的版本號)
然後輸入命令解壓縮:
輸入:
apt install xz-utils
tar -xf naiveproxy-v81.0.4044.92-1-linux-x64.tar.xz (註:此步要修改為你自己的版本號)
9-3、配置SystemD服務文件
# 轉到解壓縮的文件目錄
輸入:
cd naiveproxy-v81.0.4044.92-1-linux-x64 (註:此步要修改為你自己的版本號)
# 複製naive二進位命令
輸入:
cp naive /usr/local/bin
# 創建SystemD服務文件
用編輯器打開,輸入:
nano /etc/systemd/system/naive.service
將下面內容,不需要修改,直接複製進去:
[Unit] Description=NaiveProxy Server Service After=network-online.target [Service] Type=simple User=nobody CapabilityBoundingSet=CAP_NET_BIND_SERVICE ExecStart=/usr/local/bin/naive /etc/naive/config.json [Install] WantedBy=multi-user.target
然後,同時按 Ctrl + X,再按y,再按 Enter(回車),退出nano編輯狀態。
# 退出目錄
輸入:
cd
# 重新載入SystemD配置
輸入:
systemctl daemon-reload
十一、NaiveProxy伺服器端配置
(一)伺服器配置文件修改
# 產生配置空文件目錄
輸入:
mkdir /etc/naive
# 編輯器打開配置文件config.json
nano /etc/naive/config.json
將下面的內容複製、粘貼到綠色游標處,通用的,不需要修改:
{
"listen": "https://127.0.0.1:8080",
"padding": true
}
然後,同時按 Ctrl + X,再按y,再按 Enter(回車),退出nano編輯狀態。
說明:這裡可以看出,NaiveProxy的配置文件比v2ray和trojan要簡單許多。這個意思是:在NaiveProxy伺服器上,配置偵聽連線埠為8080,這是Caddy將傳遞經過身份驗証的數據流量的位置。
(四)啟動 NaiveProxy
# 開啟自啟動
輸入:
systemctl enable naive
顯示為:
root@vm:~# systemctl enable naive
Created symlink /etc/systemd/system/multi-user.target.wants/naive.service → /etc/systemd/system/naive.service.
# 啟動 NaiveProxy
輸入:
systemctl start naive
# 查看啟動是否成功
輸入:
systemctl status naive
如圖,若顯示為綠色的「active」表示NaiveProxy已經成功啟動
# 若不能啟動,請查看錯誤日誌
(已經正常啟動不需此輸入)
輸入:
journalctl -fu naive
十二、防火牆簡易設置
為了增強安全性,下面介紹防火牆的簡易設置,請接著上面的步驟繼續完成下面的設置。
請根據你的系統是 Ubuntu 或 debian 來選擇設置,二者防火牆設置方式不同。
12-1、Debian 系統 開啟防火牆及連線埠設置
如果你使用的是 Debian 系統,請按照下面的設置,不適用於Ubuntu系統和Centos系統
1)安裝UFW
Debian默認不安裝UFW,使用apt安裝:
apt install ufw
2)設置默認策略
要設置UFW使用的默認值,使用以下命令:
ufw default deny incoming
再輸入
ufw default allow outgoing
3)允許SSH連接
允許連線埠22上的所有連接
ufw allow 22
註:如果有的VPS伺服器的SSH使用其他連線埠,則必須指定相應的連線埠。例如,除了常用的22外,也有些使用2222 ,則可以使用此命令允許該連線埠上的SSH連接:
ufw allow 2222
4)啟用UFW
在允許了SSH後,才啟用UFW,不然SSH連接會斷開
要啟用UFW,使用以下命令:
ufw enable
會詢問是否安裝,
root@v3:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
請輸入 y
再 Enter(回車)
完成安裝會顯示:
Firewall is active and enabled on system startup
5)打開常用連線埠
翻牆會用到 連線埠80、443
依次輸入【每輸入一行都要回車(按[Enter])】:
ufw allow 80
ufw allow 443
再輸入命令啟用防火牆
ufw enable
會提問:
root@vu:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?</pre>
問是否真的啟用防火牆 enable firewall,並警告如果設定不當會斷線。因我們已經啟用 allow port 22 ,所以沒有問題,
<pre>按下 y
Enter(回車)
至此,Debian 系統 防火牆設置完成
12-2、Ubuntu 系統 開啟防火牆及連線埠設置
如果你使用的是 Ubuntu 系統,請按照下面的設置,不適用於Debian系統和Centos系統
因我們只是用於翻牆,需要打開這幾個連線埠 port: 22, 80, 443
22 / TCP(入站/出站):標準SSH連線埠
80 / TCP(入站/出站):標準HTTP連線埠
443 / TCP(入站/出站):標準HTTPS連線埠
用下面的命令打開這幾個 port
依次輸入【每輸入一行都要回車(按[Enter])】以下指令:
ufw allow 22
ufw allow 80
ufw allow 443
再輸入命令啟用防火牆
ufw enable
會提問:
root@vu:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?</pre>
問是否真的啟用防火牆 enable firewall,並警告如果設定不當會斷線。因我們已經啟用 allow port 22 ,所以沒有問題,
<pre>按下 y
回車
至此,Ubuntu 系統 防火牆設置完成
==============
1、退出SSH
退出 SSH 連接
輸入:
exit
或者 直接關閉 X-shell
2、關於修改NaiveProxy伺服器配置
上述設置一切都完成後,一般不需要修改就可以穩定運行。
如果你自己想修改配置,如網域、密碼等等,都是可以修改的,但是修改完成後,記得重啟NaiveProxy服務端即可,同時客戶端的資料也要同步修改。
修改前:
一般在修改前也是停止先服務
停止NaiveProxy服務
輸入:
systemctl stop naive
修改完成後:
修改配置後也需重新載入配置文件
systemctl daemon-reload
啟動NaiveProxy服務
輸入:
systemctl start naive
或
重啟NaiveProxy服務
輸入:
systemctl restart naive
==============
至此,所有伺服器端設置全部完成,下面進行客戶端和瀏覽器設置
十三、NaiveProxy客戶端下載、配置及使用方法
在伺服器端搭建好NaiveProxy代理伺服器後,我們還需在自己的電腦即客戶端上使用。
13-1、客戶端軟體下載
NaiveProxy官方也提供了客戶端軟體,與上述伺服器端安裝文件在一起,即:
打開其官方頁面:
https://github.com/klzgrad/naiveproxy/releases
可見最新版,根據自己的系統來選擇客戶端,比如:win10系統,選擇naiveproxy-v79.0.3945.79-1-win-x64.zip
因是較新的工具,圖形界面客戶端還沒有,官方發布的這個客戶端軟體,只有dos黑框,裡面可顯示數據連接狀況。
下載後解壓,得到資料夾,
其中文件包括:
config.json : 這個就是客戶端配置文件,
naive.exe : 這是NaiveProxy客戶端執行文件,
13-2、客戶端配置文件
這個客戶端配置文件需要自己編輯,用文本編輯器打開config.json
裡面是這樣:
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://user:pass@domain.example",
"log": ""
}
註:上面配置里user、pass、domain.example要修改為你自己的,並與【8-1、加入Caddy配置文件】中設置內容一致
user:是你設置的 「你的用戶名」
pass:是你設置的 「你的密碼」
domain.example:是你使用的網域,注意格式,不要少了網域前面那個 @
修改後就會像這樣子:
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://useridfuyin:cal32u233ndcfu0m@np.abcdef.com",
"padding": true,
"log": ""
}
修改後,記得保存。
註: "log": 這個參數,若加上,會在軟體中看到數據聯網情況,若不加就只有一個黑框,裡面沒有內容。 "padding": true, 這個是必須的,它添加長度充填來混淆流量。
13-3、啟動NaiveProxy
很簡單,雙擊naive.exe,就可以啟動了。
在使用代理期間,要一直保持 naive.exe 啟動狀態。
啟動後象這樣:
13-4、關閉NaiveProxy
啟動NaiveProxy後,顯示上圖的窗口,不使用NaiveProxy時,按最右上角的 X(關閉)即可。
十四、瀏覽器設置與代理上網
NaiveProxy正常啟動後,我們在瀏覽器設置對應的代理,就可以在瀏覽器中通過NaiveProxy代理上網了。也可以作為tor的前置代理,就很安全了。
14-1、瀏覽器代理參數設置
在瀏覽器中設置NaiveProxy代理為: socks5 127.0.0.1:1080
本系列教程中,v2ray、trojan、NaiveProxy的代理都是默認 socks5 127.0.0.1:1080
基本代理設置方式,如圖所示:
請注意:
1)、在firefox68版,很多代理調度擴展不能再使用(如 Gproxy代理擴展),美博的Firefox純凈綠色版、chrome純凈版,都已經用另外的代理擴展,如 SwitchyOmega中都有設置這個連線埠的v2ray、trojan、NaiveProxy代理,如果是使用美博的瀏覽器,就不用另外設置了,請參考:
火狐瀏覽器_Firefox_美博純凈中文綠色版 Google Chrome瀏覽器_美博園純凈綠色版 選其中的最新版本使用。
2)、其他瀏覽器設置NaiveProxy代理,請參考上圖設置代理。
3)、firefox57版之前的舊版firefox,可以使用以下介紹的方法設置firefox瀏覽器代理, 但是, 切記:在新版57版以後的firefox中,下面的代理擴展gproxy已經不起作用,請特別注意它可以設置代理卻不起作用,這很糟糕!
請參考:firefox57版(含)之後都不能使用下面的:
GProxy:火狐(firefox)瀏覽器簡便的代理調度擴展(v2.1) - 美博園 GProxy Plus 3.0和 3.1 版:Firefox瀏覽器簡便的代理調度擴展(20180523) - 美博園
14-2、上網,查看ip
代理是不是設置好了?代理起作用沒有,一般在「每次」使用時都應該自己先驗証確認一下。
方法很多,如:
美博園主頁右側欄有上網ip顯示 IP地理信息查詢 - 美博園 IP詳細參數及代理匿名度檢測 - 美博園 點進去就可以看到自己當前上網的代理ip地址及相關參數。 當然,你也可以通過其他方法檢驗。 其他方法請參考:如何查看自己上網的ip地址? - 美博園
***
=== 自建最強代理 v2ray、trojan、NaiveProxy 系列文章參考 ===
自建最強科學上網3+:trojan + Caddy(SSL證書自動續期) - 美博園 關於v2fly(V2Ray)更新版本的提醒 - 美博園 自建最強科學上網5+:V2ray + Caddy + Tls + HTTP/2 自建最強科學上網2+:V2Ray + Caddy + Tls + WebSocket 自建最強科學上網4:NaiveProxy + Caddy 「trojan+Caddy」SSL證書自動續期的Caddyfile配置解決方案 - 美博園 美博點評:V2Ray、trojan、NaiveProxy代理的異同及相關問題 - 美博園 自己搭建代理伺服器:VPS的選擇 - 美博園 自己搭建代理伺服器:Vultr VPS 購買圖文教程 - 美博園 自己搭建代理伺服器:Vultr VPS 系統安裝圖文教程 - 美博園 自己搭建代理伺服器:檢測ip是否被牆及更換ip - 美博園 自己搭建代理伺服器:網域購買及設置與ip伺服器關聯 - 美博園 SSH連接軟體-Xshell下載及使用教程 - 美博園 WinSCP:連接遠端伺服器的管理傳輸工具的使用教程 - 美博園 其它參考: v2ray客戶端代理上網 - Windows、Android、Mac、ios - 美博園 Let』s Encrypt 證書頒發的速率及次數限制 - 美博園 Let's Encrypt SSL 證書安裝不了的若干問題解決 - 美博園 如何開啟Google TCP BBR 加速 - 美博園 V2ray自建代理遇到的一些問題及解決 - 美博園
原文標題:自建最強科學上網4:NaiveProxy + Caddy - 美博園
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。
網 友 留 言
80條評論 in “自建最強科學上網4:NaiveProxy + Caddy”這裡是你留言評論的地方





樓主,之前按照您的指導完成搭建後成功訪問,最近1個多月沒用過節點,今天突然使用naive節點,發現訪問不上了,服務檢查都是正常的。奇怪的是,使用連線埠檢查,443和80,22都是正常的,不掛梯子ping地址和網域都是ok可以通,但是直接ssh vps就連接不上。掛上梯子後,可以正常連接vps,naive也可以測試通。
有點奇怪,連線埠掃描都不行了么?
● caddy.service - Caddy HTTP/2 web server
Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2022-10-31 21:59:44 EDT; 7s ago
Docs: https://caddyserver.com/docs
Process: 6860 ExecStart=/usr/local/bin/caddy -log stdout -log-timestamps=false -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp (code=exited, status=1/FAILURE)
Main PID: 6860 (code=exited, status=1/FAILURE)
Oct 31 21:59:42 xxxxxxxx.com caddy[6860]: 2022/10/31 21:59:42 [INFO] [xxxxxxxx.com] acme: use http-01 solver
Oct 31 21:59:42 xxxxxxxx.com caddy[6860]: 2022/10/31 21:59:42 [INFO] [xxxxxxxx.com] acme: Trying to solve HTTP-01
Oct 31 21:59:42 xxxxxxxx.com caddy[6860]: 2022/10/31 21:59:42 [INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz-v3/171001508407
Oct 31 21:59:42 xxxxxxxx.com caddy[6860]: [ERROR][xxxxxxxx.com] failed to obtain certificate: acme: Error -> One or more domains had a problem:
Oct 31 21:59:42 xxxxxxxx.com caddy[6860]: [xxxxxxxx.com] acme: error: 400 :: urn:ietf:params:acme:error:dns :: no valid A records found for xxxxxxxx.com; no valid AAAA records found for xxxxxxxx.com, url: (attempt 2/3; challenge=http-01)
Oct 31 21:59:43 xxxxxxxx.com caddy[6860]: 2022/10/31 21:59:43 [INFO] [xxxxxxxx.com] acme: Obtaining bundled SAN certificate
Oct 31 21:59:43 xxxxxxxx.com caddy[6860]: [ERROR][xxxxxxxx.com] failed to obtain certificate: acme: error: 429 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-order :: urn:ietf:params:acme:error:rateLimited :: Error creating new order :: too many
Oct 31 21:59:44 xxxxxxxx.com caddy[6860]: failed to obtain certificate: acme: error: 429 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-order :: urn:ietf:params:acme:error:rateLimited :: Error creating new order :: too many failed authorizations
Oct 31 21:59:44 xxxxxxxx.com systemd[1]: caddy.service: Main process exited, code=exited, status=1/FAILURE
Oct 31 21:59:44 xxxxxxxx.com systemd[1]: caddy.service: Failed with result 'exit-code'.
啟動服務一會後失敗,提示證書錯誤。下載的這個caddy集成了哪個ssl證書伺服器商呢?
想問一下,因為好像最近443連線埠被ban了。有無辦法指定其他連線埠代理,被封連線埠的應急措施(連線埠被封是之前的xtls沒藏好)
博主你好,我按你的方式搭建,瀏覽器OMEGA上使用HTTPS可以正常使用,但是客戶端一直報:
[1025/231612.409:INFO:naive_connection.cc(250)] Connection 34 to pss.bdstatic.com:443
[1025/231612.582:INFO:naive_proxy.cc(178)] Connection 32 closed: OK
你知道怎麼回事嗎,連線埠443,證書是Let's的。
感謝教程,這幾天的斷流風波使我注意到了naiveproxy。博主的教程太棒了,一次搭建就成功了。
自己成功在pc端使用的方法是,命令行運行naive.exe後,使用v2rayN開啟一個socks伺服器,只寫地址127.0.0.1和連線埠1080,運行此伺服器後就成功了。
自己在安卓手機端使用的方法是,下載安裝sagernet和naive-plugin,並給naive-plugin設置了必要的自啟動和不限制省電模式,在sagernet中手動創建naive協議的配置,伺服器輸入網域,遠程連線埠輸入443(不知道為何只能是443連線埠,8080連線埠連不上),用戶名輸入用戶名,密碼輸入密碼,其他不用改,連接節點就可以成功聯網了。
站長大大,電腦是好用了,可找了一圈也沒找到好用的手機客戶端。
能給點幫助嗎?謝謝啦。
@tttzzz 安卓可以用sagernet,win其實可以用v2rayN
非常感謝,一次成功了。
最近v2ray不能用了,被封了兩次ip,換ip還要花錢。
聽說這種現在還不會被牆。
naiveproxy有了新版本,能不能教一下怎麼升級。
@287300
慚愧,最近一直很忙,儘快安排時間修正,抱歉請再等一下。
ufw allow 8080 ufw allow 80
這兩條指令是多餘的
8080連線埠是caddy和naive服務端在vps內部交流的連線埠,沒必要對公網開放,也徒增安全隱患
80連線埠也沒必要開放,畢竟naive客戶端只支持以https方式訪問伺服器的443連線埠
只需要開啟443 22兩個連線埠就可以了,親測可以正常適用,也不會影響caddy更新證書
@哥哥我還要
1、美博寫教程時,每一步都是實測驗証的,所以我們的教程只要一步一步按照去做,就會建成代理。8080以前需要開啟,不開啟就不能使用代理,以前有網友提到這個問題,美博都有驗証,所以教程中有開啟這個連線埠。
剛剛測試了,現在不開啟這個連線埠可以正常運行,已經修改了教程,謝謝提醒;
2、80連線埠,不開啟當然可以使用代理,不加網站部份的trojan就是那樣構建的,但是,
我們的方法有實實在在的偽裝網站來掩護代理,如果關閉80連線埠,那麼http打不開你的網站,一個網站僅僅https可以打開,基本的http反而不能打開,那不是很奇怪,這樣的話反而成了一個特徵,所以,開啟80連線埠還是需要的。
@美博園 美博說的沒錯,80連線埠確實要打開,這樣偽裝網站才更完美!
很詳細的實用方法,文中說現在安裝caddy是替代方法,請問安全嗎?先謝了
@老張
1、v1會停止下載官方早有預告,帶有需要外掛程式的版本美博早有原版保存,現在的下載地址是美博創建的,所以,從版本到下載地址都是安全的。
2、只是因種種原因可能會不時的更換,請留意當下的安裝地址。
3、做代理,Caddyv1版本已經足夠且安全,所以目前沒有必要升級到v2,若以後必需升級v2,會再考量。
網上的一件腳本沒有一個能用的! naive官網又全是英文,一個字都看不懂,按照本站教程親測成功!
@就是愛爬牆
謝謝反饋
2020.7.21,經嘗試,caddy已經無法通過官方腳本安裝(下面第二行腳本會出錯,根據錯誤提示,應該是無法下載到caddy),有解決方案或替代(使用nginx)方案嗎?
curl https://getcaddy.com -o getcaddy
bash getcaddy personal http.forwardproxy,hook.service
@tx
剛去caddy下載頁看了,已經停止了v1的下載。
我們再想辦法用什麼來替代。請等待。
@tx
那是caddy 官方停止了v1的下載。
我們再想辦法用什麼來替代。請等待。
@tx
最近caddy停止了下載v1版,本教程已經修正安裝方法,可繼續使用正常安裝代理。
@美博園 好的,謝謝!
美博你好,發現naiveproxy已經更新版本,根據作者的說法,naive客戶端不再需要相應的naive server,可以整合到caddy v2里,且padding選項可以安全移除,美博這段時間是否有時間研究一下新版本,再基於新版naive更新下教程
@薛定諤
好的,再去詳細看看官方說明,謝謝基恩、薛定諤提醒。
@薛定諤
本教程naive方法能夠與最新版naive相容,使用上沒有問題。
儘管新版不再需要padding參數,但還有網友在使用舊版,保留此參數
新版並非一定要v2,其外掛程式http.forwardproxy,在我們教程中v1有安裝。
因最近caddy停止了下載v1版,本教程已經修正安裝方法,可繼續使用正常安裝代理。
你好,naive proxy舊版存在問題,padding參數實際上並不起作用。新版已經修復了,但是新版必須和caddy 2.x一起工作,本教程的很多內容都不再適用。能否更新以下本文的內容。非常感謝
@基恩
請問你在哪裡看到的這種說法?
在NaïveProxy官方沒有看到這個說法呀,還是我沒有找到地方?
@基恩
本教程naive方法能夠與最新版naive相容,使用上沒有問題。
儘管新版不再需要padding參數,但還有網友在使用舊版,保留此參數
新版並非一定要v2,其外掛程式http.forwardproxy,在我們教程中v1有安裝。
因最近caddy停止了下載v1版,本教程已經修正安裝方法,可繼續使用正常安裝代理。
按教程安裝的是caddy v1,現在caddy v2已正式發布,繼續使用v1會有影響嗎?是否需要更新v2?不知道博主有沒有時間去更新教程(使用caddy v2)
@小問號
繼續使用caddy v1沒有問題,除非官方完全禁止v1的功能。
caddy v2,實際上不是v1升級,可以說是一個新前端,代碼和命令改的面目全非,還很不穩定,其代碼向nginx靠近,等穩定適用了,才會考量升級v2,或改換別的前端。
Naiveproxy作者移除了padding,客戶端配置的時候還需要把padding設為true嗎,鏈接https://github.com/klzgrad/naiveproxy/commit/e8e4f772a348b4a28dc21c617a1a90bf5a765daa
@精神小伙
從代碼看,作者是取消了以前的「強制」充填,並沒有取消充填"padding",那應該是在客戶端使用和不使用這個 "padding": true 都可以。美博建議還是使用。理論上講,加"padding": true更安全,但速度會慢一點。
看時間是3天前的修改,也請你幫忙測試一下,加或不加"padding": true的效果是否有明顯差異。最近美博沒有時間來測試這個,先謝謝了。
caddy和naive伺服器端都搭載成功,官方客戶端下載後json文件也配置好了,可是exe文件雙擊後dos窗口閃退,是什麼原因?
@Wang
如果其他步驟都沒有問題,仔細檢查「13-2、客戶端配置文件」,配置文件中的網域密碼是否正確,特別是其中的符號、間隔等。
@美博園 其實前幾天有裝過而且連接成功了的,今天下載了官方客戶端最新版本時沒注意看test only,要終端用戶不要使用,結果雙擊exe就閃退,刪除後下載老版本也一直這樣沒法解決,連另外一個NaiveGUI客戶端也出現問題載入URL時關閉退出,我覺得肯定是新版本客戶端因為僅為測試作用破壞了電腦的跟naive相關的某些設置,因為其它類型的exe文件打開沒問題,不知道該怎麼解決
@Wang
檢查了一下最新版本,沒有發現改變電腦的網路方面的設置。
你可以退回到v83.0.4103.61-1及以下版本,最新的二個版本都不要用。同時,把電腦、瀏覽器的緩存、垃圾等全部清除。再試試看。
@美博園 還是不行,如果客戶端config.json去掉padding,Caddyfile或者其它文件需要怎麼改動嗎?
@Wang
不要去掉"padding": true, 去掉就不安全了,這個是必須的,它添加長度充填來混淆流量。
推測還是配置文件哪個地方有誤造成的,特別是那些符號,請再仔細檢查。
@美博園 我在vps查看caddy和naive都運行正常
在cmd.exe運行naive.exe輸出"Error reading config.json: (1003) File doesn't exist." 但是在同一目錄里肯定有config.json這個文件,配置如下
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://wyw####:cnlaLvvY#####@na####.##",
"padding": true,
"log": ""
}
關鍵是第一次配置好,下載的大概是v83.0.4103.61-2能運行正常,就是誤下載v83.0.4103.61-3後就一直這個問題
在別的電腦上下載v83.0.4103.61-2 naive.exe能正常打開
@Wang
應該是一個小地方出錯了,在哪裡呢?
你貼出來的客戶端配置文件的格式沒有問題。
1)再按照「8-1、加入Caddy配置文件」
輸入:nano /etc/caddy/Caddyfile
把這個配置文件調出來看看,不要修改,只是查看,或右鍵-全選-複製出來,看看裡面的密碼、網域等等自己的參數,是否與客戶端的配置完全一樣。
2)另外,為什麼要在cmd.exe運行naive.exe呢?是要查看問題所在?直接雙擊就可以運行;
3)你用的哪一款文本編輯器?建議用EmEditor、或Notepad++這些可編輯代碼的,不要用系統自帶的記事本,它可能會改變客戶端配置文件config.json的格式。
比如:客戶端重新下載新的,就是你以前可運行的版本,然後,用EmEditor打開軟體包裡面的config.json,將自己的密碼、網域等等填寫進去,另存為時,選擇【編碼】「UTF-8 無簽名」,然後,雙擊naive.exe運行看看。
@美博園 終於亂折騰弄好exe問題,密碼裡面不能有特殊字元,去掉#可以正常打開naive.exe。
但是不能上網,伺服器端顯示:
caddy.service - Caddy HTTP/2 web server
Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-16 08:25:42 UTC; 2 days ago
Docs: https://caddyserver.com/docs
Main PID: 1113 (caddy)
Tasks: 8 (limit: 4915)
CGroup: /system.slice/caddy.service
└─1113 /usr/local/bin/caddy -log stdout -log-timestamps=false -agree=true -conf=/etc/caddy/Caddyfile -ro
ot=/var/tmp
Jun 19 06:21:25 naivedebian caddy[1113]: [ERROR 0 ] Invalid credentials
Jun 19 06:21:25 naivedebian caddy[1113]: 125.86.104.86 - - [19/Jun/2020:06:21:25 +0000] "CONNECT / HTTP/2.0" 421 61
Jun 19 06:21:33 naivedebian caddy[1113]: [ERROR 0 ] Invalid credentials
Jun 19 06:21:33 naivedebian caddy[1113]: 125.86.104.86 - - [19/Jun/2020:06:21:33 +0000] "CONNECT / HTTP/2.0" 421 78
Jun 19 06:21:33 naivedebian caddy[1113]: [ERROR 0 ] Invalid credentials
Jun 19 06:21:33 naivedebian caddy[1113]: 125.86.104.86 - - [19/Jun/2020:06:21:33 +0000] "CONNECT / HTTP/2.0" 421 78
Jun 19 06:25:42 naivedebian caddy[1113]: [INFO][cache:0xc00008e960] Scanning for stale OCSP staples
Jun 19 06:25:42 naivedebian caddy[1113]: [INFO][cache:0xc00008e960] Done checking OCSP staples
Jun 19 06:34:04 naivedebian caddy[1113]: http: TLS handshake error from 45.136.108.64:348: tls: first record does n
ot look like a TLS handshake
Jun 19 06:42:21 naivedebian caddy[1113]: 125.86.104.86 - - [19/Jun/2020:06:42:21 +0000] "GET /favicon.ico HTTP/2.0"
404 14
客戶端顯示:
[0619/142124.498:INFO:naive_connection.cc(239)] Connection 161 to cloud.google.com:443
[0619/142124.536:INFO:naive_proxy.cc(176)] Connection 161 closed: OK
[0619/142124.538:INFO:naive_connection.cc(239)] Connection 162 to cloud.google.com:443
[0619/142124.574:INFO:naive_proxy.cc(176)] Connection 162 closed: OK
[0619/142124.862:INFO:naive_connection.cc(239)] Connection 163 to fanqiangdang.com:443
[0619/142124.902:INFO:naive_proxy.cc(176)] Connection 163 closed: OK
[0619/142124.904:INFO:naive_connection.cc(239)] Connection 164 to fanqiangdang.com:443
[0619/142124.939:INFO:naive_proxy.cc(176)] Connection 164 closed: OK
[0619/142126.961:INFO:naive_connection.cc(239)] Connection 165 to cloud.google.com:443
[0619/142127.000:INFO:naive_proxy.cc(176)] Connection 165 closed: OK
[0619/142127.003:INFO:naive_connection.cc(239)] Connection 166 to cloud.google.com:443
[0619/142127.040:INFO:naive_proxy.cc(176)] Connection 166 closed: OK
網域網頁能打開,但是顯示不安全,沒有小鎖。
是什麼原因?
@Wang
教程中的自動產生的密碼,只是16位數字+小寫字母組合,你的密碼中有特別符號#,在代碼中#是註解,這個當然出問題。
為免類似問題出現,已經在教程中做了補充說明。
建議:重新解析一個二級網域,重新安裝系統(ip可用,可保留),重新按照教程一步一步安裝。
您好:
請問怎麼限定naive使用人數上限?
@frgs
抱歉,這個沒有研究過,請網友分享這方面的經驗
caddy.service: Failed at step USER spawning /usr/bin/caddy: No such process
在啟動caddy時一直出錯.網上搜尋答案不一
@fedoran
This article will be updated as soon as possible.
Please refer to: V2ray,Trojan,NaiveProxy 一鍵安裝工具(windows版)(一鍵科學上網) - 美博園
https://allinfa.com/v2ray-trojan-naiveproxy-one-click-installation-windows.html
前幾天,安裝的naiveproxy 是在vps原有caddy + v2ray 的基礎上安裝的,其中v2ray可以通過cloudflare CDN ,但是 naiveproxy 沒有成功通過CDN 。
怪不得我折騰半天,實際上caddy+naiveproxy早就正常工作了。是因為客戶端的問題。原來,win系統自帶的代理不支持socks5 。包括chome瀏覽器的一個代理外掛程式,SwitchyOmega ,我按照一個教程裡面設置,也沒有成功,估計,都是因為要注意naiveproxy是socks5代理吧。
今天,使用 https://arcdetri.github.io/naiveproxy-debian-10-windows.html 這個教程裡面的firefox瀏覽器的設置,立刻連通了,速度很快。
@小狸貓
辛苦了,成功了就好,以後就方便了
測試時,SwitchyOmega這個擴展是有效的。
@美博園 是的。SwitchyOmega有效。第一次使用它的時候,因為沒有注意到naiveproxy是socks5代理伺服器,所以選項勾的不對,現在,我重新使用SwitchyOmega + naiveproxy ,可以方便靈活使用,黑名單走代理。
@美博園 使用win版v2rayN 裡面可以添加socks5伺服器,比SwitchyOmega好。能設置全局、繞過區域網路和大陸ip、根據pac等。
@小狸貓
謝謝反饋,好的體驗我們會增加到教程里。
@美博園
1、體驗了一天,不錯。在chome瀏覽器使用SwitchyOmega外掛程式較方便。我把win客戶端連線埠改了個非1080的10080,免得和win系統重合。然後把127.0.0.1,10080. 按照socks5填入外掛程式SwitchyOmega,結合gfwlist使用。
2、各平台客戶端亟待開發。現在只在win里使用了。
客戶端dos窗口一直這樣:
[0419/210144.680:INFO:naive_proxy.cc(164)] Connection 32 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210146.391:INFO:naive_proxy.cc(164)] Connection 33 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210146.393:INFO:naive_proxy.cc(164)] Connection 35 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210146.393:INFO:naive_proxy.cc(164)] Connection 34 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210146.400:INFO:naive_proxy.cc(164)] Connection 36 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210146.402:INFO:naive_proxy.cc(164)] Connection 37 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210146.406:INFO:naive_proxy.cc(164)] Connection 38 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210151.495:INFO:naive_proxy.cc(164)] Connection 39 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210151.497:INFO:naive_proxy.cc(164)] Connection 41 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210151.498:INFO:naive_proxy.cc(164)] Connection 42 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210151.499:INFO:naive_proxy.cc(164)] Connection 43 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210151.500:INFO:naive_proxy.cc(164)] Connection 40 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210151.506:INFO:naive_proxy.cc(164)] Connection 44 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.559:INFO:naive_proxy.cc(164)] Connection 45 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.563:INFO:naive_proxy.cc(164)] Connection 46 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.564:INFO:naive_proxy.cc(164)] Connection 47 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.565:INFO:naive_proxy.cc(164)] Connection 48 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.567:INFO:naive_proxy.cc(164)] Connection 49 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.572:INFO:naive_proxy.cc(164)] Connection 50 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.574:INFO:naive_proxy.cc(164)] Connection 51 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.972:INFO:naive_proxy.cc(164)] Connection 52 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210221.974:INFO:naive_proxy.cc(164)] Connection 53 closed: ERR_SOCKS_CONNECTION_FAILED
[0419/210222.189:INFO:naive_proxy.cc(164)] Connection 54 closed: ERR_SOCKS_CONNECTION_FAILED
@小狸貓
這個提示,就是socks代理設置問題,以前有網友也遇到過,有過回答
最後還是失敗了,客戶端dos界面顯示連接到naive的錯誤,看來是naive沒有正常工作。可是執行命令,明明顯示正常:
root@localhost:~# systemctl status naive
顯示:
● naive.service - NaiveProxy Server Service
Loaded: loaded (/etc/systemd/system/naive.service; enabled; vendor preset: en
Active: active (running) since Sun 2020-04-19 08:30:16 EDT; 5min ago
Main PID: 1219 (naive)
Tasks: 3 (limit: 564)
Memory: 1.0M
CGroup: /system.slice/naive.service
└─1219 /usr/local/bin/naive /etc/naive/config.json
Apr 19 08:30:16 localhost.localdomain systemd[1]: Started NaiveProxy Server Serv
# vps的8080外網連線埠掃描是關閉的。
內部似乎在監聽連線埠,因為
root@localhost:~# netstat -aptn |grep -i 8080
顯示
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 1219/naive
=============
找不到原因,暫時放棄了。
安裝http.forwardproxy這個外掛程式的地址有效嗎?反正使用您文章中的地址沒有成功更新caddy 只好搜尋了網上有沒有其他的,找到這個。才成功更新了這個外掛程式。
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.forwardproxy
可以成功
哦 明白了。
caddy使用原來安裝的。 沒有安裝 forwardproxy 外掛程式
2個問題:
1、naive正常運行了。但是掃描vps的8080連線埠,是關閉的。默認是僅僅對127.0.0.1開放8080連線埠?
2、向caddyfile中寫入您的文章中下面這段代碼 修改成了,自己的網域、網頁目錄、tls目錄、隨機密碼、都沒有成功啟動caddy 。似乎按照caddy格式,網域後面 應該使用一對 花括弧 { } ,加上去了,仍然沒有成功。不知道原因在哪裡?
nai.vaibwg.ml {
gzip
root /nai/www/index.html
tls /bwg.crt /bwg.key
forwardproxy {
basicauth admin zmddh6d2uz10ckv0
hide_ip
hide_via
probe_resistance
upstream https://127.0.0.1:8080
}
}
卡在這一步了
root@naive:~# cp ~/Caddyfile /etc/caddy/
cp: cannot stat '/root/Caddyfile': No such file or directory
已創建目錄
touch /etc/caddy/Caddyfile
怎麼解決?
@chen
不用管它,繼續往下,即使出錯也不影響其它步驟。是修改教程時的疏忽。謝謝反饋。
以前是用 nano ~/Caddyfile 來編輯這個文件,後來已經創建指定路徑和目錄,這個命令可以不用了。已經修改了教程。
請檢查下面這個網址是否失效?
wget https://raw.githubusercontent.com/caddyserver/caddy/master/dist/init/linux-systemd/caddy.service
@513
正在檢查,請耐心等待,謝謝
@513
經查:是其官方近期改變了源文件位置,已經在文中修正了新的路徑。
不過,caddy這個玩笑開大了,全網使用caddy.service的基本上全部要修正。
謝謝。
wget https://raw.githubusercontent.com/caddyserver/caddy/master/dist/init/linux-systemd/caddy.service 網址是否失效?
@vdfgf
原因未知,待查,謝謝提醒
@vdfgf
經查:是其官方近期改變了源文件位置,已經在文中修正了新的路徑。
不過caddy這個玩笑開大了,全網使用caddy.service的基本上全部要修正。
謝謝。
能搞個一鍵安裝腳本就好了
#將您的Caddy配置文件複製到正確的目錄中:
輸入:
?# cp ~/Caddyfile /etc/caddy/
---------------------------------
以上不理解哦,請問打「?」的地方目錄在哪?
@mr
前面有一步有創建該目錄
用幾小時就要重啟naive服務才能 正常使用是什麼原因
少個xz解壓文件步驟
@xssa
你沒仔細看嗎?
@美博園 你只安裝解壓工具沒解壓吧 xz xf
之後還要賦予文件許可權
@xssa
謝謝指正,已經修改。
建議推出一鍵腳本,方便小白使用,謝謝!
剛開始在想為什麼要用basic auth呢,後來轉念一想,如果平常直接訪問打開的是網站頁面,應該是沒什麼問題的,但是如果有人故意用basic auth去測試,會不會有暴露的可能?還沒用,所以具體的也不了解
@boin
用之後有什麼更好的辦法,歡迎一起來完善。
這幾個自建,有一個基本要求就是「不要公開」,自己的網域和ip不是公開的,匯入茫茫網流之中才是安全的。以前即使是不公開因為翻牆軟體的種種特稱也可能被GFW探測,現在的方法進步在於盡量消除了被探測的可能,不是偽裝而是實實在在的網站,真正的伺服器被隱藏。
但,這個網站也不要公開,這就是美博考量文中不公布一個網站供大家下載的一個原因,
如果,ip和網域公開了,那GFW針對個別動手就是易如反掌的。
請教這一步執行有問題,怎麼辦?
root@naive:~# cp ~/Caddyfile /etc/caddy/
cp: cannot stat '/root/Caddyfile': No such file or directory
@li
前面這一步是不是漏掉了,創建目錄
touch /etc/caddy/Caddyfile