Skip to content
V2ray 配置生成
shell
#!/usr/bin/bash

##### 从官网(github)下载已经已经编译好的v2ray软件包
##### 解压到/etc/v2ray: unzip v2ray-linux-64.zip -d /etc/v2ray
##### 目录结构如下:
##### /etc/v2ray/
##### ├── config.json
##### ├── geoip.dat
##### ├── geoip-only-cn-private.dat
##### ├── geosite.dat
##### ├── systemd
##### │   └── system
##### │       ├── v2ray.service
##### │       └── v2ray@.service
##### ├── v2ray
##### ├── vpoint_socks_vmess.json
##### └── vpoint_vmess_freedom.json

set -e

## v2ray配置
V2RAY_HOME_PATH=/etc/v2ray
V2RAY_LOG_PATH="${V2RAY_HOME_PATH}/logs"
V2RAY_SERVER_IP=
V2RAY_SERVER_PORT=6868
V2RAY_SERVER_CONF_PATH="${V2RAY_HOME_PATH}/server"
V2RAY_CLIENT_PORT=8080
V2RAY_CLIENT_CONF_PATH="${V2RAY_HOME_PATH}/client"
UUID_VALUES_1=$("${V2RAY_HOME_PATH}/v2ray" uuid)
UUID_VALUES_2=$("${V2RAY_HOME_PATH}/v2ray" uuid)
UUID_VALUES_3=$("${V2RAY_HOME_PATH}/v2ray" uuid)

if [[ -z "${V2RAY_HOME_PATH}" ]];then
    echo "请先配置v2ray安装路径!"
    exit
fi

if [[ -z "${V2RAY_SERVER_IP}" ]];then
    echo "请先设置v2ray服务IP!"
    exit
fi

if [[ ! -d "${V2RAY_LOG_PATH}" ]];then
    mkdir -p "${V2RAY_LOG_PATH}"
fi

_client() {
if [[ ! -d "${V2RAY_CLIENT_CONF_PATH}" ]];then
    mkdir -p "${V2RAY_CLIENT_CONF_PATH}"
fi
# inbounds字段配置
cat <<EOF >"${V2RAY_CLIENT_CONF_PATH}/inbounds.json"
{
  "inbounds": [
    {
      "port": ${V2RAY_CLIENT_PORT},
      "protocol": "http",
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      }
    }
  ]
}
EOF
# outbounds字段配置
cat <<EOF >"${V2RAY_CLIENT_CONF_PATH}/outbounds.json"
{
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "${V2RAY_SERVER_IP}",
            "port": ${V2RAY_SERVER_PORT},
            "users": [
              {
                "id": "${UUID_VALUES_1}"
              }
            ]
          }
        ]
      }
    }
  ]
}
EOF
# 使用示例
echo "${V2RAY_HOME_PATH}/v2ray test -d ${V2RAY_CLIENT_CONF_PATH}"
echo "${V2RAY_HOME_PATH}/v2ray run -d ${V2RAY_CLIENT_CONF_PATH}"
}

_server() {
if [[ ! -d "${V2RAY_SERVER_CONF_PATH}" ]];then
    mkdir -p "${V2RAY_SERVER_CONF_PATH}"
fi
# log字段配置
cat <<EOF >"${V2RAY_SERVER_CONF_PATH}/log.json"
{
  "log": {
    "access": "${V2RAY_LOG_PATH}/access.log",
    "error": "${V2RAY_LOG_PATH}/error.log",
    "loglevel": "info"
  }
}
EOF
# api字段配置
cat <<EOF >"${V2RAY_SERVER_CONF_PATH}/api.json"
{
  "api": {
    "tag": "server-endpoint",
    "services": [
      "HandlerService",
      "LoggerService",
      "StatsService"
    ]
  }
}
EOF
# dns 字段配置
cat <<EOF >"${V2RAY_SERVER_CONF_PATH}/dns.json"
{
  "dns": {
    "tag": "dns-srv",
    "hosts": {
      "google.com": "google.com"
    },
    "servers": [
      {
        "address": "",
        "port": 5353,
        "domains": [
          "domain:v2ray.com"
        ],
        "expectIPs": [
          "geoip:cn"
        ]
      }
    ]
  }
}
EOF
# inbounds字段配置
cat <<EOF >"${V2RAY_SERVER_CONF_PATH}/inbounds.json"
{
  "inbounds": [
    {
      "port": ${V2RAY_SERVER_PORT},
      "protocol": "vmess",
      "listen": "${V2RAY_SERVER_IP}",
      "settings": {
        "clients": [
          {
            "id": "${UUID_VALUES_1}",
            "alterId": 0
          },
          {
            "id": "${UUID_VALUES_2}",
            "alterId": 0
          },
          {
            "id": "${UUID_VALUES_3}",
            "altrId": 0
          }
        ]
      }
    }
  ]
}
EOF
# outbounds字段配置
cat <<EOF >"${V2RAY_SERVER_CONF_PATH}/outbounds.json"
{
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}
EOF
# routing字段配置
cat <<EOF >"${V2RAY_SERVER_CONF_PATH}/routing.json"
{
  "routing": {
    "rules": [
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": ["geoip:cn"]
      },
      {
	"type": "field",
	"ip": [
	  "geoip:private"
        ],
	"outboundTag": "direct"
      }
    ]
  }
}
EOF
# 使用示例
echo "${V2RAY_HOME_PATH}/v2ray test -d ${V2RAY_SERVER_CONF_PATH}"
echo "${V2RAY_HOME_PATH}/v2ray run -d ${V2RAY_SERVER_CONF_PATH}"
}

_help() {
if [[ -z $1 ]];then
    echo "Usage: $0 server|client"
    echo "  server  生成服务端配置"
    echo "  client  生成客户端配置"
    exit
fi
}

if [[ $1 == "server" ]];then
    _server
    exit
fi

if [[ $1 == "client" ]];then
    _client
    exit
fi

_help

欢迎来到 Laazua 的站点