自建最强科学上网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

编辑器打开后会有一个#绿色光标,这是可输入内容的位置,都是象这样子:
自建最强科学上网4:NaiveProxy + Caddy

请注意一下使用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已经启动:
自建最强科学上网4:NaiveProxy + 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
你可以在官网这个文件上点右键复制其下载链接,也可以直接将版本号复制出来替换下面命令中的版本号,即:

自建最强科学上网4:NaiveProxy + Caddy

特别说明:我们这里举例的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已经成功启动

自建最强科学上网4:NaiveProxy + Caddy

# 若不能启动,请查看错误日志

(已经正常启动不需此输入)
输入:

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

自建最强科学上网4:NaiveProxy + Caddy

因是较新的工具,图形界面客户端还没有,官方发布的这个客户端软件,只有dos黑框,里面可显示数据连接状况。

下载后解压,得到文件夹,

自建最强科学上网4:NaiveProxy + Caddy

其中文件包括:
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 启动状态。

启动后象这样:

自建最强科学上网4:NaiveProxy + Caddy

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

基本代理设置方式,如图所示:

自建最强科学上网4:NaiveProxy + Caddy

请注意:

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自建代理遇到的一些问题及解决 - 美博园
原文链接:https://allinfa.com/naiveproxy-caddy.html
原文标题:自建最强科学上网4:NaiveProxy + Caddy - 美博园
美博园文章均为“原创 - 首发”,请尊重辛劳撰写,转载请以上面完整链接注明来源!
软件版权归原作者!个别转载文,本站会注明为转载。

网 友 留 言

80条评论 in “自建最强科学上网4:NaiveProxy + Caddy”
  1. ttAckeom

    楼主,之前按照您的指导完成搭建后成功访问,最近1个多月没用过节点,今天突然使用naive节点,发现访问不上了,服务检查都是正常的。奇怪的是,使用端口检查,443和80,22都是正常的,不挂梯子ping地址和域名都是ok可以通,但是直接ssh vps就连接不上。挂上梯子后,可以正常连接vps,naive也可以测试通。
    有点奇怪,端口扫描都不行了么?

  2. liu

    ● 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证书服务器商呢?

  3. kawasaki

    想问一下,因为好像最近443端口被ban了。有无办法指定其他端口代理,被封端口的应急措施(端口被封是之前的xtls没藏好)

  4. Thomas

    博主你好,我按你的方式搭建,浏览器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的。

  5. me

    感谢教程,这几天的断流风波使我注意到了naiveproxy。博主的教程太棒了,一次搭建就成功了。

    自己成功在pc端使用的方法是,命令行运行naive.exe后,使用v2rayN开启一个socks服务器,只写地址127.0.0.1和端口1080,运行此服务器后就成功了。

    自己在安卓手机端使用的方法是,下载安装sagernet和naive-plugin,并给naive-plugin设置了必要的自启动和不限制省电模式,在sagernet中手动创建naive协议的配置,服务器输入域名,远程端口输入443(不知道为何只能是443端口,8080端口连不上),用户名输入用户名,密码输入密码,其他不用改,连接节点就可以成功联网了。

  6. tttzzz

    站长大大,电脑是好用了,可找了一圈也没找到好用的手机客户端。
    能给点帮助吗?谢谢啦。

  7. tttzzz

    非常感谢,一次成功了。
    最近v2ray不能用了,被封了两次ip,换ip还要花钱。
    听说这种现在还不会被墙。

  8. 287300

    naiveproxy有了新版本,能不能教一下怎么升级。

  9. 哥哥我还要

    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端口还是需要的。

  10. 老张

    很详细的实用方法,文中说现在安装caddy是替代方法,请问安全吗?先谢了

    • 美博园

      @老张
      1、v1会停止下载官方早有预告,带有需要插件的版本美博早有原版保存,现在的下载地址是美博创建的,所以,从版本到下载地址都是安全的。
      2、只是因种种原因可能会不时的更换,请留意当下的安装地址。
      3、做代理,Caddyv1版本已经足够且安全,所以目前没有必要升级到v2,若以后必需升级v2,会再考虑。

  11. 就是爱爬墙

    网上的一件脚本没有一个能用的! naive官网又全是英文,一个字都看不懂,按照本站教程亲测成功!

  12. tx

    2020.7.21,经尝试,caddy已经无法通过官方脚本安装(下面第二行脚本会出错,根据错误提示,应该是无法下载到caddy),有解决方案或替代(使用nginx)方案吗?
    curl https://getcaddy.com -o getcaddy
    bash getcaddy personal http.forwardproxy,hook.service

  13. 薛定谔

    美博你好,发现naiveproxy已经更新版本,根据作者的说法,naive客户端不再需要相应的naive server,可以整合到caddy v2里,且padding选项可以安全移除,美博这段时间是否有时间研究一下新版本,再基于新版naive更新下教程

    • 美博园

      @薛定谔
      好的,再去详细看看官方说明,谢谢基恩、薛定谔提醒。

    • 美博园

      @薛定谔
      本教程naive方法能够与最新版naive相容,使用上没有问题。
      尽管新版不再需要padding参数,但还有网友在使用旧版,保留此参数
      新版并非一定要v2,其插件http.forwardproxy,在我们教程中v1有安装。
      因最近caddy停止了下载v1版,本教程已经修正安装方法,可继续使用正常安装代理。

  14. 基恩

    你好,naive proxy旧版存在问题,padding参数实际上并不起作用。新版已经修复了,但是新版必须和caddy 2.x一起工作,本教程的很多内容都不再适用。能否更新以下本文的内容。非常感谢

    • 美博园

      @基恩
      请问你在哪里看到的这种说法?
      在NaïveProxy官方没有看到这个说法呀,还是我没有找到地方?

    • 美博园

      @基恩
      本教程naive方法能够与最新版naive相容,使用上没有问题。
      尽管新版不再需要padding参数,但还有网友在使用旧版,保留此参数
      新版并非一定要v2,其插件http.forwardproxy,在我们教程中v1有安装。
      因最近caddy停止了下载v1版,本教程已经修正安装方法,可继续使用正常安装代理。

  15. 小问号

    按教程安装的是caddy v1,现在caddy v2已正式发布,继续使用v1会有影响吗?是否需要更新v2?不知道博主有没有时间去更新教程(使用caddy v2)

    • 美博园

      @小问号
      继续使用caddy v1没有问题,除非官方完全禁止v1的功能。
      caddy v2,实际上不是v1升级,可以说是一个新前端,代码和命令改的面目全非,还很不稳定,其代码向nginx靠近,等稳定适用了,才会考虑升级v2,或改换别的前端。

  16. 精神小伙

    Naiveproxy作者移除了padding,客户端配置的时候还需要把padding设为true吗,链接https://github.com/klzgrad/naiveproxy/commit/e8e4f772a348b4a28dc21c617a1a90bf5a765daa

    • 美博园

      @精神小伙
      从代码看,作者是取消了以前的“强制”充填,并没有取消充填"padding",那应该是在客户端使用和不使用这个 "padding": true 都可以。美博建议还是使用。理论上讲,加"padding": true更安全,但速度会慢一点。
      看时间是3天前的修改,也请你帮忙测试一下,加或不加"padding": true的效果是否有明显差异。最近美博没有时间来测试这个,先谢谢了。

  17. Wang

    caddy和naive服务器端都搭载成功,官方客户端下载后json文件也配置好了,可是exe文件双击后dos窗口闪退,是什么原因?

    • 美博园

      @Wang
      如果其他步骤都没有问题,仔细检查“13-2、客户端配置文件”,配置文件中的域名密码是否正确,特别是其中的符号、间隔等。

      • Wang

        @美博园 其实前几天有装过而且连接成功了的,今天下载了官方客户端最新版本时没注意看test only,要终端用户不要使用,结果双击exe就闪退,删除后下载老版本也一直这样没法解决,连另外一个NaiveGUI客户端也出现问题载入URL时关闭退出,我觉得肯定是新版本客户端因为仅为测试作用破坏了电脑的跟naive相关的某些设置,因为其它类型的exe文件打开没问题,不知道该怎么解决

        • 美博园

          @Wang
          檢查了一下最新版本,没有发现改变电脑的网络方面的设置。
          你可以退回到v83.0.4103.61-1及以下版本,最新的二个版本都不要用。同时,把电脑、浏览器的缓存、垃圾等全部清除。再试试看。

          • Wang

            @美博园 还是不行,如果客户端config.json去掉padding,Caddyfile或者其它文件需要怎么改动吗?

            • 美博园

              @Wang
              不要去掉"padding": true, 去掉就不安全了,这个是必须的,它添加长度充填来混淆流量。
              推测还是配置文件哪个地方有误造成的,特别是那些符号,请再仔细检查。

              • Wang

                @美博园 我在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运行看看。

                  • Wang

                    @美博园 终于乱折腾弄好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可用,可保留),重新按照教程一步一步安装。

  18. frgs

    您好:
    请问怎么限定naive使用人数上限?

  19. fedoran

    caddy.service: Failed at step USER spawning /usr/bin/caddy: No such process
    在启动caddy时一直出错.网上搜索答案不一

  20. 小狸猫

    前几天,安装的naiveproxy 是在vps原有caddy + v2ray 的基础上安装的,其中v2ray可以通过cloudflare CDN ,但是 naiveproxy 没有成功通过CDN 。

  21. 小狸猫

    怪不得我折腾半天,实际上caddy+naiveproxy早就正常工作了。是因为客户端的问题。原来,win系统自带的代理不支持socks5 。包括chome浏览器的一个代理插件,SwitchyOmega ,我按照一个教程里面设置,也没有成功,估计,都是因为要注意naiveproxy是socks5代理吧。
    今天,使用 https://arcdetri.github.io/naiveproxy-debian-10-windows.html 这个教程里面的firefox浏览器的设置,立刻连通了,速度很快。

    • 美博园

      @小狸猫
      辛苦了,成功了就好,以后就方便了
      测试时,SwitchyOmega这个扩展是有效的。

    • 小狸猫

      @美博园
      1、体验了一天,不错。在chome浏览器使用SwitchyOmega插件较方便。我把win客户端端口改了个非1080的10080,免得和win系统重合。然后把127.0.0.1,10080. 按照socks5填入插件SwitchyOmega,结合gfwlist使用。
      2、各平台客户端亟待开发。现在只在win里使用了。

  22. 小狸猫

    客户端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

  23. 小狸猫

    最后还是失败了,客户端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
    =============
    找不到原因,暂时放弃了。

  24. 小狸猫

    安装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
    可以成功

  25. 小狸猫

    哦 明白了。
    caddy使用原来安装的。 没有安装 forwardproxy 插件

  26. 小狸猫

    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
    }
    }

  27. chen

    卡在这一步了
    root@naive:~# cp ~/Caddyfile /etc/caddy/
    cp: cannot stat '/root/Caddyfile': No such file or directory
    已创建目录
    touch /etc/caddy/Caddyfile
    怎么解决?

    • 美博园

      @chen
      不用管它,继续往下,即使出错也不影响其它步骤。是修改教程时的疏忽。谢谢反馈。
      以前是用 nano ~/Caddyfile 来编辑这个文件,后来已经创建指定路径和目录,这个命令可以不用了。已经修改了教程。

  28. sadas

    能搞个一键安装脚本就好了

  29. mr

    #将您的Caddy配置文件复制到正确的目录中:
    输入:
    ?# cp ~/Caddyfile /etc/caddy/
    ---------------------------------
    以上不理解哦,请问打“?”的地方目录在哪?

  30. xssa

    用几小时就要重启naive服务才能 正常使用是什么原因

  31. xssa

    少个xz解压文件步骤

  32. lgi

    建议推出一键脚本,方便小白使用,谢谢!

  33. boin

    刚开始在想为什么要用basic auth呢,后来转念一想,如果平常直接访问打开的是网站页面,应该是没什么问题的,但是如果有人故意用basic auth去测试,会不会有暴露的可能?还没用,所以具体的也不了解

    • 美博园

      @boin
      用之后有什么更好的办法,欢迎一起来完善。
      这几个自建,有一个基本要求就是“不要公开”,自己的域名和ip不是公开的,汇入茫茫网流之中才是安全的。以前即使是不公开因为翻墙软件的种种特称也可能被GFW探测,现在的方法进步在于尽量消除了被探测的可能,不是伪装而是实实在在的网站,真正的服务器被隐藏。
      但,这个网站也不要公开,这就是美博考虑文中不公布一个网站供大家下载的一个原因,
      如果,ip和域名公开了,那GFW针对个别动手就是易如反掌的。

  34. li

    请教这一步执行有问题,怎么办?
    root@naive:~# cp ~/Caddyfile /etc/caddy/
    cp: cannot stat '/root/Caddyfile': No such file or directory

这里是你留言评论的地方


请留言


7 + 0 =
【您可以使用 Ctrl+Enter 快速发送】
Copyright © 2007 - 2024 , Design by 美博园. 版权所有. 若有版权问题请留言通知本站管理员. 【回到顶部】