使用Docker部署V2Ray

前言

之前写过一篇文章,在Ubuntu上来部署Shadowsocks来科学上网,随着科学上网的阻碍加大(防火墙加高),Shadowsocks的特征被识别等情况,速去了解到了新的代理工具,也就是现在要说的V2Ray

开始吧

先说好前提,这里使用的环境是在Docker上,利用docker compose来启动创建和启动容器,所以应该是所有能跑Docker的机器上都能这么做。另外如果这两个东西不了解需要去提前了解。或者你想要找其他的安装方式,可以参考官网的安装文档

其实使用Docker的话对新手算是引入了更大的复杂度,但是为了不影响主机的情况,使用Docker来部署和测试v2ray还是很有必要的

  1. V2Ray提供了两个V2Ray的镜像可以选择:

    • v2ray/official: 包含最新发布的版本,每周跟随新版本更新
    • v2ray/dev: 包含由最新的代码编译而成的程序文件,随代码库更新

    为了减小问题的可能性,使用official的镜像,地址在这

  2. 登录上代理服务器,安装好dockerdocker-compose,并且创建好docker-compose.yml,名字需要一样,或者你使用docker-compose的时候用-f命令来指定文件名也可以。文件内容如下:

    version: '3.1'
    
    services:
      v2ray:
      image: v2ray/official
      restart: always
      ports:
        - 23333:23333
      volumes:
        - ~/v2ray/config:/etc/v2ray
        - ~/v2ray/logs:/var/log/v2ray
      command: v2ray --config=/etc/v2ray/config.json
    
    • ports设置说明了服务器监听的端口是23333,映射在本地也是23333,左边是本地端口,右边是容器端口
    • 然后设置了两个volumes,用来把本地的磁盘数据共享到容器里,这样可以直接修本地配置然后重新启动就可以生效,也可以看历史日志。比如配置文件是放在了本地的~/v2ray/config下,这样在容器里的目录是/etc/v2ray,所以启动容器指定配置文件地址的时候用的是/etc/v2ray/config.json,后面我们的配置文件直接放在~/v2ray/config/config.json下就好了
  3. 创建好配置v2ray的文件,名字是config.json,放在~/v2ray/config下。另外这里推荐两个v2ray配置生成的网站这个这个

    {
    "log": {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "info"
    },
    "dns": {},
    "stats": {},
    "inbounds": [
        {
        "port": 23333,
        "listen": "0.0.0.0",
        "protocol": "vmess",
        "settings": {
            "clients": [
            {
                "id": "id一般是自动生成",
                "alterId": 64
            }
            ]
        },
        "streamSettings": {
            "network": "tcp",
            "security": "none",
            "tcpSettings": {
            "type": "none"
            }
        },
        "tag": "",
        "sniffing": {
            "enabled": true,
            "destOverride": [
            "http",
            "tls"
            ]
        }
        }
    ],
    "outbounds": [
        {
        "tag": "direct",
        "protocol": "freedom",
        "settings": {}
        },
        {
        "tag": "blocked",
        "protocol": "blackhole",
        "settings": {}
        }
    ],
    "routing": {
        "domainStrategy": "AsIs",
        "rules": [
        {
            "type": "field",
            "ip": [
            "geoip:private"
            ],
            "outboundTag": "blocked"
        }
        ]
    },
    "policy": {},
    "reverse": {},
    "transport": {}
    }
    
  4. 启动 使用命令docker-compose up -d来启动,然后使用docker logs container-id来查看日志,最后检查端口lsof -i:23333是否处于监听状态。后面有问题的话可以先看看v2ray的日志,后续再尝试检查v2ray的配置,docker-compose的配置

  5. 连接 这里使用的本地客户端是clash for windows,配置如下:

    port: 7890
    socks-port: 7891
    allow-lan: true
    mode: Rule
    log-level: silent
    external-controller: 0.0.0.0:9090
    Proxy:
    - name: mine
        type: vmess
        server: 服务器IP
        port: 23333
        uuid: 之前服务器上的uuid
        alterId: 64
        cipher: auto
    Proxy Group:
    - name: auto
        type: url-test
        proxies:
        - mine
        url: http://www.gstatic.com/generate_204
        interval: 300
    - name: Proxy
        type: select
        proxies:
        - mine
        - auto
    Rule:
    - MATCH,auto
    

具体的配置内容参考git文档,有一个This is an example configuration file,展开就能看到示例。或者你也可以在这里找到你自己喜欢的工具

最终的情况是你可以打开谷歌找到你想要的内容(废话)

总结

这次写着写着发现东西越来越多,到后面很多都是单纯的丢一下文档和配置了。发现现在的科学上网难度真是越来越大了,不由得感叹一下。

主要的内容:

  • v2ray配置和使用
  • clash配置和使用
  • docker的安装使用和docker-compose配置