使用 Project V(V2Ray) 搭建 Shadowsocks 和 MTProto 服务端

继上一篇《Project V(V2Ray) 入门》,这一篇上手简单一点,先不说 V2Ray 自身的 VMess 配置,放在下一篇再讲

前文说了 V2Ray 的配置文件是 JSON 格式,对于新手来说极易出错,所以建议使用编辑器(如 VSCode)进行编辑,不然 Google 一下「JSON 在线验证」检查下有没有配置错误再修改服务端配置,另外使用 vim 进入配置界面后如何进入编辑模式以及编辑完成后如何保存退出前文均已说明,从这一篇开始我不会重复相关内容以免内容冗余

配置 Shadowsocks 协议

首先上一篇我们在打开 V2ray 的配置文件 config.json 时看到有一个默认的配置,这个默认配置中有个默认的进站协议,这里先将其删掉

{
  "inbounds": [],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "blocked"
      }
    ]
  }
}

如上图,[] 为一个数组,里面可以放多个 {} ,每个花括号内可以写上一种协议,这里先将默认的 VMess 协议删掉,改成 Shadowsocks 协议

V2Ray 配置 Shadowsocks
{
  "inbounds": [
    {
      "protocol": "shadowsocks", 
      "port": 8443, 
      "settings": {
        "method": "chacha20-ietf-poly1305", 
        "password": "FuckGFW", 
        "network": "tcp,udp", 
        "level": 0, 
        "ota": false
      }
    }
  ], 
  "outbounds": [
    {
      "protocol": "freedom", 
      "settings": { }
    }, 
    {
      "protocol": "blackhole", 
      "settings": { }, 
      "tag": "blocked"
    }
  ], 
  "routing": {
    "rules": [
      {
        "type": "field", 
        "ip": [
          "geoip:private"
        ], 
        "outboundTag": "blocked"
      }
    ]
  }
}

以上就是一个完整的配置了,保存后重启 V2Ray 即可

Shadowsocks 配置讲解
{
  "protocol": "shadowsocks", // Shadowsocks 协议
  "port": 8443, // 服务器端口
  "settings": {
    "method": "chacha20-ietf-poly1305", // AEAD 加密算法 
    "password": "FuckGFW",  // 密码
    "network": "tcp,udp", // 网络协议 
    "level": 0, // 等级暂不管默认即可
    "ota": false // 已过时,使用 AEAD 需关闭
}

如上配置讲解,仅修改服务器端口及密码即可,加密算法仅推荐 AEAD 算法

配置 MTProto 协议

接下来继续深入,如果想再增加一个用于 Telegram 的 MTProto 协议呢?

V2Ray 配置 Shadowsocks 和 MTProto
{
  "inbounds": [
    {
      "protocol": "shadowsocks", 
      "port": 8443, 
      "settings": {
        "method": "chacha20-ietf-poly1305", 
        "password": "FuckGFW", 
        "network": "tcp,udp", 
        "level": 0, 
        "ota": false
      }
    },
    {
      "tag": "tg-in", 
      "port": 6443, 
      "protocol": "mtproto", 
      "settings": {
        "users": [
          {
            "secret": "353777c6d1a575b44c19d198ed822ff9"
          }
        ]
      }
    }
  ], 
  "outbounds": [
    {
      "protocol": "freedom", 
      "settings": { }
    }, 
    {
      "protocol": "blackhole", 
      "settings": { }, 
      "tag": "blocked"
    }, 
    {
      "tag": "tg-out", 
      "protocol": "mtproto", 
      "settings": { }
    }
  ], 
  "routing": {
    "rules": [
      {
        "type": "field", 
        "ip": [
          "geoip:private"
        ], 
        "outboundTag": "blocked"
      },
      {
        "type": "field", 
        "inboundTag": [
          "tg-in"
        ], 
        "outboundTag": "tg-out"
      }
    ]
  }
}

配置 MTProto 需要在进站、出站和路由都加上配置,仔细观察上述配置和之前多了什么?特别是新增的花括号前需要加上英文逗号隔开,否则会报错

MTProto 进站配置讲解
{
  "tag": "tg-in", // 标签,用于路由配置
  "port": 6443,  // 服务器端口
  "protocol": "mtproto", // MTProto 协议
  "settings": {
    "users": [
    {
      "secret": "353777c6d1a575b44c19d198ed822ff9" // 密码
    }
  ]
}

如上图主要修改端口和密码,密码需要输入命令生成(macOS 和 Linux 用户在终端使用以下命令)

openssl rand -hex 16

好了,配置完成后记得重启 V2Ray 服务查看下服务是否因为错误配置而无法运行。

结合

再结合上一篇,在已有配置 Shadowsocks 和 MTProto 的协议上加上禁止 BT 下载

V2Ray 配置 Shadowsocks 和 MTProto
{
  "inbounds": [
    { // Shadowsocks 协议
      "protocol": "shadowsocks",
      "port": 8443, 
      "settings": {
        "method": "chacha20-ietf-poly1305", 
        "password": "FuckGFW", 
        "network": "tcp,udp", 
        "level": 0, 
        "ota": false
      },
	  "sniffing": { // 禁止 BT 所需流量识别
        "destOverride": [
          "http",
          "tls"
        ],
        "enabled": true
      }
    },
    { // MTProto 协议
      "tag": "tg-in", 
      "port": 6443, 
      "protocol": "mtproto", 
      "settings": {
        "users": [
          {
            "secret": "353777c6d1a575b44c19d198ed822ff9"
          }
        ]
      }
    }
  ], 
  "outbounds": [
    {
      "protocol": "freedom", 
      "settings": { }
    }, 
    {
      "protocol": "blackhole", 
      "settings": { }, 
      "tag": "blocked"
    }, 
    {
      "tag": "tg-out", 
      "protocol": "mtproto", 
      "settings": { }
    }
  ], 
  "routing": {
    "rules": [
      {
        "type": "field", 
        "ip": [
          "geoip:private"
        ], 
        "outboundTag": "blocked"
      },
      { // 禁止 BT 下载
        "type": "field",
        "protocol": [
          "bittorrent"
        ],
        "outboundTag": "blocked"
      },
      { // TG 出入站
        "type": "field", 
        "inboundTag": [
          "tg-in"
        ], 
        "outboundTag": "tg-out"
      }
    ]
  }
}

另外近期遇到过一件事,一网友本来好心把节点做公共节点方便大家,结果有人拿来滥发垃圾邮件导致机房警告,挺恶心的,所以如果是用于公共节点或者不想让客户端做发送邮件的操作,可以在路由规则中再加上一条

禁止 25 端口
{
  "type": "field",
  "port": "25",
  "outboundTag": "blocked"
}

总结

在配置了 Shadowsocks 和 MTProto 后可以看出,在 V2Ray 服务端对外配置协议是在进站「inbounds」下的数组 [] 里,也就是说,要配置更多的协议就不断加在此处即可。

而部分功能配置比如 MTProto 协议也会涉及到出站「outbounds」和路由「routing」,这些可以查阅官方文档都有说明。

Conners Hua

欢迎加入群聊: Telegram 群聊 | QQ 群聊(不讨论敏感话题)

您可能还喜欢...

1 条回应

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据