一个全能的梯子鸡搭建过程

主要用到的工具有:V2ray/AdGuard/Kcptun/Caddy,机器是套路云的4.5刀,网卡是内网IP的那种。AdGuard是可以在这种内网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 example@gmail.com
	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,用这个基本上你的客户端这块就不用去自己手动写配置文件了,在软件内填一下配置信息就能用。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注