年轻人的第一台 VPS 设置
前言
关于个人用户来说云服务器成本总是过于昂贵的,假如个人业务不需求高度可扩展性、弹性资源和高可用性,这时 VPS (虚拟专用服务器)愈加适宜,本文将介绍个人运用 VPS 时根底装备以及功用测验办法。
因为个人也是探索运用技能力浅薄,文中出现任何问题、错误请和平讨论,谢谢~
留意:本文不涉及引荐任何云服务商,文中出现仅用于举例运用。
VPS 的特色
VPS 最大的特色是在一台物理服务器上创立的虚拟实例,每个实例有自己的操作体系和资源分配。资源是固定的,扩展性有限。而云服务器则是基于云计算架构,能够动态分配和调整资源,具有更好的可扩展性和可靠性。
在运用 VPS 时咱们往往有着清晰的方针,个人建站、保管数据、离线下载服务器、反向代理等等。 咱们往往会根据自己的需求挑选 VPS 的资源,当时我比较常用的是 DigitalOcean Droplets 与 Amazon Lightsail,它俩的最低价格如下,可见价格很低可是资源也是少的不幸:
开机
接下来咱们创立对应虚拟机,这儿以 DigitalOcean Droplets 举例,它有如下几个国家的服务器,自己挑选个网速比较快的,我都开了个遍,发现关于杭州移动而言旧金山反而慢于悉尼,查了路由道路也是绕了一圈到洛杉矶才到悉尼,只能怀疑是旧金山道路繁忙了,按如下办法创立 Droplets 也就是 DO 提供的 VPS 服务,挑选区域:
不同区域会影响后续机型价格,例如挑选旧金山数据中心 SFO1 最低档的资源会没法挑选,换一换机房就好了,挑选想要的装备:
接下来挑选鉴权方式,这儿引荐运用密钥鉴权的办法,自己上传个公钥上来,这样会安全的多有效避免被进犯成肉鸡:
创立密钥的办法:ssh-keygen 生成密钥 — Linux latest 文档 (gnu-linux.readthedocs.io)
其他选项默许,最终承认下价格符合自己挑选的方案后就能够创立对应 VPS 了:
在项目列表中会有新建的 VPS 服务器信息,通过这个 ip 即可衔接服务器:
再次声明下并不涉及任何服务商引荐,仅仅是展现创立一个 VPS 大致流程,其他服务商大同小异,而且 DO 的 IP 池一言难尽,仅仅是我还剩不少额度浪费不心疼,大家要自己多找找适合自己的。
安全设置
SSH 安全
‼️ 重要:修正 SSHD 相关装备前一定要备份相关脚本而且重启服务后,千万不要断开当时的衔接,先用新终端测验是否能够衔接,避免 VPS 失联
-
ssh 登陆鉴权,引荐运用密钥进行 ssh 登陆,仅上传公钥,千万别把私钥放到服务器上;
-
sshd 为服务端,其装备文件一般在:
/etc/ssh/sshd_config
,如下装备项主张修正;# =========== Degub ============== # 端口, 默许22,一般都是全端口扫描修正意义不大 Port 22 # 指定将日志消息通过哪个日志子体系(facility)发送,调试时运用 SyslogFacility AUTH # 指定日志等级,调试时运用 LogLevel INFO # ========== 鉴权 ============= # 限制用户必须在指定的时限(单位秒)内认证成功 LoginGraceTime 2m # 答应root用户登录 PermitRootLogin yes # 是否答应暗码验证,运用密钥校验后强烈主张制止暗码验证 PasswordAuthentication no # 是否答应空暗码,同上 PermitEmptyPasswords no # 是否答应X11转发,一般VPS也没有UI,不需求 X11Forwarding no #X11DisplayOffset 10 #X11UseLocalhost yes # 装备超时 TCPKeepAlive yes ClientAliveInterval 120 ClientAliveCountMax 10 # VPS 不需求,假如只想在局域网内,在最终增加内网地址匹配逻辑, 留意要放到文件最终 # Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
-
修正完结装备后需求重启 SSH 服务,以下指令在 Ubuntu 上验证过:
- 检查服务:
systemctl -l --type service --all | grep ssh
- 重启 ssh 服务:
systemctl restart ssh.service
- ssh.service 与 sshd.service 是等价的,从 status 状况能够看出最终都是启动了 sshd 监听,不同的衍生体系有差异。
- 检查 ssh 服务状况:
systemctl status ssh.service
- 检查服务:
-
检查 SSH 服务作业状况,检查日志:
# 检查文件巨细 sudo ls -alh /var/log/auth.log # 检查文件行数 sudo wc -l /var/log/auth.log # 检查 ssh 暗码错误的行数 sudo grep "Failed password" /var/log/auth.log | wc -l # 计算进犯次数 log sudo grep "Failed password for" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
UFW 防火墙
假如你的服务器没有安全组的话,你能够运用 UFW(Uncomplicated Firewall)来装备防火墙并操控端口的露出。以下是一个常见的运用示例:
apt update && apt upgrade -y
apt install ufw -y
# 安装完结后,开始装备 UFW
ufw default deny incoming # 默许阻挠入站衔接
ufw default allow outgoing # 默许答应出站衔接
# ufw allow 9993 # 假如你运用 Zerotier,请确保答应 9993 端口的进出站衔接
ufw allow 22 # SSH 端口,请根据实际状况填写端口
ufw allow 443 # HTTPS 端口
# 当即启用 UFW,此操作可能会中止当时的 SSH 衔接,请按 y 持续
ufw enable
常用的 UFW 指令参阅:
- 启用 UFW:
ufw enable
- 禁用 UFW:
ufw disable
- 列出当时活动规矩(具体):
ufw status verbose
- 列出当时活动规矩(带序号):
ufw status numbered
# 序号标识了每条规矩 - 答应某个 CIDR 拜访本机一切端口:
ufw allow from {CIDR}
- 阻挠某个 CIDR 拜访本机一切端口:
ufw deny from {CIDR}
- 答应拜访某个端口:
ufw allow {PORT}
- 对某个 CIDR 露出某个端口:
ufw allow from {CIDR} to any port {PORT}
- 对某个 CIDR 露出某个端口:
- 阻挠拜访某个端口:
ufw deny {PORT}
- 对某个 CIDR 阻挠拜访某个端口:
ufw deny from {CIDR} to any port {PORT}
- 对某个 CIDR 阻挠拜访某个端口:
- 删除某个规矩:
ufw delete {RULE}|{NUM}
- 能够是之前履行的指令中的 RULE,例如,假如之前履行了
ufw allow 443
,要删除此规矩,能够运用ufw delete allow 443
,其他相似 - 也能够运用之前说到的规矩序号 NUM
- 能够是之前履行的指令中的 RULE,例如,假如之前履行了
- 将规矩 RULE 刺进到规矩列表的方位 NUM:
ufw insert {NUM} {RULE}
,例如ufw insert 1 allow 443
表明将allow 443
规矩刺进到规矩列表的第一位- 留意:这儿的规矩列表方位 NUM 不同于之前说到的序号,因为 UFW 规矩包括 v6 规矩,运用
ufw status numbered
列出规矩列表时,v6 规矩会在 v4 规矩之后持续列出。
- 留意:这儿的规矩列表方位 NUM 不同于之前说到的序号,因为 UFW 规矩包括 v6 规矩,运用
优化装备
接下来介绍 VPS 的优化,因为大部分时刻我运用 VPS 主要是网络相关,因此优化也是围绕着部分。
网络装备优化
-
haveged
是一个用于生成高质量随机数的守护进程。在 Linux 体系中,随机数关于许多应用程序和体系操作是至关重要的,这些随机数可用于加密操作、密钥生成以及其他需求高质量随机数的安全应用。它并不直接针对网络进行的优化项,可是当设计加密通信或密钥生成的场景会有安全性和功率的改进:- 安装:
apt install haveged -y
- 启用:
systemctl disable --now haveged;systemctl enable --now haveged
- 安装:
- 优化体系网络功用与衔接盯梢:
-
modprobe ip_conntrack
: 这是加载ip_conntrack
内核模块的指令。这模块一般用于 IPv4 衔接盯梢,用于盯梢网络衔接的状况。IP 衔接盯梢功用自身并不直接优化网络功用。它更多地用于网络安全、地址转换和负载均衡等方面。 - TCP 拥塞操控算法 BBR (Bottleneck Bandwidth and RTT) 能够大限度地利用 服务器 带宽,削减排队的状况,提高网络质量:
echo net.core.default_qdisc=fq >> /etc/sysctl.conf echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf sysctl -p # 检查是否成功,显示 net.ipv4.tcp_available_congestion_control = reno cubic bbr: sysctl net.ipv4.tcp_available_congestion_control
-
SWAP 优化
一般 VPS 默许都是没有开启 Swap 的,面对内存耗费多的程序会出现无法运行的问题,这时能够运用 Swap 进行缓解:
# 关闭 swap
swapoff -a
# 创立 2G swap 分区
dd if=/dev/zero of=/var/swapfile bs=1M count=2048
# 制造 swap 分区
mkswap /var/swapfile
# 开启 swap
swapon /var/swapfile
# 检查 swap 状况
free -m
# 设置开机自启
echo "/var/swapfile none swap sw 0 0" >>/etc/fstab
WRAP
因为 IPV4 资源严重,许多 VPS 的 IPV4 池质量都不高,体现在 google 经常跳验证码、paypal 支付受限、ChatGPT 受限等,咱们能够在 VPS 套一层 WRAP 来优化 ip。
咱们能够运用 github.com/P3TERX/warp… 脚本进行布置,运用办法参阅 Cloudflare WARP 一键安装脚本 运用教程 – P3TERX ZONE
流量监测
VPS 往往面临着流量限制,掌握如何检查那些程序与衔接正在耗费宝贵流量是必要的技能,如下东西 Ubuntu23 测验均能够 apt 直接安装:
-
nethogs
:root 权限直接运行即可,主动监测一切程序的数据传输状况。
-
iftop
:用于快速辨认占用、丈量速度,并保持网络流量的总体状况:-
h
切换帮助屏幕; -
n
切换称号解析; -
s
切换源主机显示,d
切换方针主机; -
s
切换端口号; -
N
切换端口解析。要全看到端口号,请关闭解析; -
t
切换文本界面。默许显示需求 ncurses。我认为文本显示更易于阅览和更好的组织; -
p
暂停显示; -
q
退出程序;
-
-
vnstat
:网络数据搜集东西,能够计算网络信息,累计流量运用:apt install vnstat service vnstat start # 删除不需求监控的网卡 vnstat --remove -i eth1 --force # 增加需求监控的网卡 vnstat --add -i eth1 # 检查计算数据 [-5 展现分钟] [-h 展现小时] [-hg 展现小时折线图] 更多选项 --help 检查
测验
-
国内网速测验能够运用
network-speed.xyz
脚本:curl -sL network-speed.xyz | bash -s -- -r china
- 假如提示 python 找不到的问题,Ubuntu 因为默许只有 python3,能够安装:
python-is-python3
- 假如提示 python 找不到的问题,Ubuntu 因为默许只有 python3,能够安装:
-
下载速度测验:
wget -O /dev/null http://speedtest.london.linode.com/100MB-london.bin
-
路由查询能够运用 ipip ,能够测验延时与检查路由信息:
-
综合测验 benchmark,能够运用 yabs 脚本:
curl -sL yabs.sh | bash
#越过网络测验,仅测硬盘和Geekbench5 curl -sL yabs.sh | bash -s -- -i5 #越过硬盘测验,保存其他 curl -sL yabs.sh | bash -s -- -fd #越过网速测验,保存其他 curl -sL yabs.sh | bash -s -- -i #越过Geekbench,保存其他 curl -sL yabs.sh | bash -s -- -g #换为Geekbench 5,保存其他 curl -sL yabs.sh | bash -s -- -5 #仅测硬盘 curl -sL yabs.sh | bash -s -- -ig #仅测速 curl -sL yabs.sh | bash -s -- -fdg #仅测Geekbench 5 curl -sL yabs.sh | bash -s -- -fdi5 #仅测Geekbench 5 和 Geekbench 6 curl -sL yabs.sh | bash -s -- -fdi56
总结
其实玩 VPS 也快一年了,关于许多技能细节不小心了解大多是搜搜各种指令跑下脚本看看就得了,关于脚本安原理、安全性都没有深化了解过,最近正好放假了梳理了下 VPS 常用的基本操作,大多脚本也都翻了翻代码没啥异常,本文也没有涉及太多技能细节,技能细节假如后续有需求再收拾吧,现在主打一个囫囵吞枣「够用就行」。
最终本文许多操作自己也写了一个脚本能够主动化跑,相关代码都是开源的,大家感兴趣能够试用下,点点 start ✨:bash -c "$(curl -fsSL https://raw.githubusercontent.com/HATTER-LONG/dotfile/main/tools/VPS/harden.sh)"
最终会在 $HOME
下把我的 dotfile 库房下载下来,手动删下就行: rm -rf ~/dotfile
参阅文章
- vnstat流量计算(2.8版本) – 何宇泽 – 博客园 (cnblogs.com)
- ssh-keygen 生成密钥 — Linux latest 文档 (gnu-linux.readthedocs.io)
- 手把手教育系列:从零开始装备VPS服务器 – kingszelda – 博客园 (cnblogs.com)
- 通过ssh X11转发运用长途gui程序 – sakuragl – 博客园 (cnblogs.com)
- VPS优化之增加swap交换分区 – VPS侦探 (vpser.net)
- Cloudflare WARP 一键安装脚本 运用教程 – P3TERX ZONE
- 鸭子都能看懂的 VPS 离线下载 & 云服务搭建新手教程 – 少数派 (sspai.com)