VPS 初体验(一)基础配置

缘起

去年刚开始捣鼓静态博客的时候,就有买一台云服务器来托管博客的想法,但需求又不是那么强烈。GitHub Pages 虽然在国内访问确实龟速,还时不时会挂掉。但是一想到又要额外花一笔钱和精力在上面又有点觉得不值,反正博客只是自己个人看看,访问速度慢点就慢点吧,实在不行再去套一层 CDN 试试,再加上后来有段时间博客没怎么打理,买云服务器的想法也就不了了之了。

最近又萌生了买云服务器的想法。

一是因为要准备找工作,简历上要给出项目的在线预览地址,这时再用 GitHub Pages 来展示就不太好了,说不定面试官预览的时候半天刷新不出来甚至就挂掉了,毕竟 GitHub 的网络不确定性太大了,与其挑战面试官的耐心还是多花几个钱提升下访问速度。

二是最近科学上网频繁,免费的代理工具虽白嫖很爽,但体验普遍都不怎么样,速度差且不稳定,有时候加载个搜索结果都要好几秒,看高清视频就更不用想了,不停的卡顿浪费时间和心情。再者流量要经过别人服务器,存在一定安全隐患,用起来总归是有点不安心。

注意:代理提供方完全有能力收集用户的全部上网信息(例如访问者的 IP,目标的的域名或者 IP,访问时间等),甚至使用深度包检测提取 HTTP 明文流量中的户名和密码,然后将数据专卖给黑产。这并不是杞人忧天,此前已有先例。不要以为自己作为普通人的隐私数据没有什么价值不会被盯上。举个简单的例子,比如你通过代理工具上网注册了某平台的足彩网站,一段时间后就可能别的平台的博彩广告找到你,到底是代理提供方还是注册平台贩卖了你的电话不得而知,这个例子只是为了说明个人的隐私完全是有利可图的。总之就是时刻注意隐私泄漏问题,尽可能不要在不可信的信道传输自己的敏感信息。特别是那些打着永久免费旗号软件中还没有广告插入的的代理提供方需要格外注意。天下没有免费的午餐,有时候免费的反而是最贵的。即使使用的是付费服务就并不代表就没有风险,特别是一些可能随时跑路小机场,本来就和灰黑产走的很近,滥权也不奇怪。使用国内外知名大厂的 VPS 自建代理服务器可以把泄露风险降到最低。这些大厂和国内三大运营商比某些无良机场主值得信赖得多,只要不滥用,一般不会有被请喝茶的风险

三是除了搭博客外还有其他可能用得到服务器的地方,例如后端接口项目,内网穿透,搭建图床。

尽管入坑的理由又更加充足,但还是纠结了两天。如果决定入坑,不只是下单付款那么简单,有太多知识要学习了,肯定要花不少时间,准备秋招的时间就更少了。

考虑再三,终于下定决心购买了年轻人的第一台 VPS,开启了 VPS 的折腾之路。

购买 VPS

关于 VPS 的选购其实个人不做任何产品推荐,因为我也才刚刚入坑,我真正上手测试过的 VPS 就两家,不像很多大佬对很多自己就有几十上百台 VPS 同时在线,对不同厂商的套餐类型线路都如数家珍。这里仅仅谈一谈自己选购的思路。

根据前面的提到我对 VPS 的几点需求(一句话说就是托管博客和前端项目以及搭建代理),列出了下面几条筛选条件:

  1. 服务器地点一定要是非大陆,一是备案麻烦,二是有爬墙需求。
  2. 离大陆越近越好,最好直接接壤,延迟会低一点。结合上第 1 条其实可选择的地点范围就已经出来了:香港、韩国、日本、俄罗斯。不知为什么我对海底光缆充满了不信任,但其实只要线路优质,跨洋距离远也不是什么大问题,延迟高一点关系但只要不丢包体验一样也很好。
  3. 对 CPU 性能,内存、硬盘无要求,性能再弱鸡跑个静态网页和代理服务器应该没什么问题。
  4. 带宽能看流畅观看 1080P 视频就可以,10 Mbps 就满足了,再个人而言高带宽的意义不是很大。国内的服务器带宽贵的离谱,普遍都是 1M 2M 小水管,而国外的 VPS 带宽往往都很足,动辄上 G 的带宽(尽管是共享带宽),平常时间可以跑出几百兆的下载速度,但是毕竟国内总的出口带宽有限,一到晚上高峰期体验就会急剧下降,除非是选择像 CN2 GIA 那样的优质线路,注意优质线路的同时也意味着价格可能会成倍上涨。
  5. 老牌厂商,不会有跑路和隐私泄漏风险。

对比国内外知名厂商的一些产品套餐,结合群里大佬们给出的意见,最后选择腾讯轻量应用服务器香港节点 24 元每月的套餐:CPU - 1核,内存 - 1GB,系统盘 - SSD 25GB,流量包 - 1024 GB/月(峰值带宽 30 Mbps)。如果以后性能不够可以在原套餐上无缝升级,无需迁移备份。如果选择绑定代理的话实际到手价格还能更优惠一点。

腾讯云在国内的云厂商中还算比较良心了,虽然这款目前已经不走 CN2 GIA 线路了,但是线路质量也还算不错,几天轻度使用下来也没高峰期的也没感到什么卡顿。这款 24 元套餐性价比在国内厂商中算很高了,基本每天开售十几分钟就售罄了(腾讯轻量云是每天十点补货)。阿里云有款同配置同价格的套餐,传说腾讯轻量云的线路会好点。

云主机,云服务器,虚拟主机在大多数场景几个名词可以相互替换,不用严格去区分概念,都可以简单理解为一台带公网 IP 的 7 * 24 小时运行的计算机。但注意要和网页主机(Web Host)区分,网页主机实际上只是提供云空间来存储静态网页或者例如 WordPress 这种特定的动态网站,使用方向非常受限。VPS(Virtual Private Server)更喜欢用来称呼个人或着小企业用的小型云服务器,相比传统的云服务器,VPS 的硬件规模更小,价格也亲民许多,当然性能也会有很大差距。

腾讯云官方对这两种服务器的的为例:

对比 云服务器 CVM,轻量应用服务器 TencentCloud Lighthouse 更聚焦于中小企业、开发者、云计算入门者、学生等用户群体。相比云服务器 CVM 更加简单易用,精简了云服务器 CVM 的高阶概念及功能,提供高带宽流量包并以高性价比的套餐形式整体售卖基础云资源,将热门开源软件融合打包实现一键构建应用,更适合于支撑中小型网站、Web 应用、博客、论坛、小程序/小游戏、电商、云盘/图床、云端开发测试和学习环境等轻量级、低负载且访问量适中的应用场景。

国外的有不少专门面对个人 VPS 厂商,而在国内的云服务商中这类产品往往不直接叫 VPS,比如阿里云、腾讯云产品中叫做轻量应用服务器,有的厂商叫经典云服务器(相对的是弹性云服务器)。在购买国内厂商的 VPS 一定要主要和传统的云服务器的区别开,传统的云服务器往往月费价格价格都成百上千,而 VPS 则会便宜不少。

基本测试

购买完主机后第一步就应该对主机进行一些基础的测试,第一时间发现可能的问题,比如 IP 被墙无法连接硬件性能和购买页面的宣传指标相差太多。发现异常一定要联系客服退款重开或者更换其他产品,不要等到最后环境搭了半天白忙活一场。

  1. 网络连通性测试:首先在本地 ping 远程的主机看是否能够 ping 通,如果不能 ping 通说明该台 VPS 的 IP 地址已经被墙了,就需要退款重开一台新的机器,或者部分云厂商支持直接更换 IP。一般大厂的 VPS 不会新开到 IP 被墙的机子,但是国外的 VPS 厂商 IP 池中有不少都已经被国人给玩坏了,运气差一点就很容易中奖。

    1
    ping 43.135.29.251
  2. 硬件性能测试:在服务器控制台直接登录到远程主机,然后运行以下脚本查看 VPS 的 Linux 系统信息,还可以查看服务器配置信息,测试网络带宽及硬盘读写速率你可以

    1
    wget -qO- bench.sh | bash

    这是在腾讯轻量应用服务器香港节点 24 元每月套餐得到的结果。可以看到上传速度没有虚标,30 Mbps 的带宽可以跑满,硬盘连续读写 100 多 MB 每秒,虽然购买页面写着是 SSD 硬盘,但是实际也就是机械硬盘的水平,不过也比一些读写个位数的石头硬盘强太多了,考虑到价格完全可以接受。
    image-20211015111557658

    下面是腾讯轻量应用服务器香港节点 34 元每月套餐的测试结果,可以做个对比。
    1c2g50GB bench

  3. 路由测试:很多人最关心 VPS 的去程回程路由走的什么线路,线路确实可以一定程度上决定网络质量,但是和自己的的网络供应商、物理位置也有着很大的关系,可能同一台机子不同人的访问速度截然不同。路由线路只能做参考,自己平日特别是晚上网络高峰期的使用感受更能说明网络质量的好坏,没必要过分追捧 CN2 GIA 线路,当让如果有钱任性请无脑上 GIA。
    以下路由测试均是基本的网络环境(湖北武汉,电信校园网)。
    去程测试,在本机运行以下命令:

    1
    tracert 43.135.29.251

    去程路由结果:
    image-20211015112415667

    回程测试,在服务器控制台 WebShell 运行以下命令:

    1
    mtr 27.18.195.81 -r

    上面的 27.18.195.81 地址是本人访问互联网的显示的公网 IP 地址,回程路由结果:
    image-20211015113516101

    可以看到去程回程都走的是 AS4134,即电信传统的 163 骨干网,没有经过 CN 2 GIA 节点。目前腾讯轻量服务器香港地区的 VPS 据说只有少量机器仍然是 CN 2 GIA 路线了,询问客服得到的回答线路是随机的,猜测可能和开到的 VPS 的 IP 有关。

    如果关心多地的访问情况可以在 IPIP 上使用 TraceRoute 工具查看不同地域节点去程线路,运行下面的网络回程测试脚本(需要 root 权限)查看不同地点的回程路线:

    1
    curl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh|bash

    多地回程路由结果:

    image-20211015152457648

域名解析

如果想使用自己注册的域名来访问主机,需要先在 DNS 解析服务商添加解析记录。

注意:这一步对连接 VPS 不是必须的,即使自己没有域名也可以通过 IP 地址来访问主机。

此前我的个人域名是注册在 NameSilo 名下,NameSilo 的自带的解析服务要接近一个小时才在国内生效,并且域名管理页面实在是太卡了。而使用 DNSPod 在国内几分钟解析记录就更新生效了,后台管理界面和流畅度也比 NameSilo 好太多。于是决定将将 DNS 域名解析服务从 NameSilo 迁移到腾讯 DNSPod,具体迁移步骤参见腾讯的官方文档: 其他注册商域名修改 DNS

迁移之后在 NameSilo 域名管理后台看到的效果:

Image

注意:域名的管理权和解析权是独立的,可以仅仅把迁移解析权,管理权仍然在原来的注册商。

进入腾讯 DNS 解析 DNSPod 控制台,添加域名,然后设置解析记录。

image-20211015100440630

添加一条 @ 类型的解析记录,把自己的域名直接指向 VPS 的 IP 地址。

image-20211015115836550

过一段时间后,使用 nslookup 命令来看解析记录是否生效。如果十分钟过去还没有生效,尝试使用 ipconfig /flushdns 命令刷新一下本地的 DNS 缓存或者重启路由器。

image-20211015115920642

重置密码

部分 VPS 厂商在新开通服务器时会为 root 用户自动生成了一串随机的密码,可以直接使用 root 用户登录。

而腾讯云中新开通的轻量应用服务器要先在控制台重置 root 用户的密码才能切换到 root 用户。重置密码需要在关机状态,可以先手动关机或者直接强制关机。

image-20211015102234813

image-20211015102715107

重置完密码就可以使用 SSH 客户端来登录 VPS 了,Windows 10 自带 SSH 客户端,直接在终端中输入以下命令即可向 VPS 发出登录请求。

1
ssh [email protected]

在第一次连接陌生的 VPS 主机会发出确认提示,输入 yes 然后回车。接着输入自己刚才重置的 root 用户密码即可以 root 用户身份连接上 VPS。关于 SSH 的更多配置可以参考后面的安全设置这一节以及我的另一篇博客使用 SSH 连接远程主机

image-20211015122821186

软件安装

下面中的操作都以 CentOS 7.6 为例,如果是 Debian 系列的 Linux 发行版,请将下面命令中的 yumapt-get 替换。如果是较老版本的 CentOS 先安装 wget 工具。

1
yum -y install wget 
  1. 更新系统和软件包。

    1
    yum update -y

    新开的机器建第一步先将系统内核和软件包更新到最新,环境搭建好后不再轻易更新。在更新完毕清理安装包的时候,清理结束后可能会卡住不会自动退出,直接手动 ctrl + c 结束就好。

  2. 安装 BBRplus 加速。

    BBR 是 Google 提出的一种新型拥塞控制算法,可以使 Linux 服务器显著地提高吞吐量和减少 TCP 连接的延迟。

    简单理解就是开启 BBR 可以提高机器的网络速度,从 Linux 4.9 版开始,内核就自带了该功能(但是部分发行版需要手动启用 BBR 加速功能)。

    依次输入以下命令下载并运行一键安装BBR/暴力BBR/魔改BBR/BBRplus/锐速 (Lotserver)四合一的脚本。

    1
    2
    3
    wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"
    chmod +x tcp.sh
    ./tcp.sh

    image-20211015134335662

    输入 2 回车,安装 BBRplus 内核。BBRplus 是在原版 BBR 基础上的改进版本,加速效果更好。据说 BBR 魔改版和锐速的加速效果更好,但可能存在兼容和稳定性问题,本人也没有具体在测试过。

    安装成功会提示是否现在重启机器。输入 y 确认现在重启。

    重启完毕后重新登录 VPS,输入以下命令再次运行该脚本,

    1
    ./tcp.sh

    输入 7 回车,提示 BBRplus 启动成功!

    输入下面的命令查看 brr 内核模块。

    1
    lsmod | grep bbr

    image-20211015134842826

  3. 安装宝塔 Linux 面板。

    如果对 Linux 系统不熟悉的,强烈建议装一个可视化图形化面板,大大降低了 Linux 系统的上手难度。无论是装一些常用的软件,修改服务配置,编辑配置文件,查看系统负载情况。都可以直接通过面板操作。当然,还是有些配置必须通过 SSH 登录服务器操作,因此熟悉下常用的 Linux 命令也是很有必要的。

    安装宝塔需要确保当前是较为干净的操作系统,VPS 最好此前没有安装过 Apache / Nginx / php / MySQL 等软件,否则很可能产生冲突。

    1
    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh    

    安装成功后,末尾给出访问面板的入口地址以及初始的用户名和密码,这些都是随机生成的,也可以之后手动修改。如果忘记了初始的默认账户和密码可以使用下面命令查看。

    1
    bt default

    image-20211015142221381

    国内的大部分云产品都默认有安全组,在访问面板前需要去服务器控制台放行宝塔默认的 8888 端口,同样以腾讯云轻量应用服务器为例:

    image-20211015141122173

    放行成功后就可以通过网址来默认入口地址访问宝塔面板了,输入初始的默认账户和密码,同意用户协议就进入了面板主界面。

    最新的宝塔面板强制用户绑定宝塔账户才能使用,如果不想绑定可以使用运行下面的命令绕过宝塔的登录要求。

    1
    echo "{\"uid\":1000,\"username\":\"admin\",\"serverid\":1}" > /www/server/panel/data/userInfo.json

    注意:因为宝塔面板官方的限制方法也在不断的变更,可能有些绕过登录的方法已经失效,截止 2021.10 使用该方法有效。

    在左侧的软件商店搜索下载宝塔跑分跑个分看一看。这是在腾讯轻量应用服务器香港节点 24 元每月套餐得到的跑分结果。

    image-20211015143825173

    下面是腾讯轻量应用服务器香港节点 34 元每月套餐的跑分结果,可以做个对比。不过对比也就图一乐,分高也不能说明性能就一定更强,因为都是虚拟出来的资源,也和跑分时宿主服务器上别的虚拟服务器资源抢占情况有关。

    Image

安全设置

更改 sshd 默认端口

  1. 使用 nano 编辑器打开 SSH 服务端程序 sshd 的配置文件

    1
    nano /etc/ssh/sshd_config

    对新手来说 nano 比 vi 编辑器更加友好,常用的操作快捷键都列在最下面,如果没有耐心学习 vi,nano 也是个不错的选择。

  2. 找到 #Port 22 这一行,将 22 修改成修改成你想替换的端口,建议把它改成一个大于1024小于65535的整数,但是注意不要和其他常用软件的默认端口冲突,例如 MySQL 服务的 3306 端口。# 开头的表示注释,有一些注释代表了 sshd 所采用的默认值。因此改完端口号后别忘了去掉注释符号 #,否则并不会真正生效。
    image-20211015145006778

  3. ctrl + o 然后回车确认保存配置文件,ctrl + x 退出 nano 编辑器。

  4. 重启 SSH 服务端程序使端口生效。

    1
    sudo service sshd restart
  5. 和之前放行宝塔 8888 端口一样,在服务器的控制台防火墙放行 2222端口,除此之外还要在宝塔面板的安全选项卡中放行 2222 端口。因为安装了宝塔后相当于有两层防火墙,一层为腾讯服务器自带的,一层是宝塔中的安全控制。
    image-20211015145909664

  6. 在客户端打开一个新的 SSH 客户端来测试新端口能否连接成功。

    1
    ssh [email protected] -p 2222

    注意:不要直接在原来的终端窗口中测试,使用新端口登录测试成功,确保修改后的端口可用,再关闭原来的已经连接成功的 SSH 客户端,防止和服务器失联。

创建非 root 用户

直接使用 root 用户进行操作方便是方便,但是 root 用户的权限太大,说不定某些时候就误操作了。建议创建一个普通用户,需要使用 root 权限的再使用 su root 切换 root 用户或者使用 sudo 来赋予某些操作 root 权限。

下面的命令添加一个普通用户,名为 admin。

1
adduser admin

给 admin 用户设置密码。

1
passwd admin

sudo 工具能够给 admin 的操作临时添加上 root 权限,较新 Linux 发行版已经集成了该工具可以直接使用,如果没有可以使用下面的命令安装。

1
yum install sudo

输入下面的命令编辑 sudo 的配置文件,让 admin 用户也能拥有 root 权限。

1
visudo

在配置文件末尾添加 vpsadmin ALL=(ALL:ALL) ALL 或者 vpsadmin ALL=(ALL) NOPASSWD: ALL 然后保存退出,前者每次使用 sudo 需要输入 admin 的密码进行确认,后者不需要输入任何密码。选择哪种取决于你是想要更安全还是更方便。

禁止 root 登录和密码登录

  1. 使用 nano 编辑器打开 SSH 服务端程序 sshd 的配置文件。

    1
    nano /etc/ssh/sshd_config

    找到 #PermitRootLogin yes 这一行,然后把它后面的设定值改为 no 并去掉 #,这将会禁止 root 用户通过 SSH 的方式登录。找到 #PasswordAuthentication yes 这一行,同样把它后面的设定值改为 no,并去掉 # 保存退出,将会禁止使用密码登录,只能使用公钥登录。请确保已经正确的配置了公钥,请参考使用 SSH 客户端登录远程主机

    修改完保存文件退出。

  2. 重启 SSH 服务端程序使端口生效。

    1
    sudo service sshd restart
  3. 在客户端打开一个新的 SSH 客户端以 root 用户登录。

    1
    ssh [email protected] -p 2222

    仍会提示输入密码,但是即使密码输入正确也无法登录成功。

  4. 可以通过前面创建的 admin 用户登录,之后可以使用 su root 切换到 root 用户。

    1
    ssh [email protected] -p 2222

更改宝塔的默认设置

修改宝塔面板的默认端口,也可以在该页面修改宝塔的入口地址和登录账号和密码。修改完端口后务必记得在服务器的控制台防火墙放行新的端口。

image-20211015173049867

创建快照

如果以上都设置成功,建议在当前状态生成一份快照,备份 VPS 当前的状态,之后如果损坏了某些环境又修复不好,就可以直接回滚到快照,而不必重置系统再重新做一遍这些基本设置。

大多数厂商都在控制台中提供了快照功能,以腾讯云为例,每个 VPS 可以创建两个免费快照。

image-20211016125916092

参考

  1. 保护好你的小鸡!保姆级服务器安全教程!
  2. VPS服务器选购不完全指南
  3. 新拿到手一台服务器,怎么样给它做个全方位的“体检”?
  4. 香港CN2 VPS/香港CN2 GIA VPS及可靠商家介绍推荐
  5. 解除宝塔面板绕过强制绑定官网账号几个有效方法