文章

科学上网

科学上网可以使用代理服务。代理服务是用于客户端与目标服务器之间的中介,代表客户端发起请求。代理服务器为客户端提供绕过访问限制、提升隐私、缓存内容、或进行内容过滤的能力。

一、购买代理服务器

购买vultr服务器官网:购买页面

参考 购买vultr服务器超详细图文教程

二、连接Vultr服务器

SSH连接服务器

Xshell SSH 连接

可以选择使用 Xshell 工具;若是使用 Bitvise 工具,跳转到 [[科学上网#Bitvise SSH 连接|Bitvise SSH 连接]]

在会话属性,使用SSH协议,主机是代理服务器地址,SHH 默认使用端口 22:

Pasted image 20240121150320.png

用户身份验证,用户名和密码是购买的代理服务器的信息:

Pasted image 20240121150212.png

打开会话,提示框直接点击确认即可,进入shell命令行。

Bitvise SSH 连接(可跳过)

若选择 Bitvise SSH 客户端登录,配置代理服务器 HOST IP地址和默认端口22,用户验证的用户名和密码。

登录成功后,选择左侧的 New terminal console,新建会话,进入 shell 命令行。 Pasted image 20240121151448.png

xray服务配置

一键配置xray服务,命令行如下:

bash <(curl -sL https://raw.githubusercontent.com/daveleung/hijkpw-scripts-mod/main/xray_mod1.sh)

注:命令回车后,会出现v2ray一键安装脚本的菜单项。

如果没有出现,Centos系统输入:

yun install -y curl

Ubuntu/Debian系统输入:

apt install -y curl

以v2ray一键脚本安装菜单,按需安装。如下示例,选择:安装选项5,端口443,其它回车默认选择即可。 Pasted image 20240308115039.png

脚本自动执行,最后会输出配置信息。例如:

Archive:  /tmp/xray/xray.zip
  inflating: /tmp/xray/geosite.dat   
  inflating: /tmp/xray/xray          
  inflating: /tmp/xray/geoip.dat     
  inflating: /tmp/xray/README.md     
  inflating: /tmp/xray/LICENSE       
Created symlink /etc/systemd/system/multi-user.target.wants/xray.service → /etc/systemd/system/xray.service.
 BBR模块已安装
 Xray启动成功

 Xray运行状态:已安装 Xray正在运行
 Xray配置文件:  /usr/local/etc/xray/config.json
 Xray配置信息:
   协议:  VLESS
   IP(address):  64.176.85.208
   端口(port):443
   id(uuid):2d2d2ca6-f2de-490c-b7ef-fb03b6ebdba8
   加密(encryption): none
   传输协议(network): mkcp
   伪装类型(type): none
   mkcp seed: 7523635e-21d5-4ded-9db4-8adbcdd9a2b2

注:本次选择配置的是:VLESS+KCP,传输协议使用mKCP

自此代理服务器配置成功。

三、下载并配置客户端

v2ray客户端下载及对应配置教程:v2ray

Wndows客户端配置

相关配置点设置如上述执行脚本后 xray 服务输出的配置信息。

  1. 如果用了VLESS或者XTLS技术,请更换为Xray内核,如下所示:

Pasted image 20240110135529.png

  1. 添加新的V2ray节点

点击界面菜单项,服务器,添加对应的服务器类型,进行配置:

Pasted image 20240110135830.png

Pasted image 20240110140444.png

  1. 右下角托盘启动服务代理

一般可选择“自动配置系统代理”和“Pac模式”,如下:

Pasted image 20240110140652.png

注:“自动配置系统代理”:是默认的全局代理,走节点流量;

“Pac模式”:是代理软件根据用户访问的网站,将需要代理的网站和服务通过PAC文件过来出来,只有这部分走代理节点流量。

手机安卓客户端

  1. 电脑端配置成功后,可以选中创建的一行服务器代理,右键分享二维码:

Pasted image 20240110141956.png

  1. 手机端扫描即可一键配置

  2. 建立服务连接即可

Linux系统客户端配置

可视化界面模式

以 CentOS 7 系统为例。在 Linux 系统下可以使用 V2rayA 客户端,见官网下载

v2rayA 官方文档可知,基于 RedHat 的 CentOS 的系统版本,v2rayA 前端管理工具依赖 v2Ray core 后台进程,所以,两者都要安装。

v2rayA

下载 v2rayA:installer_redhat_x64_2.2.5.8.rpm

安装 v2rayA:

yum localinstall installer_redhat_x64_2.2.5.8.rpm

启用并启动服务:

systemctl enable --now v2raya

检查服务状态:

systemctl status v2raya

v2ray

接下来,需要安装配置 v2ray,不然 v2rayA 管理界面会提示错误:failed to start v2ray-core: geoip.dat or geosite.dat file does not **exists**

下载 v2ray:v2ray-linux-64.zip

安装配置:

unzip v2ray-linux-64.zip -d ./v2ray

mv ./v2ray /usr/local/share

创建符号链接:

/usr/local/share/v2ray 目录包含 v2ray 相关的可执行文件。 为确保 v2raya 可以调用 v2ray,创建一个符号链接到 /usr/local/bin 目录,使系统 PATH 包含它。

ln -s /usr/local/share/v2ray/v2ray /usr/local/bin/v2ray

然后,重启下 v2raya 服务。

systemctl restart v2raya

v2rayA 管理界面

参考 v2rayA 官方文档,了解基本的使用方法。

通过 2017 端口(如 http://localhost:2017)访问UI界面,管理配置服务器。

首先,应该创建一个管理员账户,管理服务。然后,创建或导入服务器节点。

创建服务器节点:

一般必要的参数配置:

Pasted image 20241110171831.png

说明:配置参数依据上述的[[科学上网#xray服务配置|xray服务配置]]输出信息。创建完可以启动服务器节点。

代理配置:

Pasted image 20240807122514.png

设置完代理后,可以访问网页进行验证代理服务是否有效。

命令行模式

对于有些远程操作的云虚拟机服务器,可能只有命令行模式可以操作,因此,就需要命令行中配置相关参数内容。

如上述,仅下载安装 v2ray 核心工具即可。

下载后解压到指定目录:

unzip v2ray-linux-64.zip -d  /usr/local/share/v2ray

编辑 v2ray 配置文件

可以复制其他系统下安装配置的 config.json 文件,或直接修改:

{
  "log": {
    "access": "",
    "error": "",
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "socks",
      "port": 10808,
      "listen": "127.0.0.1",
      "protocol": "socks",
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls"
        ],
        "routeOnly": false
      },
      "settings": {
        "auth": "noauth",
        "udp": true,
        "allowTransparent": false
      }
    },
    {
      "tag": "http",
      "port": 10809,
      "listen": "127.0.0.1",
      "protocol": "http",
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls"
        ],
        "routeOnly": false
      },
      "settings": {
        "auth": "noauth",
        "udp": true,
        "allowTransparent": false
      }
    }
  ],
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "64.176.85.208",
            "port": 443,
            "users": [
              {
                "id": "a06e0afd-998e-4ac4-9dfb-a80b2076feb1",
                "alterId": 0,
                "email": "t@t.tt",
                "security": "auto",
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp"
      },
      "mux": {
        "enabled": false,
        "concurrency": -1
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {
        "response": {
          "type": "http"
        }
      }
    }
  ],
  "dns": {
    "servers": [
      "1.1.1.1",
      "8.8.8.8"
    ]
  },
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "inboundTag": [
          "api"
        ],
        "outboundTag": "api"
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": [
          "domain:example-example.com",
          "domain:example-example2.com"
        ]
      },
      {
        "type": "field",
        "outboundTag": "block",
        "domain": [
          "geosite:category-ads-all"
        ]
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "domain": [
          "geosite:cn"
        ]
      },
      {
        "type": "field",
        "outboundTag": "direct",
        "ip": [
          "geoip:private",
          "geoip:cn"
        ]
      },
      {
        "type": "field",
        "port": "0-65535",
        "outboundTag": "proxy"
      }
    ]
  }
}

说明:这个配置文件定义了 V2Ray 的代理设置,包括入站和出站规则、DNS 配置和路由规则,旨在根据流量类型和目标来决定如何处理和转发流量。

  • 主要关注 outbounds 字段下 protocoladdressidencryptionnetwork 的等内容。
  • 稍后,配置的本地代理端口应和 inbounds 字段下的 port 保持一致。

配置代理服务

通过配置全局环境变量,使网络请求通过本地的代理服务器进行转发,分别通过不同的端口进行 SOCKS5 和 HTTP 代理。

可以添加环境变量到 /etc/profile 文件末尾,内容如下:

export ALL_PROXY="socks5://127.0.0.1:10808"
export http_proxy="http://127.0.0.1:10809"
export https_proxy="http://127.0.0.1:10809"
  • ALL_PROXY 设置全局的 SOCKS5 代理。所有协议(如 HTTP、HTTPS、FTP 等)的流量都通过 127.0.0.1:10808 这个 SOCKS5 代理服务器进行转发。
  • http_proxy 为 HTTP 协议设置 HTTP 代理,所有的 HTTP 流量通过 http://127.0.0.1:10809 代理服务器转发。
  • http_proxy 为 HTTPS 协议设置 HTTP 代理(注意,这里是 http 协议),所有的 HTTPS 流量通过 http://127.0.0.1:10809 代理服务器转发。

使其在当前 bash 终端立即生效:

source /etc/profile

启动 v2ray 服务

一是直接使用 v2ray 命令并指定配置文件:

/usr/local/share/v2ray/v2ray -config /usr/local/share/v2ray/config.json

二是使用 Systemd 启动服务:

将 v2ray 作为系统服务运行,可以使用提供的 systemd 服务文件。

  • 将 v2ray 中 systemd 目录下的 v2ray.service 文件复制到 /etc/systemd/system/ 中:
cp /usr/local/share/v2ray/systemd/system/v2ray.service /etc/systemd/system/
  • 启动并设置 v2ray 服务随系统启动:
systemctl enable v2ray
systemctl start v2ray
  • 可以检查 v2ray 服务状态:
systemctl status v2ray

验证代理服务

验证代理是否正常工作:

curl -x socks5://127.0.0.1:10808 https://www.google.com

或直接访问目标网站是否连通:

curl -I www.google.com
  • 正常情况下,会返回一些请求头信息,而非超时等异常信息。

如果需要访问不允许使用代理的网站,可以配置代理外规则、使用 VPN、修改 hosts 文件绕过 DNS 解析和代理。

或者临时禁用代理配置,Linux 系统通过取消代理环境变量或使用 unset 命令来禁用:

unset http_proxy
unset https_proxy

问题

问题一failed to start v2ray-core: failed: no server is selected. please select at least one server

分析:错误表明 v2ray-core 启动失败,因为没有选择服务器。要解决这个问题,你需要在 v2raya 的配置中选择至少一个服务器。

解决:需要确保在 v2raya 管理界面已添加服务器内容,也可以检查 v2rayA 的配置文件(通常 /etc/v2raya/config.json )是否包含有效的服务器配置。如果已添加服务器,但未生效,添加服务器页面重新保存下,可能是配置文件被修改后,服务器数据没有重新生成。

本文由作者按照 CC BY 4.0 进行授权。