全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 10068|回复: 47

5分钟部署一个NaiveProxy协议,安全又方便!-ajeef火麒麟

  [复制链接]
发表于 2023-3-18 17:11:15 | 显示全部楼层 |阅读模式
本帖最后由 ajeef 于 2023-4-1 16:57 编辑

经过几次某会,某事,封的情况来看,影响最小的还是这个协议,不能说没有,但是从自己使用情况来看,还是挺稳定的,毕竟从特征来看,确实和真实的一样了,用别人的镜像注意挖矿程序,教程内的镜像,目前版本没有挖矿(如果作者更新,记得再看一遍),hub.docker.com官网上下载量大的几个镜像版本都有挖矿ksswap这种进程,所以我删选掉了。

00:以下部署成功环境由Ubuntu22.04 LTS Server+root管理员用户权限测试通过ebian家族系的应该都通用,一键安装好docker:curl -sSL https://get.daocloud.io/docker | sh

01:下载镜像:docker pull ireina/naiveproxy

02: 运行镜像的容器前,提前创建目录:mkdir -p /etc/naive /etc/naive/html /var/log/caddy

03:  运行镜像的容器前,提前创建和修改Caddyfile文件 Web服务器的配置文件如下(任意文本编辑器创建例如:vim /etc/naive/Caddyfile,按Insert键后,将下面命令复制,粘贴,然后按ESC,按:号,输入wq!回车保存,就会在/etc/naive目录下多一个Caddyfile文件,别直接复制,注释的地方还是要自己改的):
  1. {
  2.   admin off
  3.   log {
  4.       output file /var/log/caddy/access.log
  5.       level INFO
  6.   }
  7.   servers :443 {
  8.       protocols h1 h2 h3
  9.   }
  10. }

  11. :80 {
  12.   redir https://{host}{uri} permanent
  13. }

  14. :443, hostloc.com  #改成你的域名例如:blog.hostloc.com或者直接根域名hostloc.com
  15. tls ajeef@hostloc.com  #改成你的邮箱自动申请证书时会用到
  16. route {
  17.   forward_proxy {
  18.       basic_auth ajeef ajeefpassword  #改成你的用户名和密码,注意用户名和密码之间有一个空格
  19.       hide_ip
  20.       hide_via
  21.       probe_resistance  #神秘域,建议不改,留空白
  22.   }
  23.   file_server {
  24.       root /var/www/html #你未来静态网页的存放地址,不用改,只是告诉你这个位置
  25.   }
  26. }
复制代码


04:先更改缓存大小:sysctl -w net.core.rmem_max=2500000【直接复制粘贴shell回车】  再使用Caddyfile的文件来启动一个容器命令如下(因为使用host的网络模式所以VPS内有IPV6也一并支持):
docker run --network host --name naiveproxy -v /etc/naive:/root/naive -v /etc/naive/html:/var/www/html -v /var/log/caddy:/var/log/caddy/ --restart=always -d ireina/naiveproxy   【直接复制粘贴shell回车】

【正常docker容器日志里会是这样的输出:INF ts=1679293266.2545154 msg=using provided configuration config_file=Caddyfile config_adapter=
WRN ts=1679293266.256392 msg=Caddyfile input is not formatted; run the 'caddy fmt' command to fix inconsistencies adapter=caddyfile file=Caddyfile line=2
INF ts=1679293266.2571409 msg=redirected default logger from=stderr to=/var/log/caddy/access.log
说我没格式化配置文件Caddyfile,不影响运行,为处NV座准备的,后面的提示就是将日志重定向到/var/log/caddy/access.log,这样就成功了】



05:一般容器启动了,会有提示一串哈希值例如:b4e0e3293394b09ccf4d0b752c747a4f1d3f0feb1549f0beb7e6ae88fdf09ee,除了用docker ps -a来查看刚才启动的容器,因为是host网络模式所以VPS系统本身的80和443肯定是被这个容器占用的,所以也可以用apt install net-tools -y先安装组件,再用netstat -tlnnetstat -tln | grep 80netstat -tln | grep 443  来查看这2个端口是否被占用,State状态栏里80和443显示LISTEN就是已经占用并监听了,容器也就是成功了。

06:用一台VPS只运行一个科学上网协议,太浪费了,因为Caddy本身就是一个Web服务器,naive协议也只是修改了官方文件的一个模块使其更像是Web服务器本身的内核模块发出的协议包,所以它并不影响Web本身的功能,部署动态网站可能VPS配置低的不行,静态网站的还是搓搓有余的,毕竟Caddy和Nginx一样都是Go写的,在静态模式下速度是一致的,大差不差,所以像hexo和hugo等这些程序编译出来的html css静态资源可以直接放在/var/www/html里运行【我实验一下下载个:wget https://github.com/h5bp/html5-boilerplate/releases/download/v8.0.0-RC2/html5-boilerplate_v8.0.0-RC2.zipapt-get install unzip -yunzip html5-boilerplate_v8.0.0-RC2.zip -d /etc/naive/html刷新一下域名就出来了,不需要重启容器,运行参数里包含了这个映射目录】,还能起到伪装的作用,如果要同步静态资源自己git或者ftp都行。

07:当然还有一种是用naiveproxy本身的config.json配置文件来启动容器的方法,但是考虑到naiveproxy未来可能协议要升级,会更改配置里的信息,不一定向下兼容(职业病有这顾虑),所以这里就不例举了,直接用Caddy的官方配置方法更方便。
08:不建议用H3,H1.H2都可以,我自己用H2,H3其实走的是UDP不是TCP,虽然广播形式更快,没握手,但是国内对UDP的限制是死的,用久了还是会QOS的,所以这里不再提这种使用方式了。


客户端,我就测试了
路由器:openwrt-passwall  ssplus; 软件库里安装luci-app-naiveproxy,你passwall 和 ssplus就都有这个协议可以选择了
Windows:V2rayN;
Android:SagerNet+SagerNet-naiveproxy插件  Google play直接搜索这2个名字,都有。

naive协议的客户端是最简单的,只需要填写:域名,你上面配置文件自己改的用户名和密码,端口只填:443  完毕。

家境贫寒:没有MacOS和Iphone,但是MacOS应该支持v2ray和Nekoray的,IOS也应该支持Shadowrocket



-----------------------------------------------只想科学上网的看上面8条即可,下面的可以不看。---------------------------------------

深入一点:如果同一个域名,例如:hostloc.com 已经用来naive的科学上网了,那么我建静态站也需要用到这个域名,它既要是科学上网,我打开这个hostloc.com这个网址也能是一个网站,当然我并不一定用来放静态页面,我可能是别的程序,只不过我需要已经自动申请下来的证书,除了上面的步骤,我还需要用到证书,这就是Caddy的优势了,官方自带了acme,默认申请的还是zerossl的3个月SSL证书(自动续订)

其实只需要再自定义新建一个目录+docker运行时加一个路径就行了
01:mkdir -p /etc/naive/acme

【这样加的路径变成这样,-v /etc/naive/acme:/root/.local/share/caddy/certificates/acme.zerossl.com-v2-dv90/hostloc.com(这个hostloc.com改成你自己的,如果你是www.hostloc.com就改成www.hostloc.com,如果是你hostloc.com就改成hostloc.com,如果是你blog.hostloc.com就改成blog.hostloc.com以此类推。)】

02:完整命令:docker run --network host --name naiveproxy -v /etc/naive:/root/naive -v /etc/naive/html:/var/www/html -v /var/log/caddy:/var/log/caddy/ -v /etc/naive/acme:/root/.local/share/caddy/certificates/acme.zerossl.com-v2-dv90/你的域名 --restart=always -d ireina/naiveproxy  【注意:你上面已经运行过一个容器了,再运行这个会报错,docker ps -a 停止+删除旧的容器,再运行这个,如果第一次,你不用上面04:的命令先自动申请好证书,直接用这个完整命令会报错,提示证书目录空,所以04:这条还是要先运行一下,再运行这个。】

03:这样docker运行起来后,每次自动更新的证书都放到了/etc/naive/acme这个目录,今后你任意需要用到证书的程序指定这个目录就行了,更新由docker内的Caddy自动完成。运行容器过几分钟后,你可以ls /etc/naive/acme看看,是不是所有证书和密钥都在了,完毕
发表于 2023-3-20 15:15:11 | 显示全部楼层
乌龟,V2 wts 跑流量就被干掉,现在只能套CF了,,,
发表于 2023-3-18 17:14:47 | 显示全部楼层
openclash不支持,没办法
发表于 2023-3-18 17:16:08 | 显示全部楼层
技术贴支持大佬 先mark





紫薯布丁
  
发表于 2023-3-18 17:17:51 | 显示全部楼层
麻烦,我用面板直接一键
https://github.com/trojanpanel/install-script

点评

docker stop 和 docker rm 还有docker rmi 不是更方便?  发表于 2023-3-18 17:20
 楼主| 发表于 2023-3-18 17:18:14 | 显示全部楼层
tcp6       0      0 :::80                   :::*                    LISTEN

注意:如果端口被监听的是tcp6不是tcp,那么说明系统优先的是ipv6而不是ipv4,不影响使用会自动调度的


发表于 2023-3-18 18:59:33 | 显示全部楼层
clash不行。。。劝退很多人
发表于 2023-3-18 19:07:53 | 显示全部楼层
技术贴,感谢分享
发表于 2023-3-18 19:14:56 来自手机 | 显示全部楼层
支持开源脚本,不过这样下去可能要泛滥
发表于 2023-3-18 19:53:31 | 显示全部楼层
只用clash支持的协议
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-21 07:00 , Processed in 0.085756 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表