
Linux 系统
Docker 环境 :Docker 基础 - zhongts 的个人博客
镜像:通过网盘分享的文件:v2ray.tar 链接:百度网盘

docker load -i v2ray.tar

docker run -d \
--restart=always \
--privileged \
--network=host \
--name v2raya \
-e V2RAYA_LOG_FILE=/tmp/v2raya.log \
-e V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray \
-e V2RAYA_NFTABLES_SUPPORT=off \
-e IPTABLES_MODE=legacy \
-v /lib/modules:/lib/modules:ro \
-v /etc/resolv.conf:/etc/resolv.conf \
-v /etc/v2raya:/etc/v2raya \
mzz2017/v2raya:latest

ss -ntulp # 查看端口是否开放

主机ip:2017



curl -x http://127.0.0.1:20171 https://www.google.com

Firewalld防火墙
systemctl stop firewalld
systemctl disabled firewalld
Selinux安全机制
getenforce 0
setenforce 0 # 临时关闭,重启后会开启
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 永久关闭
代理服务器只监听了本地127,未开放全部。导致其他服务器想要通过该代理服务器代理不通。



临时配置
# 配置 HTTP/HTTPS 代理
export http_proxy=http://192.168.50.2:20171
export https_proxy=http://192.168.50.2:20171
# 可选:配置 no_proxy 排除内网地址不代理
export no_proxy=localhost,127.0.0.1,192.168.0.0/16,*.local
永久配置
vim /etc/profile
export http_proxy=http://192.168.50.2:20171
export https_proxy=http://192.168.50.2:20171
export no_proxy=localhost,127.0.0.1,192.168.0.0/16,*.local
source /etc/profile
验证
# 测试 HTTP 代理
curl -I https://www.baidu.com
# 查看当前出口IP(应该显示A服务器的公网IP)
curl ifconfig.me
CentOS/RHEL(yum 代理)
# /etc/yum.conf
proxy=http://192.168.50.2:20171
Ubuntu/Debian(apt 代理)
# /etc/apt/apt.conf.d/99proxy
Acquire::http::Proxy "http://192.168.50.2:20171";
Acquire::https::Proxy "http://192.168.50.2:20171";
Acquire::socks::Proxy "socks5://192.168.50.2:20171";
SOCKS5端口20170
export ALL_PROXY=socks5://192.168.50.2:20170
export NO_PROXY=localhost,127.0.0.1,192.168.0.0/16
验证
curl -I --socks5 192.168.50.2:20171 https://www.baidu.com
mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.50.2:20171"
Environment="HTTPS_PROXY=http://192.168.50.2:20171"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.50.0/24,10.0.0.0/8,172.16.0.0/12"
systemctl daemon-reload
systemctl restart docker
docker info
# HTTP Proxy: http://192.168.50.2:20171
mkdir -p /etc/systemd/system/containerd.service.d
vi /etc/systemd/system/containerd.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.50.2:20171"
Environment="HTTPS_PROXY=http://192.168.50.2:20171"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.50.0/24"
systemctl daemon-reload
systemctl restart containerd
systemctl show --property=Environment containerd
# 看到 HTTP_PROXY 就说明成功
ctr image pull docker.io/library/hello-world # 拉取测试
# 或
nerdctl pull hello-world
Kubernetes容器运行时为 Containerd ,设置Containerd代理即可。
v2raya_linux_x64_2.3.3
v2ray-linux-64.zip
v2raya.sh

v2raya.sh
#!/bin/bash
set -euo pipefail
# 进度条(你要的样式)
show_progress() {
local BAR_WIDTH=50
local duration=${1:-5}
local interval=0.05
local steps=$((duration * 20))
for ((i=0; i<=steps; i++)); do
p=$((i*100/steps))
f=$((p*BAR_WIDTH/100))
e=$((BAR_WIDTH-f))
printf "\r["
printf "%0.s#" $(seq 1 $f)
printf "%0.s-" $(seq 1 $e)
printf "] %d%%" $p
sleep $interval
done
echo
}
# 菜单
clear
echo "========================"
echo " v2rayA 管理脚本"
echo " 0 退出"
echo " 1 安装"
echo " 2 卸载"
echo "========================"
read -p "请输入选项:" opt
if [ "$opt" = "0" ]; then
exit 0
elif [ "$opt" = "1" ]; then
clear
echo "开始安装..."
# 1. 检测 unzip
if ! command -v unzip &>/dev/null; then
echo "错误:未找到 unzip 命令,请先安装 unzip"
exit 1
fi
# 2. 检测文件
if [ ! -f "v2ray-linux-64.zip" ]; then
echo "错误:缺少 v2ray-linux-64.zip"
exit 1
fi
if [ ! -f "v2raya_linux_x64_2.3.3" ]; then
echo "错误:缺少 v2raya_linux_x64_2.3.3"
exit 1
fi
# 3. 检测端口是否被占用
if ss -ntulp | grep -q ":2017"; then
echo "错误:2017 端口已被占用"
exit 1
fi
# 安装任务
install_task() {
rm -rf ./v2ray
unzip -q -o v2ray-linux-64.zip -d ./v2ray
mkdir -p /usr/local/share/v2ray
cp ./v2ray/*dat /usr/local/share/v2ray
install -Dm755 ./v2ray/v2ray /usr/local/bin/v2ray
install -Dm755 ./v2raya_linux_x64_2.3.3 /usr/local/bin/v2raya
cat > /etc/systemd/system/v2raya.service << EOF
[Unit]
Description=A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols
Documentation=https://v2raya.org
After=network.target nss-lookup.target iptables.service ip6tables.service nftables.service
Wants=network.target
[Service]
Environment="V2RAYA_CONFIG=/usr/local/etc/v2raya"
Environment="V2RAYA_LOG_FILE=/tmp/v2raya.log"
Type=simple
User=root
LimitNPROC=500
LimitNOFILE=1000000
ExecStart=/usr/local/bin/v2raya
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now v2raya
sleep 2
}
install_task &
PID=$!
show_progress 6
wait $PID
# ======================
# 这里:判断 2017 端口
# ======================
if ss -ntulp | grep -q 2017; then
echo "✅ 安装完成"
else
echo "❌ 安装失败,2017 端口未监听"
exit 1
fi
elif [ "$opt" = "2" ]; then
clear
echo "开始卸载..."
uninstall_task() {
systemctl stop v2raya
systemctl disable v2raya
rm -f /etc/systemd/system/v2raya.service
systemctl daemon-reload
rm -f /usr/local/bin/v2ray
rm -f /usr/local/bin/v2raya
rm -rf /usr/local/share/v2ray
rm -rf /usr/local/etc/v2raya
rm -rf ./v2ray
}
uninstall_task &
PID=$!
show_progress 4
wait $PID
echo "✅ 卸载完成"
else
echo "输入错误"
exit 1
fi
./v2raya.sh


ip:2017