主要用到的工具有:V2ray/AdGuard/Kcptun/Caddy,机器是套路云的4.5刀,网卡是内网IP的那种。AdGuard是可以在这种内网IP的机器上用的,特此说明一下。。
为啥要搞个这样的机器?主要是因为前段时间GFW像个沙雕一样疯狂屏蔽IP,我的两台套路云不幸躺枪,而后又因为香港散步那些批事情,导致近一个月来我都不能好好的看个片了。。这几天看样子是缓和了一点,所以重新去买了一台套路云,决定好好折腾一下。
所谓全能,这里指的是:V2ray起4个服务:
一个TCP协议的vmess
一个KCP协议的vmess
一个WebSocket+TLS+WEB协议的vmess
一个Shadowsocks协议
然后AdGuard负责DNS解析和去广告,Kcptun单独用来加速Shadowsocks协议,而Caddy这里只是当作配置WebSocket+TLS+WEB的一个工具。
这样做的话,几个明显的好处是:
如果机器IP被TCP阻断了(呸三下,佛祖保佑我的机器永不阻断!)可以换成KCP去用,无论是vmess的KCP还是Shadowsocks的KCP都不会受TCP阻断的影响。
其次KCP协议属于多倍发包,如果哪天线路比较爆炸也可以做到一个提速的效果。而WebSocket+TLS+WEB是为机器完全被墙后套CDN苟且偷生的准备(呸三下,佛祖保佑我的机器永不被封!)
反正用一句话来说就是:我全都要emmm
安装v2ray:
bash <(curl -L -s https://install.direct/go.sh)
安装adguard(配置的时候把webui端口监听在50005,防止和caddy的80端口冲突):
cd /opt wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.96-hotfix/AdGuardHome_linux_amd64.tar.gz tar -xzvf AdGuardHome_linux_amd64.tar.gz rm -rf AdGuardHome_linux_amd64.tar.gz cd AdGuardHome ./AdGuardHome -s install
安装kcptun:
mkdir -p /opt/kcptun && cd /opt/kcptun wget https://github.com/xtaci/kcptun/releases/download/v20190611/kcptun-linux-amd64-20190611.tar.gz tar -xzvf kcptun-linux-amd64-20190611.tar.gz
安装caddy:
curl https://getcaddy.com | bash -s personal
安装supervisor
apt -y install supervisor systemctl enable supervisor
清空v2ray默认的配置文件/生成一个UUID:
echo "" > /etc/v2ray/config.json cat /proc/sys/kernel/random/uuid
编辑v2ray的配置文件:
nano /etc/v2ray/config.json
这一套方案最关键的地方就是v2ray要怎么配,下面贴出我目前自用的:
{ "dns": { "servers": [ "AdGuard的DNS地址,一般就是服务器的公网IP" ] }, "inbounds": [ { "port": 50000, "protocol": "vmess", "settings": { "clients": [ { "id": "你的UUID", "alterId": 64 } ] } }, { "port": 50001, "protocol": "vmess", "settings": { "clients": [ { "id": "你的UUID", "alterId": 64 } ] }, "streamSettings": { "network":"kcp", "kcpSettings": { "mtu": 1350, "tti": 20, "uplinkCapacity": 30, "downlinkCapacity": 100, "congestion": false, "readBufferSize": 1, "writeBufferSize": 1, "header": { "type": "none" } } } }, { "port": 50002, "protocol": "vmess", "settings": { "clients": [ { "id": "你的UUID", "alterId": 64 } ] }, "streamSettings": { "network": "ws", "wsSettings": { "path": "/python3" } } }, { "port": 50003, "protocol": "shadowsocks", "settings": { "method": "chacha20-ietf-poly1305", "password": "你的SS连接密码", "network": "tcp,udp" } } ], "outbounds": [ { "protocol": "freedom", "settings": { "domainStrategy": "UseIP" } } ] }
上面这个配置你需要修改UUID为你自己生成的,DNSIP为你自己的服务器公网IP,然后再设置一个Shadowsocks密码。
另外这个配置文件分别要起4个端口:
50000(TCPVmess)/50001(KCPVmess)/50002(WebSocket+TLS+WEB)/50003(Shadowsocks)
如果开启了防火墙注意放行这些端口,尤其是套路云/GCP这种大厂,记得去他们的后台放行端口。
配置好了后,使用下面的命令检查你的配置是否完全正确:
/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json -test
如果OK那么重启V2ray的服务即可:
systemctl restart v2ray
TCPVmess/KCPVmess/Shadowsocks只用填好V2ray的配置文件就能用,但WebSocket+TLS+WEB还需要我们额外配置一下Caddy,这里我还是偷懒用的Caddy,如果用Nginx步骤会比现在繁琐很多,我自认为这一套配置已经算非常简单的了。
新建Caddy证书存放目录和配置文件存放目录,然后新建一个站点配置文件:
mkdir -p /etc/caddy && mkdir -p /etc/ssl/caddy nano /etc/caddy/Caddyfile
写入如下配置(域名和邮箱换成你自己的就行了):
v2.koko.cat { log stdout tls [email protected] proxy /python3 localhost:50002 { websocket header_upstream -Origin } }
这里直接用supervisor去守护caddy的进程,不用以往那种systemctl的方式了,因为我们还要配置kcptun,正好可以都用supervisor,省事:
nano /etc/supervisor/conf.d/caddy.conf
写入如下配置:
[program:caddy] priority=1 environment=CADDYPATH=/etc/ssl/caddy directory=/etc/caddy command=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile autorestart=true
重启supervisor:
systemctl restart supervisor
接下来再配置一下Kcptun套Shadowsocks,首先新建一个Kcptun的配置文件:
nano /opt/kcptun/server-config.json
写入如下配置:
{ "listen": ":50004", "target": "127.0.0.1:50003", "key": "你的kcp连接密码", "crypt": "salsa20", "mode": "fast2", "mtu": 1350, "sndwnd": 1024, "rcvwnd": 1024, "datashard": 70, "parityshard": 30, "dscp": 46, "nocomp": false, "acknodelay": false, "nodelay": 0, "interval": 40, "resend": 0, "nc": 0, "sockbuf": 4194304, "keepalive": 10 }
在上面这个配置文件中,Kcptun监听的端口是50004,加速的是50003端口(即V2ray内的Shadowsocks协议端口)。
再新建一个supervisor的配置文件:
nano /etc/supervisor/conf.d/kcptun.conf
写入如下配置:
[supervisord] nodaemon=false [program:kcptun] priority=1 directory=/opt/kcptun command=/opt/kcptun/server_linux_amd64 -c server-config.json autorestart=true
重启supervisor:
systemctl restart supervisor
至此,服务端就配置完成了,不过我们还可以稍微优化一下,即打开AdGuard的WEB界面,加几个去广告的规则:
EasyListChina
https://easylist-downloads.adblockplus.org/easylistchina.txt
EasyList
https://easylist.to/easylist/easylist.txt
以下是这套方案所需要用到的全部端口,如果后续客户端连不上,首先排查你的防火墙是否放行了这些端口:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::80 :::* LISTEN 6634/caddy tcp6 0 0 :::50000 :::* LISTEN 6595/v2ray tcp6 0 0 :::50002 :::* LISTEN 6595/v2ray tcp6 0 0 :::50003 :::* LISTEN 6595/v2ray tcp6 0 0 :::53 :::* LISTEN 6250/AdGuardHome tcp6 0 0 :::50005 :::* LISTEN 6250/AdGuardHome tcp6 0 0 :::443 :::* LISTEN 6634/caddy udp6 0 0 :::50001 :::* 6595/v2ray udp6 0 0 :::50003 :::* 6595/v2ray udp6 0 0 :::50004 :::* 6635/server_linux_a udp6 0 0 :::53 :::* 6250/AdGuardHome
现在说下客户端这边,我常用的设备是iOS和Windows,这里我就只说一下这两个平台怎么配置。
iOS上我推荐用kitsunebi,最开始我买了一个shadowrocket结果发现不支持vmess的kcp,我就退款买了kitsunebi,kitsunebi几乎支持所有的vmess类型。
Windows上我推荐v2rayN,用这个基本上你的客户端这块就不用去自己手动写配置文件了,在软件内填一下配置信息就能用。
最新评论
5211314
能不能教我 一点不会