如何在Linux中使用V2ray-PAC文件实现科学上网

Author Avatar
bbyouli 6月 12, 2018
  • 在其它设备中阅读本文章

为什么要用V2ray?

根据V2ray项目官方文档介绍,V2ray主要优点如下:

  • 多协议支持
    V2Ray 原生支持 Socks、HTTP、Shadowsocks、VMess 等协议。
    在一个进程中可以配置不同的端口使用不同的协议进行通讯。
    通过不同的传入和传出协议组合,灵活转换通讯格式。
  • 可变传输载体
    上述协议均可使用 TLS、TCP、mKCP、WebSocket 等传输方式进行传输。
  • 灵活的路由
    通过内置的路由功能,V2Ray 可以灵活地实现选择性转发、直连或是阻止部分连接。

博主用它的主要原因是,自从ShadowsocksR停止更新后,博主尝试过Shadosocks,但是最近墙越发厉害,每天都会遇到TCP回程阻断,换了Brook也是一样的问题,无奈。
经过Google与询问朋友,发现V2ray可能是一个不错的选择。遂安装之,果然没令我失望,VMESS协议在规避GFW检测上出奇的好,即便仅仅使用默认的TCP模式,不加传输伪装,也依然正常工作,这是让人非常高兴的事!

提示:

  • 博主的电脑是Linux系统,日常工作娱乐也一并在Linux下完成,已经很久没碰过Windows了,故本篇文章仅讲述Linux系统下的安装与配置,其他系统请期待后续文章。
  • V2ray的服务端也是运行在Linux上的,故安装方式相同,只是配置文件有所区别。
  • 注意,约定俗成,需要以root权限执行的命令会在前面添加#标识符,其余命令添加$标识符,请在执行以#标识的命令时使用root账户或者使用sudo提权

如何安装V2ray?

Debian/Ubuntu 以及其他带有Systemd的发行版

值得高兴的是,V2ray项目官方已经为带有Systemd的发行版制作了一键安装脚本,你可以运行以下命令安装:
# bash <(curl -L -s https://install.direct/go.sh)

根据官方文档,此脚本会安装如下文件:

/usr/bin/v2ray/v2ray:V2Ray 程序;
/usr/bin/v2ray/v2ctl:V2Ray 工具;
/etc/v2ray/config.json:配置文件;
/usr/bin/v2ray/geoip.dat:IP 数据文件
/usr/bin/v2ray/geosite.dat:域名数据文件

在脚本执行完毕后,你可以运行如下命令检测是否安装成功
$ v2ray -version

check_install_v2ray.png

配置V2ray

服务器端配置

当V2ray安装完成后,会在/etc/v2ray目录下生成一个配置文件:

  • config.json

服务器端配置模板文件如下:

  {
  "log" : {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "warning"
  },
  "inbound": {
    "port": 10086, //V2Ray 监听的端口号,客户端会用到
    "protocol": "vmess", //入站协议,顾名思义,入站就是从10086端口进入的连接,所以这里的入站协议必须与客户端出站协议相同
    "settings": {
      "clients": [
        {
          "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297", //唯一的UUID,相当与Shadowsocks的密码,但比起单纯的密码,UUID更安全,服务端与客户端必须保持相同
          "level": 1,
          "alterId": 64 // 用于认证,理论越大对内存消耗越高,建议在30-100之间,服务端与客户端必须保持相同
        }
      ]
    }
  },
  "outbound": {
    "protocol": "freedom",
    "settings": {}
  },
  "outboundDetour": [
    {
       "protocol": "blackhole",
       "settings": {},
       "tag": "blocked"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
      "rules": [
      {
        "type": "field",
        "ip": [
          "0.0.0.0/8",
          "10.0.0.0/8",
          "100.64.0.0/10",
          "127.0.0.0/8",
          "169.254.0.0/16",
          "172.16.0.0/12",
          "192.0.0.0/24",
          "192.0.2.0/24",
          "192.168.0.0/16",
          "198.18.0.0/15",
          "198.51.100.0/24",
          "203.0.113.0/24",
          "::1/128",
          "fc00::/7",
          "fe80::/10"
          ],
          "outboundTag": "blocked"
        }
        ]
      }
    }
  }

这里的配置协议并不需要更改,UUID在安装时会自动生成,你只需要记下来就行了

执行:

# systemctl enable v2ray开启v2ray服务

# systemctl start v2ray 启动v2ray

客户端配置

客户端配置模板文件如下:

  {
    "log": {
      "loglevel": "warning"
    },
    "inbound": {
      "port": 1080,
      "listen": "127.0.0.1",
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": false,
        "ip": "127.0.0.1"
      }
    },
    "outbound": {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct"
    },
    "policy": {
      "levels": {
        "0": {"uplinkOnly": 0}
      }
    }
  }

修改内容如下:

{
  "log": {
    "loglevel": "warning"
  },
  "inbound": {
    "port": 1080, //本地端口
    "listen": "127.0.0.1",
    "protocol": "socks", // 入站协议
    "settings": {
      "auth": "noauth",
      "udp": true, //开启udp
    }
  },
  "outbound": {
    "protocol": "vmess", //将出战协议修改为vmess,与服务端保持相同
    "settings": {
      "vnext": [
        {
          "address": "serveraddr.com",// 服务器地址,请修改为你自己的服务器 ip 或域名 例如"113.113.113.113:10086"
          "port": 10086,  // 服务器端口
          "users": [
            {
              "id": "b831381d-6324-4d53-ad4f-8cda48b30811",  // 用户 ID,必须与服务器端配置相同
              "alterId": 64 // 此处的值也应当与服务器相同
            }]

        }]
      },
    "tag": "direct"
  },
  "policy": {
    "levels": {
      "0": {"uplinkOnly": 0}
    }
  }
}
}

执行:

# systemctl enable v2ray开启v2ray服务

# systemctl start v2ray 启动v2ray

检查配置文件正确性

v2ray自带了一个检查工具v2ray -test你可以使用它来检查配置文件是否出错
例如:
v2ray -test -config /etc/v2ray/config.json -test是测试模式 -config是读取配置文件,之后的路径是你的配置文件路径
如果你的配置文件无误,你会得到以下输出:
check_v2ray_config.png


如何生成PAC文件?

首先,我们需要安装pip 工具

# apt install python-pip

可以执行:
$ pip -V
查看pip是否成功安装
如无意外,你会看到如下内容:

check_install_pyhton-pip.png

之后执行:
# pip install genpac安装genpac,如无意外,你会看到如下内容:

install_genpac.png

之后执行:
$ genpac --format=pac -o auto.pac --pac-proxy="SOCKS5 127.0.0.1:1080"此命令执行后无输出代表执行成功,如有输出,请参照输出修改


如何设置系统代理为PAC模式?

打开系统设置的网络设置,你大概会看到如下设置(gnome桌面):

set_auto_proxy.png

点击网络代理右边的设置图标

set_auto_pac.png

选择代理模式为自动代理,在url输入框输入file://加上你的pac文件路径,以防万一,请使用绝对路径


享受自由的互联网吧

在你设置好了自动代理并且启动了V2ray之后,你就可以开始享受了

google.png

youtube.png


相关资源

V2ray项目地址

Genpac项目地址

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本文链接:https://bbyouli.xyz/posts/39ed3835.html