当前位置: 首页 > news >正文

Linux下V2Ray安装配置指南

Linux下V2Ray安装配置完全指南

本文档提供了在Linux系统上安装、配置和使用V2Ray的完整流程,包括从订阅链接自动生成配置文件、设置代理环境变量以及常见问题的解决方案。

目录

  1. 安装V2Ray
  2. 订阅转配置
  3. 配置V2Ray
  4. 启动V2Ray服务
  5. 设置代理环境变量
  6. 验证代理连接
  7. 常见问题排查
  8. 高级配置

1. 安装V2Ray

1.1 使用官方安装脚本(推荐)

# 安装V2Ray
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

这个脚本会:

  • 下载最新版V2Ray
  • 安装到 /usr/local/bin/v2ray
  • 创建配置目录 /usr/local/etc/v2ray
  • 自动配置systemd服务

1.2 手动安装

如果脚本无法运行,可以手动安装:

# 下载V2Ray
wget https://github.com/v2fly/v2ray-core/releases/download/v4.45.2/v2ray-linux-64.zip# 解压文件
mkdir -p v2ray
unzip v2ray-linux-64.zip -d v2ray# 移动到系统目录
sudo mv v2ray /usr/local/# 创建软链接
sudo ln -s /usr/local/v2ray/v2ray /usr/local/bin/v2ray
sudo ln -s /usr/local/v2ray/v2ctl /usr/local/bin/v2ctl# 创建配置目录
sudo mkdir -p /usr/local/etc/v2ray

1.3 创建systemd服务(手动安装时需要)

sudo nano /etc/systemd/system/v2ray.service

添加以下内容:

[Unit]
Description=V2Ray Service
After=network.target[Service]
ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json
Restart=on-failure
RestartSec=5s[Install]
WantedBy=multi-user.target

2. 订阅转配置

2.1 创建订阅转换脚本

创建一个名为v2ray_sub.sh的脚本文件:

nano v2ray_sub.sh

将以下内容粘贴到文件中:

#!/bin/bash# 参数检查
if [ $# -ne 2 ]; thenecho "用法: $0 订阅链接 输出配置文件"echo "例如: $0 https://example.com/sub 配置文件.json"exit 1
fiSUB_URL="$1"
OUTPUT_FILE="$2"echo "=== V2Ray订阅转换脚本 ==="
echo "订阅链接: ${SUB_URL:0:30}..."
echo "输出文件: $OUTPUT_FILE"
echo# 下载并解码订阅内容
echo "[1/5] 下载订阅内容..."
curl -sL "$SUB_URL" > sub_encoded.txt# 检查是否下载成功
if grep -q "<html>" sub_encoded.txt; thenecho "错误: 订阅下载失败,服务器返回HTML内容:"cat sub_encoded.txt | head -5exit 1
fiecho "[2/5] 解码订阅内容..."
base64 -d sub_encoded.txt > sub_decoded.txt 2>/dev/null
if [ $? -ne 0 ]; thenecho "错误: base64解码失败,可能不是标准的base64编码"exit 1
fi# 检查解码后的内容
echo "[3/5] 检查节点类型..."
NODE_COUNT=$(wc -l < sub_decoded.txt)
echo "找到 $NODE_COUNT 个节点"# 优先选择vmess节点
if grep -q "^vmess://" sub_decoded.txt; thenecho "找到vmess节点,优先使用"VMESS_LINK=$(grep "^vmess://" sub_decoded.txt | head -1)PROTOCOL="vmess"
elif grep -q "^trojan://" sub_decoded.txt; thenecho "找到trojan节点,将使用trojan协议"TROJAN_LINK=$(grep "^trojan://" sub_decoded.txt | head -1)PROTOCOL="trojan"
elif grep -q "^ss://" sub_decoded.txt; thenecho "找到ss节点,将使用shadowsocks协议"SS_LINK=$(grep "^ss://" sub_decoded.txt | head -1)PROTOCOL="ss"
elseecho "错误: 未找到支持的节点类型(vmess/trojan/ss)"exit 1
fi# 处理不同类型的节点
echo "[4/5] 解析节点信息..."if [ "$PROTOCOL" = "vmess" ]; then# 解析vmess链接VMESS_DATA=$(echo "${VMESS_LINK#vmess://}" | base64 -d 2>/dev/null)if [ $? -ne 0 ]; thenecho "错误: vmess链接解码失败"exit 1fi# 提取vmess配置SERVER_ADDRESS=$(echo "$VMESS_DATA" | grep -o '"add":"[^"]*"' | cut -d'"' -f4)SERVER_PORT=$(echo "$VMESS_DATA" | grep -o '"port":[0-9]*' | cut -d':' -f2)USER_ID=$(echo "$VMESS_DATA" | grep -o '"id":"[^"]*"' | cut -d'"' -f4)ALTER_ID=$(echo "$VMESS_DATA" | grep -o '"aid":[0-9]*' | cut -d':' -f2 || echo "0")NETWORK=$(echo "$VMESS_DATA" | grep -o '"net":"[^"]*"' | cut -d'"' -f4 || echo "tcp")PATH=$(echo "$VMESS_DATA" | grep -o '"path":"[^"]*"' | cut -d'"' -f4 || echo "")TLS=$(echo "$VMESS_DATA" | grep -o '"tls":"[^"]*"' | cut -d'"' -f4 || echo "none")HOST=$(echo "$VMESS_DATA" | grep -o '"host":"[^"]*"' | cut -d'"' -f4 || echo "")echo "节点信息:"echo "  协议: vmess"echo "  地址: $SERVER_ADDRESS"echo "  端口: $SERVER_PORT"echo "  用户ID: ${USER_ID:0:8}..."echo "  alterID: $ALTER_ID"echo "  传输协议: $NETWORK"echo "  TLS: $TLS"# 生成vmess配置echo "[5/5] 生成V2Ray配置文件..."cat > "$OUTPUT_FILE" << EOF
{"log": {"loglevel": "warning"},"inbounds": [{"port": 10808,"protocol": "socks","sniffing": {"enabled": true,"destOverride": ["http", "tls"]},"settings": {"auth": "noauth"}},{"port": 10809,"protocol": "http","sniffing": {"enabled": true,"destOverride": ["http", "tls"]}}],"outbounds": [{"protocol": "vmess","settings": {"vnext": [{"address": "$SERVER_ADDRESS","port": $SERVER_PORT,"users": [{"id": "$USER_ID","alterId": $ALTER_ID,"security": "auto"}]}]},"streamSettings": {"network": "$NETWORK",
EOF# 根据TLS设置添加相应配置if [ "$TLS" != "none" ] && [ -n "$TLS" ]; thencat >> "$OUTPUT_FILE" << EOF"security": "$TLS","tlsSettings": {"serverName": "$HOST"},
EOFelsecat >> "$OUTPUT_FILE" << EOF"security": "none",
EOFfi# 根据网络类型添加相应配置if [ "$NETWORK" = "ws" ]; thencat >> "$OUTPUT_FILE" << EOF"wsSettings": {"path": "$PATH","headers": {"Host": "$HOST"}}
EOFelif [ "$NETWORK" = "tcp" ]; thencat >> "$OUTPUT_FILE" << EOF"tcpSettings": {}
EOFficat >> "$OUTPUT_FILE" << EOF}},{"protocol": "freedom","tag": "direct"}],"routing": {"domainStrategy": "IPOnDemand","rules": [{"type": "field","ip": ["geoip:private"],"outboundTag": "direct"}]}
}
EOFelif [ "$PROTOCOL" = "trojan" ]; then# 解析trojan链接# trojan://password@server:port?allowInsecure=1#remarksTROJAN_PASSWORD=$(echo "$TROJAN_LINK" | sed 's/trojan:\/\///' | cut -d '@' -f1)SERVER_INFO=$(echo "$TROJAN_LINK" | sed 's/trojan:\/\///' | cut -d '@' -f2)SERVER_ADDRESS=$(echo "$SERVER_INFO" | cut -d ':' -f1)SERVER_PORT=$(echo "$SERVER_INFO" | cut -d ':' -f2 | cut -d '?' -f1)ALLOW_INSECURE=$(echo "$TROJAN_LINK" | grep -o "allowInsecure=1" || echo "")echo "节点信息:"echo "  协议: trojan"echo "  地址: $SERVER_ADDRESS"echo "  端口: $SERVER_PORT"# 生成trojan配置echo "[5/5] 生成V2Ray配置文件..."cat > "$OUTPUT_FILE" << EOF
{"log": {"loglevel": "warning"},"inbounds": [{"port": 10808,"protocol": "socks","sniffing": {"enabled": true,"destOverride": ["http", "tls"]},"settings": {"auth": "noauth"}},{"port": 10809,"protocol": "http","sniffing": {"enabled": true,"destOverride": ["http", "tls"]}}],"outbounds": [{"protocol": "trojan","settings": {"servers": [{"address": "$SERVER_ADDRESS","port": $SERVER_PORT,"password": "$TROJAN_PASSWORD"}]},"streamSettings": {"network": "tcp","security": "tls","tlsSettings": {"serverName": "$SERVER_ADDRESS","allowInsecure": $([ -n "$ALLOW_INSECURE" ] && echo "true" || echo "false")}}},{"protocol": "freedom","tag": "direct"}],"routing": {"domainStrategy": "IPOnDemand","rules": [{"type": "field","ip": ["geoip:private"],"outboundTag": "direct"}]}
}
EOFelif [ "$PROTOCOL" = "ss" ]; thenecho "SS协议支持正在开发中..."echo "请手动配置SS协议"exit 1
fiecho "配置已保存到 $OUTPUT_FILE"
echo "使用以下命令启动V2Ray:"
echo "v2ray -c $OUTPUT_FILE"
echo
echo "使用以下命令设置代理环境变量:"
echo "export http_proxy=http://127.0.0.1:10809"
echo "export https_proxy=http://127.0.0.1:10809"
echo
echo "或使用SOCKS5代理:"
echo "export http_proxy=socks5://127.0.0.1:10808"
echo "export https_proxy=socks5://127.0.0.1:10808"# 清理临时文件
rm -f sub_encoded.txt sub_decoded.txt

2.2 添加执行权限

chmod +x v2ray_sub.sh

2.3 使用脚本生成配置

# 语法: ./v2ray_sub.sh 订阅链接 输出配置文件
./v2ray_sub.sh "https://your-subscription-link" config.json

如果你想将配置直接生成到V2Ray的配置目录:

sudo ./v2ray_sub.sh "https://your-subscription-link" /usr/local/etc/v2ray/config.json

3. 配置V2Ray

如果你不使用订阅转换脚本,也可以手动编辑配置文件:

sudo nano /usr/local/etc/v2ray/config.json

基本的V2Ray配置示例:

3.1 VMess协议配置示例

{"log": {"loglevel": "warning"},"inbounds": [{"port": 10808,"protocol": "socks","sniffing": {"enabled": true,"destOverride": ["http", "tls"]},"settings": {"auth": "noauth"}},{"port": 10809,"protocol": "http","sniffing": {"enabled": true,"destOverride": ["http", "tls"]}}],"outbounds": [{"protocol": "vmess","settings": {"vnext": [{"address": "服务器地址","port": 443,"users": [{"id": "用户UUID","alterId": 0,"security": "auto"}]}]},"streamSettings": {"network": "ws","security": "tls","tlsSettings": {"serverName": "服务器域名"},"wsSettings": {"path": "/path"}}}]
}

3.2 Trojan协议配置示例

{"log": {"loglevel": "warning"},"inbounds": [{"port": 10808,"protocol": "socks","sniffing": {"enabled": true,"destOverride": ["http", "tls"]},"settings": {"auth": "noauth"}},{"port": 10809,"protocol": "http","sniffing": {"enabled": true,"destOverride": ["http", "tls"]}}],"outbounds": [{"protocol": "trojan","settings": {"servers": [{"address": "服务器地址","port": 443,"password": "密码"}]},"streamSettings": {"network": "tcp","security": "tls","tlsSettings": {"serverName": "服务器域名","allowInsecure": false}}}]
}

4. 启动V2Ray服务

4.1 使用systemd管理(推荐)

# 启动V2Ray
sudo systemctl start v2ray# 设置开机自启
sudo systemctl enable v2ray# 查看状态
sudo systemctl status v2ray# 重启服务
sudo systemctl restart v2ray# 停止服务
sudo systemctl stop v2ray# 查看日志
sudo journalctl -u v2ray

4.2 直接运行V2Ray

# 前台运行
v2ray -c /usr/local/etc/v2ray/config.json# 后台运行
nohup v2ray -c /usr/local/etc/v2ray/config.json > /dev/null 2>&1 &

5. 设置代理环境变量

5.1 临时设置代理

# HTTP代理
export http_proxy=http://127.0.0.1:10809
export https_proxy=http://127.0.0.1:10809# 或SOCKS5代理
export http_proxy=socks5://127.0.0.1:10808
export https_proxy=socks5://127.0.0.1:10808

5.2 永久设置代理

编辑~/.bashrc~/.profile文件:

echo 'export http_proxy=http://127.0.0.1:10809' >> ~/.bashrc
echo 'export https_proxy=http://127.0.0.1:10809' >> ~/.bashrc
source ~/.bashrc

5.3 创建代理开关快捷命令

echo 'alias proxy-on="export http_proxy=http://127.0.0.1:10809; export https_proxy=http://127.0.0.1:10809; echo 代理已开启"' >> ~/.bashrc
echo 'alias proxy-off="unset http_proxy; unset https_proxy; echo 代理已关闭"' >> ~/.bashrc
source ~/.bashrc

使用时只需输入proxy-on开启代理,proxy-off关闭代理。


6. 验证代理连接

6.1 检查代理状态

# 查看当前IP,应该显示代理服务器的IP
curl https://api.ipify.org# 测试Google连接
curl -v https://www.google.com

6.2 检查本地监听端口

# 检查V2Ray是否正常监听端口
netstat -tuln | grep -E '10808|10809'

应该看到类似以下输出:

tcp        0      0 127.0.0.1:10808         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:10809         0.0.0.0:*               LISTEN

7. 常见问题排查

7.1 V2Ray无法启动

# 检查V2Ray进程
ps aux | grep v2ray# 检查V2Ray日志
sudo journalctl -u v2ray -e# 检查配置文件语法
v2ray -test -c /usr/local/etc/v2ray/config.json

7.2 代理连接失败

  1. 检查V2Ray服务状态

    sudo systemctl status v2ray
    
  2. 检查配置文件

    • 确认服务器地址、端口、密码/UUID等信息是否正确
    • 确认协议类型是否正确(vmess/trojan/ss)
  3. 检查网络连接

    # 测试服务器连通性
    ping 服务器地址# 测试端口连通性
    telnet 服务器地址 端口
    
  4. 检查防火墙设置

    sudo iptables -L -n
    
  5. 尝试更换节点
    如果当前节点不可用,尝试使用订阅中的其他节点。

7.3 订阅链接问题

  1. 429错误(Too Many Requests)

    • 订阅链接请求过于频繁,等待一段时间后再试
    • 减少请求频率,避免被服务器限流
  2. 订阅内容解析失败

    • 检查订阅链接是否正确
    • 确认订阅内容是否为标准的base64编码
  3. 找不到支持的节点

    • 检查订阅内容中是否包含vmess/trojan/ss节点
    • 尝试手动解码订阅内容查看节点信息

7.4 代理环境变量问题

  1. 代理设置无效

    • 确认端口号是否正确(HTTP代理为10809,SOCKS5代理为10808)
    • 检查V2Ray是否正常运行并监听这些端口
  2. 只对部分应用生效

    • 某些应用可能不遵循系统代理设置,需要单独配置
    • 尝试使用proxychains等工具强制应用走代理

8. 高级配置

8.1 自动更新订阅配置

创建一个定时任务,定期更新V2Ray配置:

# 编辑crontab
crontab -e

添加以下内容(每天凌晨2点更新配置):

0 2 * * * /path/to/v2ray_sub.sh "https://your-subscription-link" /usr/local/etc/v2ray/config.json && systemctl restart v2ray

8.2 配置PAC规则

如果你想实现更智能的代理分流,可以配置路由规则:

"routing": {"domainStrategy": "IPOnDemand","rules": [{"type": "field","domain": ["domain:google.com", "domain:github.com"],"outboundTag": "proxy"},{"type": "field","domain": ["domain:baidu.com", "domain:qq.com"],"outboundTag": "direct"},{"type": "field","ip": ["geoip:private", "geoip:cn"],"outboundTag": "direct"},{"type": "field","domain": ["geosite:cn"],"outboundTag": "direct"}]
}

8.3 使用v2rayA图形界面(推荐)

如果你不喜欢命令行操作,可以使用v2rayA图形界面:

# 安装v2rayA
wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo apt-key add -
echo "deb https://apt.v2raya.org/debian/ v2raya main" | sudo tee /etc/apt/sources.list.d/v2raya.list
sudo apt update
sudo apt install v2raya# 启动v2rayA
sudo systemctl start v2raya
sudo systemctl enable v2raya

然后访问 http://localhost:2017 进行配置。


总结

通过本指南,你应该能够在Linux系统上成功安装、配置和使用V2Ray代理。如果遇到问题,请参考"常见问题排查"章节,或查阅V2Ray官方文档获取更多信息。

记住,定期更新V2Ray和订阅配置可以保持代理的稳定性和安全性。

相关文章:

  • linux thermal framework(1)_概述
  • LIGHT (数据库操作)
  • 编程风格良好的条件比较语句
  • 实现转场动画
  • vue3+tdesign实现明暗主题切换
  • 6.10 Mysql 事务 锁 面试题
  • C++_核心编程_多态案例二-制作饮品
  • 赛尔发布SHARE 5系列航测相机,外业更高效,建模更优质
  • 制作一款打飞机游戏69:编辑器升级
  • AliExpress(速卖通)铺货工具,图片下载,SKU浏览,详情搬运,使用方法
  • 3分钟配置好nacos集群(docker compose)
  • Docker 创建及部署完整流程
  • (五)docker环境中配置hosts
  • 【论文阅读笔记】HaDes幻觉检测benchmark
  • 搭建gitlab ci/cd runner实现对c++项目的自动编译和打包
  • 丝杆升降机的物联网与大数据应用的具体例子
  • V837s-SDK Telnetd服务连接不上异常解决
  • A16 扁平化管理
  • YSYX学习记录(八)
  • PHP 多种内置的验证规则和函数
  • dedecms 网站地图模板/如何制作自己的网页链接
  • 河北省建设厅网站工程师查询/信息流广告代理商排名
  • 辅助购卡网站怎么做/seo综合查询怎么进入网站
  • 营销型网站建设哪家便宜/南京百度搜索优化
  • 呼和浩特 网站建设/网络营销优化
  • wordpress如何设置边栏/教程seo推广排名网站