新开机一台 Linux 服务器之后应该做的 N 件事
编辑Step 1. VPS 融合怪服务器测评脚本(ecs)
是骡子是马,拉出来溜溜!使用我本人最喜欢的 融合怪测评脚本,可以一键测试 Linux 服务器的性能。
一键执行脚本:
交互形式
curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh
或
curl -L https://github.com/spiritLHLS/ecs/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh
或
bash <(wget -qO- bash.spiritlhl.net/ecs)
测试效果
测评频道: https://t.me/vps_reviews
版本:2023.10.09
更新日志:VPS融合怪测试(集百家之长)
---------------------基础信息查询--感谢所有开源项目---------------------
CPU 型号 : AMD EPYC 7B13 64-Core Processor
CPU 核心数 : 2
CPU 频率 : 2249.998 MHz
CPU 缓存 : L1: 256.00 KB / L2: 1.00 MB / L3: 16.00 MB
硬盘空间 : 1.86 GiB / 59.04 GiB
启动盘路径 : /dev/sda1
内存 : 106.85 MiB / 7.76 GiB
Swap : [ no swap partition or swap file detected ]
系统在线时间 : 1 days, 11 hour 53 min
负载 : 0.40, 0.10, 0.03
系统 : Debian GNU/Linux 11 (bullseye) (x86_64)
AES-NI指令集 : ✔ Enabled
VM-x/AMD-V支持 : ✔ Enabled
架构 : x86_64 (64 Bit)
内核 : 5.10.0-26-amd64
TCP加速方式 : cubic
虚拟化架构 : KVM
NAT类型 : 开放型
IPV4 ASN : AS206216 Advin Services LLC
IPV4 位置 : Nürnberg / Bavaria / DE
---------------------CPU测试--感谢lemonbench开源------------------------
-> CPU 测试中 (Fast Mode, 1-Pass @ 5sec)
1 线程测试(1核)得分: 3532 Scores
2 线程测试(多核)得分: 6947 Scores
---------------------内存测试--感谢lemonbench开源-----------------------
-> 内存测试 Test (Fast Mode, 1-Pass @ 5sec)
单线程读测试: 36482.04 MB/s
单线程写测试: 16464.51 MB/s
------------------磁盘dd读写测试--感谢lemonbench开源--------------------
-> 磁盘IO测试中 (4K Block/1M Block, Direct Mode)
测试操作 写速度 读速度
100MB-4K Block 41.8 MB/s (10.22 IOPS, 2.51s) 87.3 MB/s (21309 IOPS, 1.20s)
1GB-1M Block 2.9 GB/s (2771 IOPS, 0.36s) 5.5 GB/s (5211 IOPS, 0.19s)
---------------------磁盘fio读写测试--感谢yabs开源----------------------
Block Size | 4k (IOPS) | 64k (IOPS)
------ | --- ---- | ---- ----
Read | 219.39 MB/s (54.8k) | 1.61 GB/s (25.2k)
Write | 219.97 MB/s (54.9k) | 1.62 GB/s (25.4k)
Total | 439.37 MB/s (109.8k) | 3.24 GB/s (50.6k) | |
Block Size | 512k (IOPS) | 1m (IOPS)
------ | --- ---- | ---- ----
Read | 1.29 GB/s (2.5k) | 1.78 GB/s (1.7k)
Write | 1.36 GB/s (2.6k) | 1.89 GB/s (1.8k)
Total | 2.65 GB/s (5.1k) | 3.67 GB/s (3.5k)
---------------------流媒体解锁--感谢sjlleo开源-------------------------
以下测试的解锁地区是准确的,但是不是完整解锁的判断可能有误,这方面仅作参考使用
----------------Youtube----------------
[IPv4]
连接方式: Youtube Video Server
视频缓存节点地域: 德国法兰克福(FRA15S37)
Youtube识别地域: 无信息(null)
----------------Netflix----------------
[IPv4]
您的出口IP完整解锁Netflix,支持非自制剧的观看
NF所识别的IP地域信息:美国
[IPv6]
您的网络可能没有正常配置IPv6,或者没有IPv6网络接入
---------------DisneyPlus---------------
[IPv4]
当前IPv4出口解锁DisneyPlus
区域:美国区
解锁Youtube,Netflix,DisneyPlus上面和下面进行比较,不同之处自行判断
----------------流媒体解锁--感谢RegionRestrictionCheck开源--------------
以下为IPV4网络测试,若无IPV4网络则无输出
============[ Multination ]============
Dazn: Yes (Region: NL)
HotStar: Yes (Region: US)
Disney+: Yes (Region: US)
Netflix: Yes (Region: US)
YouTube Premium: Yes
Amazon Prime Video: Yes (Region: US)
TVBAnywhere+: Yes
iQyi Oversea Region: DE
Viu.com: No
YouTube CDN: Frankfurt
Netflix Preferred CDN: Washington DC
Spotify Registration: No
Steam Currency: EUR
ChatGPT: Yes
=======================================
以下为IPV6网络测试,若无IPV6网络则无输出
---------------TikTok解锁--感谢lmc999的源脚本及fscarmen PR--------------
Tiktok Region: 【NL】
-------------------欺诈分数以及IP质量检测--本脚本原创-------------------
数据仅作参考,不代表100%准确,如果和实际情况不一致请手动查询多个数据库比对
以下为各数据库编号,输出结果后将自带数据库来源对应的编号
ipinfo数据库 ① | scamalytics数据库 ② | virustotal数据库 ③ | abuseipdb数据库 ④ | ip2location数据库 ⑤
ip-api数据库 ⑥ | ipwhois数据库 ⑦ | ipregistry数据库 ⑧ | ipdata数据库 ⑨ | ipgeolocation数据库 ⑩
欺诈分数(越低越好): 0②
abuse得分(越低越好): 0④
IP类型:
使用类型(usage_type):hosting① Data Center/Web Hosting/Transit⑤ hosting⑧ business⑨
公司类型(company_type):hosting① hosting⑧
云服务提供商(cloud_provider): Yes⑧
数据中心(datacenter): Yes② No⑥ ⑨
移动网络(mobile): No⑥
代理(proxy): No① ② ⑥ ⑦ ⑧ ⑨
VPN(vpn): No① ② ⑦ ⑧
TOR(tor): No① ② ⑦ ⑧ ⑨
TOR出口(tor_exit): No⑧
搜索引擎机器人(search_engine_robot): No②
匿名代理(anonymous): No⑦ ⑧ ⑨
攻击方(attacker): No⑧ ⑨
滥用者(abuser): No⑧ ⑨
威胁(threat): No⑧ ⑨
iCloud中继(icloud_relay): No① ⑧ ⑨
未分配IP(bogon): No⑧ ⑨
黑名单记录统计(有多少个黑名单网站有记录): 无害0 恶意0 可疑0 未检测88 ③
Google搜索可行性:YES
端口25检测:
本地: No
163邮箱:No
----------------三网回程--感谢zhanghanyun/backtrace开源-----------------
国家: DE 城市: Nürnberg 服务商: AS206216 Advin Services LLC
北京电信 219.141.136.12 测试超时
北京联通 202.106.50.1 联通4837[普通线路]
北京移动 221.179.155.161 移动CMI [普通线路]
上海电信 202.96.209.133 测试超时
上海联通 210.22.97.1 联通4837[普通线路]
上海移动 211.136.112.200 移动CMI [普通线路]
广州电信 58.60.188.222 测试超时
广州联通 210.21.196.6 联通4837[普通线路]
广州移动 120.196.165.24 移动CMI [普通线路]
成都电信 61.139.2.69 测试超时
成都联通 119.6.6.6 联通4837[普通线路]
成都移动 211.137.96.205 移动CMI [普通线路]
---------------------回程路由--感谢fscarmen开源及PR---------------------
依次测试电信/联通/移动经过的地区及线路,核心程序来自ipip.net或nexttrace,请知悉!
广州电信 58.60.188.222
0.63 ms AS206216 德国 巴伐利亚州 纽伦堡 advinservers.com
1.19 ms AS174 [COGENT-BONE] 德国 巴伐利亚州 纽伦堡 cogentco.com
3.17 ms AS174 [COGENT-BONE] 德国 巴伐利亚州 慕尼黑 cogentco.com
8.74 ms AS174 [COGENT-BONE] 德国 黑森州 美因河畔法兰克福 cogentco.com
8.63 ms AS174 [COGENT-BONE] 德国 黑森州 美因河畔法兰克福 cogentco.com
62.67 ms AS174 [COGENT-149] 德国 黑森州 美因河畔法兰克福 Cogent-CT-Peer cogentco.com
306.42 ms AS4134 [CHINANET-BB] 中国 广州市 广州市 chinatelecom.com.cn 电信
* ms AS4134 [CHINANET-BB] 中国 广东省 广州市 chinatelecom.com.cn 电信
311.59 ms AS4134 [CHINANET-BB] 中国 广东省 广州市 chinatelecom.com.cn 电信
302.09 ms AS4134 [CHINANET-GD] 中国 广东省 深圳市 chinatelecom.com.cn 电信
305.51 ms AS4134 中国 广东省 深圳市 福田区 chinatelecom.com.cn 电信
广州联通 210.21.196.6
0.50 ms AS206216 德国 巴伐利亚州 纽伦堡 advinservers.com
1.00 ms AS174 [COGENT-BONE] 德国 巴伐利亚州 纽伦堡 cogentco.com
2.96 ms AS174 [COGENT-BONE] 德国 巴伐利亚州 慕尼黑 cogentco.com
8.43 ms AS174 [COGENT-BONE] 德国 黑森州 美因河畔法兰克福 cogentco.com
18.50 ms AS174 [COGENT-BONE] 法国 法兰西岛大区 巴黎 cogentco.com
93.13 ms AS174 [COGENT-BONE] 美国 华盛顿哥伦比亚特区 华盛顿 cogentco.com
109.74 ms AS174 [COGENT-BONE] 美国 佐治亚州 亚历山大 cogentco.com
124.25 ms AS174 [COGENT-BONE] 美国 德克萨斯州 休斯顿 cogentco.com
139.48 ms AS174 [COGENT-BONE] 美国 得克萨斯州 埃尔帕索 cogentco.com
148.45 ms AS174 [COGENT-BONE] 美国 亚利桑那州 凤凰城 cogentco.com
159.47 ms AS174 [COGENT-BONE] 美国 加利福尼亚州 洛杉矶 cogentco.com
159.80 ms AS174 [COGENT-BONE] 美国 加利福尼亚州 洛杉矶 cogentco.com
313.44 ms AS174 美国 加利福尼亚州 洛杉矶 cogentco.com
349.64 ms AS4837 [CU169-BACKBONE] 中国 广东省 广州市 chinaunicom.cn 联通
319.41 ms AS4837 [CU169-BACKBONE] 中国 广东省 广州市 chinaunicom.cn 联通
418.24 ms AS4837 [CU169-BACKBONE] 中国 广东省 广州市 chinaunicom.cn 联通
345.92 ms AS17816 [APNIC-AP] 中国 广东省 茂名市 chinaunicom.cn 联通
344.22 ms AS17623 [APNIC-AP] 中国 广东省 深圳市 chinaunicom.cn 联通
326.02 ms AS17623 [APNIC-AP] 中国 广东省 深圳市 宝安区 chinaunicom.cn 联通
广州移动 120.196.165.24
0.54 ms AS206216 德国 巴伐利亚州 纽伦堡 advinservers.com
0.97 ms AS174 [COGENT-BONE] 德国 巴伐利亚州 纽伦堡 cogentco.com
3.19 ms AS174 [COGENT-BONE] 德国 巴伐利亚州 慕尼黑 cogentco.com
8.38 ms AS174 [COGENT-BONE] 德国 黑森州 美因河畔法兰克福 cogentco.com
8.85 ms AS174 [COGENT-BONE] 德国 黑森州 美因河畔法兰克福 cogentco.com
21.69 ms AS174 [COGENT-149] 德国 黑森州 美因河畔法兰克福 cogentco.com
23.01 ms AS58453 [CMI-INT] 德国 黑森州 美茵河畔法兰克福 cmi.chinamobile.com 移动
220.51 ms AS58453 [CMI-INT] 中国 广东省 广州市 cmi.chinamobile.com 移动
233.09 ms AS9808 [CMNET] 中国 广东省 广州市 chinamobile.com 移动
229.15 ms AS9808 [CMNET] 中国 广东省 广州市 chinamobile.com 移动
219.64 ms AS9808 [CMNET] 中国 广东省 广州市 chinamobile.com 移动
219.69 ms AS9808 [CMNET] 中国 广东省 广州市 chinamobile.com 移动
221.41 ms AS9808 [CMNET] 中国 海南省 海口市 chinamobile.com 移动
235.98 ms AS56040 [APNIC-AP] 中国 广东省 深圳市 chinamobile.com 移动
--------------------自动更新测速节点列表--本脚本原创--------------------
位置 上传速度 下载速度 延迟 丢包率
Speedtest.net 5337.37 Mbps 7564.15 Mbps 14.83 0.0%
法兰克福 3407.27 Mbps 7812.39 Mbps 8.41 0.0%
洛杉矶 538.31 Mbps 5854.58 Mbps 159.58 0.0%
联通湖南5G 172.90 Mbps 3.22 Mbps 241.68 NULL
联通Fuzhou 299.01 Mbps 2744.95 Mbps 240.45 0.0%
电信天津 0.51 Mbps 2146.27 Mbps 284.78 NULL
电信天津5G 1.31 Mbps 11.13 Mbps 281.85 NULL
移动Chengdu 886.22 Mbps 4228.86 Mbps 232.25 0.0%
移动硬核通信 0.26 Mbps 112.83 Mbps 341.68 NULL
------------------------------------------------------------------------
总共花费 : 6 分 41 秒
时间 : Fri Oct 13 01:47:54 UTC 2023
------------------------------------------------------------------------
Step 2. 添加服务器到哪吒探针
哪吒探针是一个开源、轻量、易用的服务器监控、运维工具,可以实时监控服务器的运行状态,同时还有在线 SSH、异常告警、服务监控等功能。搭建好后的效果如下:
哪吒探针由 Client 和 Dashboard 组成,官网上也都有详细的搭建教程。
Step 3 ~ Step N. 开始折腾
安全相关
DD 纯净系统
大厂公有云一般都会在服务器系统镜像中添加监控进程,不仅会记录用户行为,还会导致额外的内存和性能占用(例如腾讯云会在实例上安装主机安全客户端和自动化助手)。因此在服务器开机后,我会将服务器 DD 成纯净系统。
DD 系统涉及的操作十分复杂,所以我这里推荐两个一键脚本(Azure 推荐使用 HostLoc 上的脚本):
修改默认 22 端口
- 使用文本编辑器修改
/etc/ssh/sshd_config
文件 - 找到文件中的
Port 22
(注意千万不要先删除或注释掉该代码) - 在下面添加
Port 要修改的端口号
,保存文件 - 确认防火墙或控制面板安全组放行端口
- 使用
systemctl restart sshd
命令重启 sshd 服务,或者使用reboot
命令直接重启服务器 - 如果使用新端口登录成功,则此时可以删除或注释掉原来的端口
使用密钥登录
-
使用
ssh-keygen -t rsa -b 4096
生成一个使用 RSA 算法加密,长度为 4096 的密钥(输入命令后一路回车即可)。默认生成的密钥文件在root/.ssh
目录下 -
检查下
.ssh
目录下authorized_keys
文件是否存在。没有的话,创建一个,然后将id_rsa.pub
的内容追加到authorized_keys
文件尾cd .ssh touch authorized_keys # 如果ssh中存在此文件则省略此步骤 cat id_rsa.pub >> authorized_keys # 将id_rsa.pub的内容追加到authorized_keys
-
修改
.ssh
的权限为 700,authorized_keys
的权限为 600 或者更严格的 400,否则登录的时候会提示 server refuse you key。cd .. chmod 700 .ssh chmod 600 .ssh/authorized_keys
-
如果需要设置的用户不是 root,而是普通用户,那么
.ssh
的目录应该是/home/username/.ssh
,并且要将.ssh
的目录和authorized_keys
文件的文件所有者改为username
chown -R username:usergroup .ssh
-
修改
sshd_config
,在末尾添加以下内容RSAAuthentication yes PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys
-
将私钥文件
id_rsa
下载到客户端,尝试使用密钥登录。 -
若登录成功,此时可以回到
sshd_config
中,将PasswordAuthentication
设置为no
,关闭密码登录
修改 SSH 端口号并使用密钥登录的效果
我有一台 VPS 购入了一个月,忘了修改端口号,查看端口号发现有 20 多万条登录记录。在修改 SSH 端口号并使用密钥登录后,很少出现暴力登录的日志了。
系统优化相关
创建 Swap 分区
Swap 分区允许服务器将不常用的内存数据移到硬盘上,以便释放更多的物理内存供活动进程使用。Swap 分区还可以作为紧急备用内存,当物理内存耗尽时,系统可以使用Swap来防止崩溃或关键进程的异常终止。
这里直接偷懒,使用一键脚本进行 Swap 分区的添加和删除。
输入命令即可执行一键脚本:wget https://www.superbin.cc/Shell/swap.sh && bash swap.sh
脚本内容
#https://www.superbin.cc/windows/557.html Green="\033[36m" Font="\033[0m" Red="\033[31m"
#root权限
root_need(){
if [[ $EUID -ne 0 ]]; then
echo -e "${Red}错误:此脚本必须以根目录运行!${Font}"
exit 1
fi
}#检测ovz
ovz_no(){
if [[ -d "/proc/vz" ]]; then
echo -e "${Red}错误:您的VPS基于OpenVZ,不支持!${Font}"
exit 1
fi
}add_swap(){
echo -e "${Green}请输入需要添加的swap(建议为内存的1.5-2倍)${Font}"
read -p "请输入swap数值(单位M):" swapsize#检查是否存在swap
grep -q "swap" /etc/fstab#如果不存在将为其创建swap
if [ $? -ne 0 ]; then
echo -e "${Green}swap未发现,正在为其创建swap${Font}"
fallocate -l ${swapsize}M /swap
chmod 600 /swap
mkswap /swap
swapon /swap
echo '/swap none swap defaults 0 0' >> /etc/fstab
echo -e "${Green}swap创建成功,并查看信息:${Font}"
cat /proc/swaps
cat /proc/meminfo | grep Swap
else
echo -e "${Red}swap已存在,swap设置失败,请先运行脚本删除swap后重新设置!${Font}"
fi
}del_swap(){
#检查是否存在swap
grep -q "swap" /etc/fstab#如果存在就将其移除
if [ $? -eq 0 ]; then
echo -e "${Green}swap已发现,正在将其移除...${Font}"
sed -i '/swap/d' /etc/fstab
echo "3" > /proc/sys/vm/drop_caches
swapoff -a
rm -f /swap
echo -e "${Green}swap已删除!${Font}"
else
echo -e "${Red}swapfile未发现,swap删除失败!${Font}"
fi
}
#开始菜单
main(){
root_need
ovz_no
clear
echo -e "———————————————————————————————————————"
echo -e "${Green}Linux VPS一键添加/删除swap脚本${Font}"
echo -e "${Green}1、添加swap${Font}"
echo -e "${Green}2、删除swap${Font}"
echo -e "———————————————————————————————————————"
read -p "请输入数字 [1-2]:" num
case "$num" in
1)
add_swap
;;
2)
del_swap
;;
*)
clear
echo -e "${Green}请输入正确数字 [1-2]${Font}"
sleep 2s
main
;;
esac
}
main
关于 Swap 分区大小:
如果你的硬盘空间足够的话,理论上想设置多少就设置多少
我的机器硬盘经常用不满,所以根据我的习惯,RAM ≤ 2GB,Swap 设置 4GB,RAM > 2GB,Swap 设置 8GB。
以下是 Red Hat 官方给出的配置建议,供你参考:
Amount of RAM in the system 物理内存 | Recommended swap space 建议的交换空间大小 | Recommended swap space if allowing for hibernation 如果开启休眠功能建议的交换空间大小 |
---|---|---|
⩽ 2GB | 2 times the amount of RAM | 3 times the amount of RAM |
2GB – 8GB | Equal to the amount of RAM | 2 times the amount of RAM |
8GB – 64GB | At least 4 GB | 1.5 times the amount of RAM |
> 64GB | At least 4 GB | Hibernation not recommended |
修改 TCP 拥塞控制算法为 BBR
以下内容摘自 亚马逊 AWS 官方博客——从流量控制算法谈网络优化 – 从 CUBIC 到 BBRv2 算法:
TCP 的 BBR(Bottleneck Bandwidth and Round-trip propagation time,BBR)是谷歌在2016年开发的一种新型的 TCP 拥塞控制算法。在此以前,互联网主要使用基于丢包的拥塞控制策略,只依靠丢失数据包的迹象作为减缓发送速率的信号。这样做的的效果还是不错的,但随着全球化互联网的迅速普及,我们所使用的网络已经发生了巨大的变化。我们拥有了越来越大的带宽,而现在的互联网质量也越来越好。于是我们观察到了一些新的问题,比如影响延迟的缓冲区膨胀的问题。BBR 尝试通过使用全新的拥塞控制来解决这个问题,它使用基于延迟而不是丢包作为决定发送速率的主要因素。
下图是一个原理的演示:
其实 BBR 算法具体的原理我也不是很懂,我们只需要知道 BBR 是一种新型拥塞控制算法,可以使 Linux 服务器 「显著地提高吞吐量和减少 TCP 连接的延迟」 即可。
网上有不少「一键开启 BBR」的脚本,但是有些脚本可能会涉及到修改内核。这里提供一种无需修改内核开启 BBR 的方法 (要求 KVM 虚拟化且 Linux 内核高于 4.9)。
#内核版本高于 4.9 就行。
uname -r
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
#执行下面命令,如果结果中带有bbr,则证明你的内核已开启bbr。
sysctl net.ipv4.tcp_available_congestion_control
应用相关
Linux 一键换源
如果使用国内服务器,修改 Linux 软件源可以更快地下载软件包。我们可以使用脚本来一键修改软件源:
安装 Docker
Docker 是什么想必不用我过多介绍,只能说有了 Docker,像我这样的 Linux 小白配置开发环境简直易如反掌。有了 Docker,非常多有意思的开源项目(例如本博客使用的 Halo、网盘程序 Alist、开源密码管理器 Bitwarden 等等)都可以一键部署。
你可以参考 官方教程 来在 Linux 服务器上安装 Docker,然而 LinuxMirrors 的作者也提供了 Docker 一键安装脚本,脚本内还集成了一键换源功能:
不得不说,各种一键脚本简直是我这种懒人 + 小白的福音。
安装 1Panel
1Panel 是一款类似于宝塔的服务器运维面板,集成了快速建站、服务器监控、文件管理、自动备份等功能。1Panel 可以看做是宝塔的替代品。我认为相较于宝塔,1Panel 最大的优点是由于其大多数功能依赖于 Docker,因此对服务器的环境侵入更小。
官方的安装教程如下,使用一键脚本即可:
值得一提的是由于 1Panel 大多数功能和 Docker 绑定,所以安装 1Panel 的时候如果 Docker 未安装则会自动安装 Docker。
然而,我不太建议内存低于 1GB 的服务器使用任何运维面板工具,还是把内存留在刀刃上比较好。
结语
以上就是我在新开机一台服务器后会做的 N 件事。不过,由于本人的经验和经历有限,所以没办法做到面面俱到,尤其是安全方面(毕竟有些时候只有吃了亏才能长记性)。如果你有不同的见解,欢迎评论区分享,期待和你交流。
本文中的其他参考链接:
- 3
- 1
-
分享