自建最强科学上网4:NaiveProxy + Caddy
【真相网2019.12.30】NaiveProxy是比较新的代理项目,与trojan类似也采用HTTPS协议,但有其独到特点,NaiveProxy可减轻流量指纹识别(特征)、主动探测和数据包长度分析的GFW审查带来的风险,就是说更难被墙检测和封锁。而且,设置比v2ray、trojan还要简略一些,目前网上NaiveProxy+Caddy的构建详细教程极少,美博测试后发布此方法与网友分享。
NaïveProxy简介【美博根据原文翻译】
注:官方项目使用的是这个词 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)发布的几个目前最好的自建代理,可自行选择使用: 自建最强科学上网5+:V2ray + Caddy + Tls + HTTP/2 自建最强科学上网4:NaiveProxy + Caddy 自建最强科学上网3:trojan + Caddy 自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket 美博点评: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
继续安装直到完成。
Caddy是一个前端web服务器,因Caddy在默认情况下自动使用 HTTPS,可以很方便用来做一个代理的伪装网站、反向代理、SSL自动续期。
--- 补充说明 开始 ---
有网友提醒:在谷歌云(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 http://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": "http://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)?
问是否真的启用防火墙 enable firewall,并警告如果设定不当会断线。因我们已经启用 allow port 22 ,所以没有问题,
按下 y Enter(回车) 至此,Debian 系统 防火墙设置完成12-2、Ubuntu 系统 开启防火墙及端口设置
如果你使用的是 Ubuntu 系统,请按照下面的设置,不适用于Debian系统和Centos系统 因我们只是用于翻墙,需要打开这几个端口 port: 22, 80, 44322 / TCP(入站/出站):标准SSH端口 80 / TCP(入站/出站):标准HTTP端口 443 / TCP(入站/出站):标准HTTPS端口用下面的命令打开这几个 port
依次输入【每输入一行都要回车(按[Enter])】以下指令:
ufw allow 22ufw allow 80ufw allow 443再输入命令启用防火墙
ufw enable会提问:
root@vu:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
问是否真的启用防火墙 enable firewall,并警告如果设定不当会断线。因我们已经启用 allow port 22 ,所以没有问题,按下 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纯净版,都已经用另外的代理扩展,如 Little Proxy 或/和 Proxy SwitchyOmega设置有这个端口的v2ray、trojan、NaiveProxy代理,如果默默使用美博的浏览器,就不用另外设置了,请参考:
火狐浏览器_Firefox_68.8.0esr_美博纯净中文绿色版(20200513) Google Chrome浏览器_v81.0.4044.138_美博园纯净绿色版(20200513) 火狐浏览器_Firefox_68.0.1esr_美博园纯净中文绿色版(更新)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 系列文章参考 ===美博点评:V2Ray、trojan、NaiveProxy代理的异同及相关问题 - 美博园 自建最强科学上网5+:V2ray + Caddy + Tls + HTTP/2 自建最强科学上网4:NaiveProxy + Caddy 自建最强科学上网3:trojan + Caddy 自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket 自己搭建代理服务器: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 - 真相网
这里是你留言评论的地方