分类目录归档:教程

配置 V2Ray 过程个人记录

一、域名注册与解析

使用 TLS 的话,必须拥有一个域名并解析到你的 VPS 的 ip 上去。

注册

免费域名或者付费域名都可以。

免费域名可以在这里申请,后缀可以使用.tk、.ml、.ga、.cf、.gq,其实如果不做网站的话,具体使用什么域名并不重要,我自己在用的是某个 .tk 域名。 最好使用国外常见的邮箱服务如 Gmail、Hotmail 等注册。

付费域名我个人则推荐使用 Porkbun,这个网站可注册的后缀非常多,部分后缀无论是注册费用还是续费价格都非常低廉(可以关注带着“Sale!”标志的那些,如果希望长期持有一个域名的话,还请更多关注续费 renewal 的费用,部分域名后缀注册费用较低但续费并不便宜)。我就在此网站注册了.icu 和 .men 的几个域名玩。不过 Porkbun 并不支持支付宝微信付款渠道,可以用 PayPal 和国际信用卡以及数字货币付款。

解析

后期如果需要套 CDN 的话(这个后面会说) ,需要用到 Cloudflare 。所以推荐使用 Cloudflare 的解析服务:

  1. 注册 Cloudflare 账号
  2. 在域名注册商处将域名的 Nameservers 设置为 bayan.ns.cloudflare.comsima.ns.cloudflare.com
  3. 点击此页面上的 +Add a Site 按钮;
  4. 填入注册的域名,点击下方 Add site 按钮;
  5. 选择第一个免费的计划即可,点击 Confirm plan 按钮;
  6. 后面的步骤自动进行,如果第2步正确设置的话,很快就可以在这里看到域名的状态是Active,完成后点击域名进入设置页面,选择 DNS ,点击页面中的 +Add record ,设置 A记录 将域名指向你的服务器 ip,设置完成后应如下图(请注意后面的 Proxy status 此时应该是与图中一致的状态):

DNS 解析需要一段时间但并不会太长,可以在命令行窗口执行 ipconfig /flushdns 命令刷新本地 DNS 缓存,ping 域名看是否已经解析到了你服务器的 ip 上。等待解析的过程中可以先进行后面的步骤,并不会有影响。

二、服务器相关配置

我使用的服务器系统是 Debian 9,推荐使用较新的系统。以下命令是是使用普通用户操作的,如果使用 root 用户,则去掉命令中的 sudo

安装 Apache

在服务器依次执行下列指令:

sudo apt-get update
sudo apt-get -y install apache2

安装 v2ray

依次执行下列指令(详细说明可参考新白话文教程):

wget https://install.direct/go.sh
sudo bash go.sh

此处请注意记下屏幕上出现的 UUID,然后继续执行:

sudo systemctl start v2ray

申请证书

确定域名已经解析到你的服务器 ip 之后,依次执行下列指令(详细说明请参考新白话文教程):

sudo apt-get -y install netcat
curl  https://get.acme.sh | sh
source ~/.bashrc
sudo ~/.acme.sh/acme.sh --issue -d 你的域名 --standalone -k ec-256

将证书安装到 /etc/v2ray 中:

sudo ~/.acme.sh/acme.sh --installcert -d 你的域名 --fullchainpath /etc/v2ray/v2ray.crt --keypath /etc/v2ray/v2ray.key --ecc

三、v2ray 服务器端配置

修改 /etc/v2ray/config.json 文件(可以使用nano /etc/v2ray/config.json 命令直接在ssh客户端里面修改,也可以用有权限的用户登陆 FTP 直接修改文件),我直接贴出我的配置,请注意其中 id 处填你自己在安装 v2ray 之后生成的那个 UUID(不要去掉引号):

{
  "inbounds": [
    {
      "port": 10000,
      "listen":"127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "此处填你自己的ID",
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
        "path": "/ray"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

重启 v2ray:

systemctl start v2ray

四、Apache 配置

激活相关模块

需要激活相关模块,依次执行下列指令:

cd /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/proxy_http.load proxy_http.load
sudo ln -s /etc/apache2/mods-available/proxy.load proxy.load

继续执行,以下命令可能会提示重启 Apache 之后生效,可以等所有命令都执行之后一次性重启:

sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo a2enmod headers

重启 Apache:

sudo systemctl restart apache2

配置 Apache

修改 /etc/apache2/sites-available/default-ssl.conf 文件,同样我直接贴出我的配置(注意两处需要修改为你的域名):

<IfModule mod_ssl.c>
	<VirtualHost *:443>
			ServerName 你的域名
			ServerAlias 你的域名
			SSLEngine On

			RewriteEngine On
			  RewriteCond %{HTTP:Upgrade} =websocket [NC]
			 RewriteRule /(.*)           ws://localhost:10000/$1 [P,L]
			RewriteCond %{HTTP:Upgrade} !=websocket [NC]
			RewriteRule /(.*)           http://localhost:10000/$1 [P,L]


			SSLProxyEngine On
			Proxypass /ray http://127.0.0.1:10000
			ProxyPassReverse /ray http://127.0.0.1:10000

			SSLCertificateFile /etc/v2ray/v2ray.crt
			SSLCertificateKeyFile /etc/v2ray/v2ray.key

	</VirtualHost>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

再次执行 sudo systemctl restart apache2 重启 Apache。

五、客户端配置

个人推荐使用 v2rayN ,贴出我自己的配置:

如果使用其他客户端,则可参考以下配置(即 config.json 文件):

{
  "inbounds": [
    {
      "port": 1080,
      "listen": "127.0.0.1",
      "protocol": "socks",
      "sniffing": {
        "enabled": false,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth",
        "udp": false
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "你的域名",
            "port": 443,
            "users": [
              {
                "id": "你的ID",
                "alterId": 64
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "wsSettings": {
          "path": "/ray"
        }
      }
    }
  ]
}

此时应该就可以用了,下面是几个附加的设置。

六、BBR加速

详细内容请参考《BBR安装教程:Debian9、CentOS》此文,简单地说就是依次执行下列指令:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr

如果显示 tcp_bbr +数字 说明 BBR 已开启成功。

七、CDN

前文提到的 CDN 是指利用 Cloudflare 位于全球的服务器给访问加速——当然这是本来正经的用途——如果用于翻墙的话,作用有另外两条(据我所知的两条,可能还有别的用途吧):

  1. 隐藏你服务器的真实 ip。如果域名套上了 CDN,则只能追踪到 Cloudflare 的服务器 ip,别人无法获取你服务器的 ip,一定程度上保证安全。
  2. 如果你的服务器 ip 被墙,则可通过此种方式曲线救国,保证服务器仍然可以继续通过 TLS+CDN 继续用作翻墙用途(当然 ssh 是没法直接连接了)。

但是这么好的事情不可能没有缺点:这样做的话,速度有可能会打折扣(但是如果本身国内到VPS连接情况不够理想,那么还是值得使用 CDN 的,至少不会大规模丢包)。需要在服务器 ip 的安全和速度之间做出权衡。

方法很简单,上面设置域名解析的页面DNS 设置下,点击 Proxy status 下面的云朵图标使之变成橘黄色,之后在 SSL/TLS 设置中选择 Full ,即页面中的提示为 Your SSL/TLS encryption mode is Full ,就完成了。

主要参考:

  1. V2Ray 配置指南 | 新 V2Ray 白话文指南 https://guide.v2fly.org/
  2. BBR安装教程:Debian9、CentOS https://fangeqiang.com/2012.html