v2ray+cfw开启远程办公

摘要:本文主要介绍了v2ray的代理服务搭建方法,和cfw(也可以用其他的替代品clash verge)的配置,这样我们就可以在家也能连接公司网络自由办公+网上冲浪。

介绍

反正就是支持各种代理协议集合的一款软件,使用简单安全。

简单使用

服务端安装

我采用的是docker进行安装。下面的案例就是最简单的使用方式,开放9000端口的vmess协议的代理。

docker-compose.yml

yaml 复制代码
version: "3"
services:
  v2ray-proxy:
    image: teddysun/v2ray:5.19.0
    container_name: v2ray-proxy
    networks:
      - default
    volumes:
      - "./config.json:/etc/v2ray/config.json"
    ports:
      - "9000:9000"
networks:
  default:
    external:
      name: huzhihui

config.json

json 复制代码
{
  "inbounds": [
    {
      "port": 9000,
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
            "alterId": 0
          }
        ]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

说明

  • inbounds:表示服务端接收的流量
  • outbounds:表示服务端接收的流量的处理方式,这里的"protocol": "freedom"表示直接访问目的地址。
  • clients:配置表示的是客户端的连接,有多少个人就配置多少个,id需要配置不同,alterId都配置为0

客户端CFW使用

导入下面的配置选择规则模式即可使用。

配置文件local.yaml

yaml 复制代码
# http、https、socks5的代理端口
mixed-port: 7890
# restFul端口
external-controller: 127.0.0.1:55758
allow-lan: true
# 推荐使用规则模式
mode: rule
# 代理配置
proxies:
  - name: LC
    type: vmess
    network: tcp
    cipher: auto
    server: 192.168.137.191
    port: 9000
    tls: false
    udp: true
    uuid: b831381d-6324-4d53-ad4f-8cda48b30811
    alterId: 0
# 规则组,
proxy-groups:
  - name: 选择代理
    type: select
    proxies:
      - ✅ 手动选择
      - 🌐 突破锁区
  - name: ✅ 手动选择
    type: select
    proxies:
      - LC
  - name: 🌐 突破锁区
    type: select
    proxies:
      - LC
# 代理规则,我这样写就是 192.168.8.0,192.168.0.0 网段的所有IP都走代理
rules:
  - IP-CIDR,192.168.8.0/24,LC
  - IP-CIDR,192.168.0.0/24,LC

proxies配置说明

  • type:协议类型
  • network:网络模式
  • cipher:加密方式
  • server:服务器地址
  • port:服务器端口
  • tls:是否启用tls加密
  • udp:是否启用udp
  • uuid:和服务端配置的uuid要一致
  • alterId:和服务端配置的alterId要一致

高级使用方式

需要先看了简单使用的文档才来这里看。

# WebSocket + TLS + Web 配置

#服务器配置

这次 TLS 的配置将写入 Nginx/Caddy/Apache 配置中,由这些软件来监听 443 端口(443 比较常用,并非 443 不可),然后将流量转发到 V2Ray 的 WebSocket 所监听的内网端口(本例是 10000),V2Ray 服务器端不需要配置 TLS。

#服务器 V2Ray 配置
json 复制代码
{
  "inbounds": [
    {
      "port": 10000,
      "listen":"127.0.0.1",//只监听 127.0.0.1,避免除本机外的机器探测到开放了 10000 端口
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
            "alterId": 0
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/ray"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}
#证书配置

Nginx 配置和 Apache 配置中使用的是域名和证书使用 TLS 小节的举例,请替换成自己的。因为 Caddy 会自动申请证书并自动更新,所以使用 Caddy 不用指定证书、密钥。

注意: 如果你有的 VPS 上有架设网页,请使用 webroot 模式生成证书而不是 TLS 小节中提到的 standalone 模式。以下仅就两种模式的些微不同举例,相同部分参照 TLS 小节。本例中使用的是 ECC 证书,若要生成 RSA 证书,删去 --keylength ec-256--ecc 参数即可。详细请参考 acmesh-official/acme.sh (opens new window)

证书生成

css 复制代码
$ ~/.acme.sh/acme.sh --issue -d mydomain.me --webroot /path/to/webroot --keylength ec-256

安装证书和密钥

bash 复制代码
acme.sh --install-cert -d mydomain.com --ecc \
        --key-file       /etc/v2ray/v2ray.key \
        --fullchain-file /etc/v2ray/v2ray.crt \
        --reloadcmd     "service nginx force-reload"
#Nginx 配置
ruby 复制代码
server {
  listen 443 ssl;
  listen [::]:443 ssl;
  
  ssl_certificate       /etc/v2ray/v2ray.crt;
  ssl_certificate_key   /etc/v2ray/v2ray.key;
  ssl_session_timeout 1d;
  ssl_session_cache shared:MozSSL:10m;
  ssl_session_tickets off;
  
  ssl_protocols         TLSv1.2 TLSv1.3;
  ssl_ciphers           ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers off;
  
  server_name           mydomain.me;
  location /ray { # 与 V2Ray 配置中的 path 保持一致
    if ($http_upgrade != "websocket") { # WebSocket协商失败时返回404
        return 404;
    }
    proxy_redirect off;
    proxy_pass http://127.0.0.1:10000; # 假设WebSocket监听在环回地址的10000端口上
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    # Show real IP in v2ray access.log
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
相关推荐
前端付豪几秒前
3、Node.js异步编程彻底吃透
前端·后端·node.js
老胖闲聊2 分钟前
Flask 请求数据获取方法详解
后端·python·flask
舒一笑5 分钟前
一文简单记录打通K8s+Kibana流程如何启动(Windows下的Docker版本)
后端·elasticsearch·kibana
亦黑迷失6 分钟前
轻量级 Express 服务器:用 Pug 模板引擎实现动态参数传递
前端·javascript·后端
慧一居士15 分钟前
Kafka批量消费部分处理成功时的手动提交方案
分布式·后端·kafka
命中的缘分1 小时前
SpringCloud原理和机制
后端·spring·spring cloud
ErizJ1 小时前
Golang|分布式索引架构
开发语言·分布式·后端·架构·golang
.生产的驴1 小时前
SpringBoot 接口国际化i18n 多语言返回 中英文切换 全球化 语言切换
java·开发语言·spring boot·后端·前端框架
Howard_Stark1 小时前
Spring的BeanFactory和FactoryBean的区别
java·后端·spring
-曾牛1 小时前
Spring Boot中@RequestParam、@RequestBody、@PathVariable的区别与使用
java·spring boot·后端·intellij-idea·注解·spring boot 注解·混淆用法