准备工作:
a、一台Linux服务器,甲骨文云的免费vps,Ubuntu系统
b、域名一个,并解析到vps的IP
c、NaiveProxy 官网:https://github.com/klzgrad/naiveproxy
注意:以下所有操作都以root权限执行
1、设置防火墙并开启BBR加速
#ufw关闭:
ufw diable
#iptables开放所有端口:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
#开启BBR加速
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
#更新软件源
apt update
apt upgrade
apt full-upgrade
2、安装GO:
apt install golang-go -y
3、安装NaiveProxy:
# 安装xcaddy
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
# 通过xcaddy构建带有naive插件的caddy,--with表示打包的插件
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive
# 将caddy移动到用户可执行目录
mv caddy /usr/bin/
# 设置允许监听1024以下端口
setcap cap_net_bind_service=+ep /usr/bin/caddy
4、配置NaiveProxy:
#创建caddy配置目录:
mkdir /etc/caddy
# 新建配置文件Caddyfile
touch /etc/caddy/Caddyfile
#按i键,输入下面内容,按Esc键,输入:wq保存退出:
# 下面的{}是全局配置,详细参数看官方文档
{
# HTTP处理链
order forward_proxy before file_server
}
# 下面是代理的信息,域名自行修改
:443, example.com {
# 设置tls自动签证的邮箱,自行修改
# 定义forward_proxy,也就是naive的配置
forward_proxy {
# 自定义用户名和密码,自行修改
basic_auth user pass
hide_ip
hide_via
probe_resistance
}
# 最终流量使用反向代理到某个网站,下面使用的是clourdreve的demo网址
reverse_proxy https://demo.cloudreve.org {
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
5、将 Caddy 作为守护进程运行:
#在/etc/systemd/system目录里创建caddy.service:
vim /etc/systemd/system/caddy.service
#按i键,输入下面内容,按Esc键,输入:wq保存退出:
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
#root用户
User=root
#root用户组
Group=root
#caddy运行的配置文件路径及配置文件名,路径:/etc/caddy 配置文件:Caddyfile
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
6、使用 systemd 启动 caddy 服务
systemctl daemon-reload
systemctl enable caddy
systemctl start caddy
7、官方客户端的配置说明:
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://user:[email protected]"
"log": ""
}
// listen:监听的地址和端口,一般不需要修改
// proxy:代理的地址,协议可以是https或者quic,使用quic服务端需要放行tls的udp端口;需要修改用户名密码以及域名;
// 若使用的是非443端口,域名后面需要增加服务端绑定的tls端口,如,domain.example:1443
常用的Caddy管理命令:
# 重新加载`daemon`配置文件(修改daemon需要)
systemctl daemon-reload
# 设置caddy自启动
systemctl enable caddy
# 启动caddy
systemctl start caddy
# 重新加载`caddy`配置
systemctl reload caddy
# 重启caddy
systemctl restart caddy
# 停止caddy
systemctl stop caddy
# 校验配置文件是否正确
caddy validate Caddyfile #Caddyfile为配置文件名
当运行结束后显示:Valid configuration 表示配置没有问题。
# 格式化配置文件,--overwrite 格式化后覆盖原文件
caddy fmt --overwrite Caddyfile #Caddyfile为配置文件名
# 将Caddyfile配置适配输出为json格式,--pretty 为美化使出
caddy adapt --pretty
# 输出当前caddy包含的模块
caddy list-modules
# 查看当前caddy的版本
caddy version