v2ray抗封锁最优配置 – 扉启博客

v2ray抗封锁最优配置 – 扉启博客

长期不发文章,博客都快长草了,今天发一篇关于v2ray的配置的文章,算作是对近期使用v2ray的心得体会。

最近试过了下列多种v2ray组合,直接给出结论,第四个”websocket + TLS + nginx/caddy”是最后留下来用的,抗封锁最好。

  • vmess
  • vmess + http
  • TLS + http2
  • websocket + TLS + nginx/caddy

从联通的上网记录上来看,代理流量被识别为其他手机应用,可以认为是一个正常的APP通讯。
v2ray抗封锁最优配置

首先是关于最优抗封锁,抗qos干扰的v2ray组合,一定是websocket + TLS + nginx/caddy,没有之一。
v2ray白话文教程中关于http伪装的章节里提到了,不建议用http伪装。因为在没有TLS加密的前提下,这种伪装的流量很容易被识破,到时候被封了可就哭了。而使用websock+TLS+nginx/caddy伪装的好处:

  • 从外面看完全属于通过443端口访问正常的HTTPS网站
  • websocket的path(比如教程中的/ray)被TLS加密不能被探测到
  • TLS不是伪装,不是混淆,是真正的HTTPS,用途合理永远不能被封锁

下面分别是服务器端和客户端的配置文件。

服务器端 /etc/v2ray/config.json

v2ray监听10000端口,如果开启了防火墙,记得允许打开10000端口。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

{

  “inbound”: {

    “port”: 10000,

    “listen”:“127.0.0.1”,

    “protocol”: “vmess”,

    “settings”: {

      “clients”: [

        {

          “id”: “c196ecf7-3737-41ae-91ea-b0b98e1e122c”,

          “alterId”: 64

        }

      ]

    },

    “streamSettings”: {

      “network”: “ws”,

      “wsSettings”: {

      “path”: “/ray”

      }

    }

  },

  “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”

        }

      ]

    }

  }

}

服务器端nginx/caddy配置

nginx配置文件,假设v2ray服务绑定的域名是v2ray.example.com,已正确解析到服务器,防火墙需开启443端口。
HTTPS证书需事先申请好,参考本站文章申请AlwaysOnSSL免费一年证书
前两个月Let’s Encrypt刚提供申请泛域名证书,如果手头有多个v2ray节点都需要设置websocket+TLS+nginx方式代理,最好统一用泛域名比较好管理。
网上关于Let’s Encrypt泛域名证书的申请教程很多,这里参考了这一篇,需要特别注意的是DNS解析服务需要支持API密钥,本人是放到CloudFlare解析。
nginx网站配置的默认路径 /usr/local/nginx/conf/vhost/v2ray.example.com.conf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

server {

  listen  443 ssl;

  ssl on;

  ssl_certificate       /root/v2ray.example.com.ssl/v2ray.example.com.pem; #fullchain证书路径

  ssl_certificate_key   /root/v2ray.example.com.ssl/v2ray.example.com.key; #key证书路径

  ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;

  ssl_ciphers           HIGH:!aNULL:!MD5;

  server_name           v2ray.example.com;

        location /ray {

        proxy_redirect off;

        proxy_pass http://127.0.0.1:10000;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection “upgrade”;

        proxy_set_header Host $http_host;

        }

}

Caddy安装过程参照逗逼大佬的文章Caddy一键安装脚本,然后编辑 /etc/caddy/Caddyfile,写入一下内容

v2ray.example.com

{

  log /var/log/caddy.log

  proxy /ray localhost:10000 {

    websocket

    header_upstream Origin

  }

}

可以看出来,Caddy的服务器配置比nginx简单许多,而且不需要手动申请配置HTTPS证书,Caddy会自动申请Let’s Encrypt证书帮你搞定一切。

客户端配置

客户端配置文件要求UUID, alterID,域名,path填写地和服务端一样

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

{

  “inbound”: {

    “port”: 1080,

    “listen”: “127.0.0.1”,

    “protocol”: “socks”,

    “settings”: {

      “auth”: “noauth”,

      “udp”: false

    }

  },

  “outbound”: {

    “protocol”: “vmess”,

    “settings”: {

      “vnext”: [

        {

          “address”: v2ray.example.com,

          “port”: 443,

          “users”: [

            {

              “id”: “c196ecf7-3737-41ae-91ea-b0b98e1e122c”,

              “alterId”: 64

            }

          ]

        }

      ]

    },

    “streamSettings”: {

      “network”: “ws”,

      “security”: “tls”,

      “tlsSettings”: {

        “serverName”: v2ray.example.com

      },

      “wsSettings”: {

        “path”: “/ray”

      }

    }

  },

  “outboundDetour”: [

    {

      “protocol”: “freedom”,

      “settings”: {},

      “tag”: “direct”

    }

  ],

  “routing”: {

    “strategy”: “rules”,

    “settings”: {

      “domainStrategy”: “IPIfNonMatch”,

      “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”: “direct”

        },

        {

          “type”: “chinasites”,

          “outboundTag”: “direct”

        },

        {

          “type”: “chinaip”,

          “outboundTag”: “direct”

        }

      ]

    }

  }

}

Windows/Android/iOS客户端推荐

在Windows/Android/iOS平台上用过多种客户端界面,最后留下来地分别是

  • Windows: V2rayN 点评:配置支持手动填写和加载json文件,支持服务器批量测速
  • Android: BifrostV 点评:感觉比v2rayNg好一点,能方便配置内置DNS
  • iOs: Shadowrocket 点评:著名的小火箭,支持ss和vmess多种协议,iOS上最佳.

v2ray客户端负载均衡配置

假如有多台v2ray服务端,如何体验到负载均衡在几台服务器间无缝切换的快感,如果享受高可用高稳定的优点,见这一篇文章如何配置v2ray负载均衡

v2ray服务端一键安装

最后推荐一个v2ray一键安装脚本,来源v2ray-install.ml
好处是不用手动配置,而且会给tls绑定的域名自动配置一个静态站点,看起来就像是真的网站一样。
目前只支持debian, ubuntu,不支持CentOS

curl O https://download.v2rayinstall.ml/v2raygo.sh && bash v2raygo.sh