这篇文章上次修改于 278 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

V2ray服务端官方安装方式

1.安装V2ray并校准时间

  • 目前以下安装方法已不再适用

    bash <(curl -L -s https://install.direct/go.sh)
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 应使用以下方法安装

    curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh
    bash install-release.sh
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 从旧指令迁移至新指令请阅读:Migrate from the old script to this
  • 如果提示curl没有安装可以进行curl的安装

    sudo -s  #切换到root
    apt install curl -y  #Ubuntu用这个
    yum install curl -y  #CentOS7用这个

    2.脚本运行完后进入/etc/v2ray,找到config.json

    vim /etc/v2ray/config.json

    将配置写入config.json中
    3.控制V2ray的运行

    service v2ray start  ##运行V2ray
    service v2ray stop  ##停止运行V2ray
    service v2ray status  ##查看V2ray的日志
    service v2ray reload  ##重新载入V2ray
    service v2ray restart  ##重启V2ray

    4.运行V2ray并测试成功后,将V2ray设定为开机自启

    systemctl enable v2ray  ##开机自启
    systemctl disable v2ray  ##关闭开机自启

    V2ray ws+tls+Nginx+CDN配置说明

    1.申请SSL,有SSL的可以跳过这一步。

    cd ~
    git clone https://github.com/certbot/certbot
    cd certbot
    ./certbot-auto certonly --agree-tos -t --standalone -d [域名]

    2.修改网站对应的Nginx配置文件。
    ssl_protocols处可以改为:

      ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

    ssl_ciphers处可以改为:

      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

    然后在当前server的最后一个"}"号之前加入:

    location /v/ {

      proxy_redirect off;
      proxy_pass http://127.0.0.1:{端口号}/;
      proxy_http_version 1.1;
      proxy_set_header Host "{网址}";
      proxy_set_header Connection "Upgrade";
      proxy_set_header Upgrade "WebSocket";
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_intercept_errors on;

    }
    #{端口号}处改为你要让v2ray运行的端口号(记得打开对应端口的防火墙)
    #{网址}处写你的网址就行
    3.修改V2ray的配置文件config.json

      {
        "log" : {
          "access": "/var/log/v2ray/access.log",
          "error": "/var/log/v2ray/error.log",
          "loglevel": "info"
        },
        "inbound": {
          "port": {端口},
          "listen": "127.0.0.1",
          "protocol": "vmess",
          "settings": {
            "clients": [
              {
                "id": "{UUID}",
                "level": 1,
                "alterId": 0,
                "security": "none"
              }
            ]
          },
          "streamSettings": {
            "network": "ws",
            "security": "auto",
            "wsSettings": {
              "path": "/"
            }
          }
        },
        "outbound": {
          "protocol": "freedom",
          "settings": {}
        }
      }

    {端口}处填写V2ray运行端口

    {UUID}处填写自己随机生成的UUID

    4.在客户端测试
    打开客户端
    地址填写web的网址
    端口443
    用户ID是服务端中自己生成的UUID
    传输协议选ws
    伪装域名填写web的网址
    路径填写/v/
    底层传输安全选tls
    进行连接测试
    5.测试成功以后去cloudflare那里点亮对应解析记录中的灰色的云朵(未使用CDN时是灰色的,使用时是黄色)


VLESS协议

在VMESS协议配置文件上进行改动

    {
      "log" : {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "info"
      },
      "inbound": {
        "port": {端口},
        "listen": "127.0.0.1",
        "protocol": "vless",
        "settings": {
          "clients": [
            {
              "id": "{UUID}",
              "level": 1,
              "alterId": 0,
              "security": "none"
            }
          ],
          "decryption": "none"
        },
        "streamSettings": {
          "network": "ws",
          "security": "auto",
          "wsSettings": {
            "path": "/"
          }
        }
      },
      "outbound": {
        "protocol": "freedom",
        "settings": {}
      }
    }
  • 对protocol项进行更改,将"vmess"替换为"vless"
  • 增添一个"decryption": "none"项

    inboundDetour配置方法(弃用,详见inbounds配置方法)

可以使用剩余配置入口,在config.json中可以同时使用inbound和inboundDetour,inbound是主配置入口,inboundDetour是剩余配置入口。

{
  "log" : {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "info"
  },
  "inbound": {
    "port": {port},
    "listen": "127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "{UUID}",
          "level": 1,
          "alterId": 100,
          "security": "none"
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "security": "auto",
      "wsSettings": {
        "path": "/"
      }
    }
  },
  "inboundDetour": [            
  {
    "port": {port},
    "protocol": "vmess",
    "settings": {
       "clients": [
        {
          "id": "{UUID}",
          "level": 1,
          "alterId": 0,
            "email": "[email protected]"    
        }
     ]
    },
    "streamSettings": {
      "network": "mkcp",
      "kcpSettings": {
        "mtu": 1350,
        "tti": 20,
        "uplinkCapacity":10,
        "downlinkCapacity": 100,
        "congestion": false,
        "readBufferSize": 2,
        "writeBufferSize": 2,
        "header": {
          "type": "utp",
           "request": null,
           "response": null
        }
      }
    }
  }
 ],
  "outbound": {
    "protocol": "freedom",
    "settings": {}
  }
}

inbound中之前讲过,不做赘述,把port和UUID填写上就可以
在inboundDetour配置中又配置了一个mkcp的协议,这样是可行的,同样补全port和UUID就可以了


inbounds配置方法

{
    "log": {
        "loglevel": "warning"
    },
    "routing": {
        "domainStrategy": "AsIs",
        "rules": [
            {
                "type": "field",
                "ip": [
                    "geoip:private"
                ],
                "outboundTag": "block"
            }
        ]
    },
    "inbounds": [
        {
            "listen": "0.0.0.0",
            "port": {port},
            "protocol": "vmess",
            "settings": {
                "clients": [
                    {
                        "id": "{uuid}",
                        "alterId": {id},
                        "email": "[email protected]"
                    }
                ]
            },
            "streamSettings": {
                "network": "ws",
                "wsSettings": {
               "path": "/user",
              "headers": {
                "Host": "about.gitlab.com"
          }
        }
               
            }
        },
        {
          "port": {port},
          "protocol": "vmess",
          "settings": {
            "udp": false,
            "clients": [
              {
                "id": "{uuid}",
                "alterId": {id},
                "email": "[email protected]"
              }
            ],
            "allowTransparent": false
          },
          "streamSettings": {
            "network": "tcp",
            "tcpSettings": {
              "header": {
                "type": "http"
          }
        }
      }
    }
    ]
}

关于v2+docker的使用方法

Docker是一个开放原始码软体专案,让应用程式部署在软体货柜下的工作可以自动化进行,借此在Linux作业系统上,提供一个额外的软体抽象层,以及作业系统层虚拟化的自动管理机制。(摘自维基百科)

以CentOS7为例:
#更新yum源
sudo yum update
#安装docker
sudo yum install docker
#设定docker为开机启动
sudo systemctl enable docker
#打开docker
sudo service docker start
#利用docker搜索需要的容器
sudo docker search v2ray
#下载docker中的v2ray容器(v2ray官方容器为v2ray/official)
sudo docker pull v2ray/official
#查看已经下载好的容器
sudo docker images
#创建一个v2ray目录
sudo mkdir /etc/v2ray
#准备好一个config.json文件
#将config.json上传到/etc/v2ray中
cd /etc/v2ray
sudo chmod 744 config.json
#运行这个v2ray容器
sudo docker run -d --name v2ray -v /etc/v2ray:/etc/v2ray -p 8888:8888 v2ray/official  v2ray -config=/etc/v2ray/config.json
#--name v2ray意为为这个容器命名为v2ray
#-d 后台运行程序并返回容器ID
#-v /etc/v2ray:/etc/v2ray指的是将当前系统的/etc/v2ray目录挂载到容器的/etc/v2ray
#-p 端口映射 格式是 -p [当前主机端口]:[容器端口] 如果config.json中用的是mKCP流量传输 需要加/udp 例如 -p 8888:8888/udp (记得防火墙放行该端口的udp流量) 这里的端口一定要和config.json中的端口保持一致
#运行完成后可以使用
sudo docker ps
#查看当前docker正在运行的容器
#重启vps以后无需再创建容器
#运行docker版v2ray
sudo docker container start v2ray
#停止docker版v2ray
sudo docker container stop v2ray
#重启docker版v2ray
sudo docker container restart v2ray
#查看v2ray运行日志
sudo docker container logs v2ray
#当你不想使用docker版v2ray时
#当你给容器命名为v2ray时才能用以下命令
#停止
sudo docker stop v2ray
#删除
sudo docker rm v2ray
#删除容器
sudo docker image rm v2ray/official

本文部分参考Docker 部署 V2Ray