截至2019年3月,搬瓦工的openVZ架构VPS全部下线,最低价$49.99/yr的服务器也卖光了。在vultr上为公司搭建的Shadowsocks服务又导致IP经常被封(正值x会期间),实在折腾不起,所以转投GCP(Google Cloud Platform)。

GCP使用外币信用卡开通可享受含300美元赠金的12个月免费试用,系统会在您的免费赠金用完或过期(二者取其先)后向您收取费用

创建和配置Computer Engine实例

创建实例

Computer Engine相当于阿里云的ECS,也就是虚拟机(服务器),可以根据需求选择配置。

如果身在中国大陆,区域最好选择asia-east1(台湾),地区选择asia-east1-a或asia-east1-c。机器类型根据需求选择,一般不作它用时最低配置即可。

choose-area-and-type

启动磁盘是预装的操作系统,按需选择,一般选择Ubuntu 18.04 LTS;勾选防火墙下的允许 HTTP 流量和允许 HTTPS 流量。

choose-os

配置实例

设置静态IP

在VPC网络-外部IP地址中,将临时IP类型改为静态。

setup-static-ip

设置防火墙规则

默认规则如下:

default-fire-wall

!注意:防火墙按需配置。千万不要按照某些教程所说,将“入站、出站,来源ip地址0.0.0.0/0、协议和端口全部允许”,这样会造成很大的安全隐患!

配置密码登录SSH

/etc/ssh/sshd_config中:

PasswordAuthentication yes
# 必须开启root登录,否则使用sudo时会报username is not in the sudoers file,加进文件也不管用。
PermitRootLogin yes
sudo /etc/init.d/ssh restart

安全问题

在如上配置(防火墙全部打开),并部署V2Ray后不久,收到了GCP的邮件,内容如下:

We have  recently detected that your Google Cloud Project XXX has been performing intrusion attempts against a third-party and appears to be violating our Terms of Service. Specifically, we detected bruteforcing attacks on 22 originating from xxx targeting more than 2309 IP addresses between 2019-03-18 09:20 and 2019-03-18 09:59 (Pacific Time). Please check the  traffic originating from all your instances and fix any other instances that may be impacted by this.

猜测是被破解了密码并挂了木马(当时root密码设置得非常简单)。根据要求做了申诉:

Critical-problem-on-gcp

通知邮件中给出的原因为我的实例向多个IP发起了攻击,我本人并未有这样的行为。查看实例状态监控发现,在所述时段确实有异常流量出入。推测可能是因为实例被他人攻破密码,进行了非法的操作。
我建立这个实例是为了搭建小型测试网站,发生这样的问题后,我会将实例重置,设置强密码,并且安装入侵保护软件。

部署和配置V2ray

V2ray官网的文档比较详细,但对初次部署和配置来说略显复杂且难懂。可以按照官网文档来安装,再按照V2Ray 白话文教程来配置。

下载安装

Linux

# 官方脚本安装
bash <(curl -L -s https://install.direct/go.sh)
# 启动
service v2ray start
# 更新
bash go.sh

Windows

V2Ray releases下载zip包解压即可。

配置文件

主要配置服务端的inbounds字段和客户端的outbounds字段、Shadowsocks协议和VMess协议,其它字段和协议保持安装后默认生成的即可。

服务端

// etc/v2ray/config.json
{
  "inbounds": [{
      "port": 2019, // V2Ray配置json文件支持注释
      "protocol": "shadowsocks",
      "settings": {
        "method": "aes-256-cfb",
        "ota": false,
        "password": "yourPwd"
      }
  },{
    "port": 28068,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "ce368dff-107c-4246-bcda-e7d",
          "level": 1,
          "alterId": 64
        }
      ]
    }
  }]
}

客户端

// config.json
{
  "outbounds": [
    {
      "protocol": "vmess", // 出口协议
      "settings": {
        "vnext": [
          {
            "address": "1.1.1.1", // 服务器IP或域名
            "port": 28068, // 服务器端口
            "users": [
              {
                "id": "ce368dff-107c-4246-bcda-e7d",  // 用户 ID,必须与服务器端配置相同
                "alterId": 64 // 此处的值也应当与服务器相同
              }
            ]
          }
        ]
      }
    },{
      "protocol": "shadowsocks",
      "settings": {
        "servers": [
          {
            "address": "1.1.1.1", // 服务器IP或域名
            "method": "aes-256-cfb", // Shadowsocks的加密方式
            "ota": true, // 是否开启 OTA,true为开启
            "password": "yourPwd",
            "port": 2019  // 服务器端口
          }
        ]
      }
    }]
}

关于协议配置顺序

  • V2Ray的inboundsoutbounds是按顺序优先匹配的,多个协议满足条件会以第一个匹配的为准。
  • 一般同时使用V2Ray客户端和V2Ray服务端,最好保持客户端outbounds的第一个协议和服务端inbounds的某一个协议相同。(严格来说V2Ray不区分客户端和服务端,只关注数据流向。)
  • 如使用V2Ray客户端连接Shadowsocks服务端,需在客户端将Shadowsocks协议配置为outbounds中第一个。
  • 如使用Shadowsocks客户端连接V2Ray服务端,需在服务端将Shadowsocks协议配置为inbounds中第一个。注意可能需配置"ota": false,参见Shadowsocks协议 1.1.3. 注意事项

Refer:
[1]使用Google Cloud Platform(GCP GCE)安装SSR+BBR教程

 TOC