51 lines
1.5 KiB
Plaintext
51 lines
1.5 KiB
Plaintext
bash << 'EOF'
|
||
set -e
|
||
|
||
echo "=== [1/7] 强制 DNS 为 IPv6 优先 ==="
|
||
chattr -i /etc/resolv.conf 2>/dev/null || true
|
||
cat > /etc/resolv.conf << 'DNS'
|
||
nameserver 2606:4700:4700::1111
|
||
nameserver 2001:4860:4860::8888
|
||
DNS
|
||
chattr +i /etc/resolv.conf
|
||
|
||
echo "=== [2/7] 修补 glibc 地址选择策略(IPv6 优先)==="
|
||
cat > /etc/gai.conf << 'GAI'
|
||
precedence ::1/128 50
|
||
precedence ::/0 40
|
||
precedence 2002::/16 30
|
||
precedence ::ffff:0:0/96 10
|
||
GAI
|
||
|
||
echo "=== [3/7] 禁止 Xray 使用 IPv4(内核级)==="
|
||
sysctl -w net.ipv4.tcp_syn_retries=2 >/dev/null
|
||
sysctl -w net.ipv4.tcp_retries2=5 >/dev/null
|
||
|
||
echo "=== [4/7] 确保 IPv6 未被禁用 ==="
|
||
sysctl -w net.ipv6.conf.all.disable_ipv6=0 >/dev/null
|
||
sysctl -w net.ipv6.conf.default.disable_ipv6=0 >/dev/null
|
||
|
||
echo "=== [5/7] 修补 Xray SOCKS5 出站为 IPv6-only ==="
|
||
XRAY_CONF="/usr/local/x-ui/bin/config.json"
|
||
|
||
if [ -f "$XRAY_CONF" ]; then
|
||
cp "$XRAY_CONF" "${XRAY_CONF}.bak.$(date +%s)"
|
||
jq '
|
||
(.outbounds[] | select(.protocol=="freedom").settings.domainStrategy)="UseIPv6"
|
||
' "$XRAY_CONF" > /tmp/xray.json && mv /tmp/xray.json "$XRAY_CONF"
|
||
else
|
||
echo "未找到 Xray 配置文件,跳过自动注入(但系统层已生效)"
|
||
fi
|
||
|
||
echo "=== [6/7] 重启服务 ==="
|
||
systemctl restart x-ui 2>/dev/null || true
|
||
systemctl restart xray 2>/dev/null || true
|
||
|
||
echo "=== [7/7] 验证提示 ==="
|
||
echo "请执行:"
|
||
echo "curl --socks5-hostname 127.0.0.1:你的端口 https://ipv6.google.com"
|
||
echo "如果返回 HTML,则 SOCKS5 已 100% 修复"
|
||
|
||
echo "=== SOCKS5 IPv6 修补完成 ==="
|
||
EOF
|