拿到新的 VPS 之后应该做什么

先记录这么些。不定期更新。

使用 Ubuntu 22.04 进行演示。

sudo su进入root环境。

升级软件包

执行

1
2
apt-get update -y && apt-get upgrade -y --only-upgrade
apt-get clean && rm -rf /var/lib/apt/lists/*

即可。

修改SSH端口

见此:https://blog.katorly.com/Linux-SSH-Change-Port

禁用root登录

添加新账号

为增加安全性,应禁止root登录,创建一个本地账号,给予sudo权限。

1
adduser <username>

会要求输入账户名、密码等信息。

给予新账号sudo执行的权限:

1
visudo

会打开一个文件,找到

1
root    ALL=(ALL:ALL) ALL

在其下一行添加

1
<username> ALL=(ALL:ALL) ALL

并保存(按下Ctrl+X,再按下Y)即可。

之后,务必在禁用root账号之前,退出SSH,使用新创建的账号登录,看看能不能成功登录,并执行sudo su看看能不能进入root模式。

禁用root账号登录

1
vim /etc/ssh/sshd_config

找到

1
#PermitRootLogin yes

(按下Insert)把前面的注释#号去掉,后面改成no,保存(按下Esc,输入:x)即可。

之后重启sshd服务:

1
service sshd restart

可以试试退出SSH,使用root账号登录,看看是否会被拒绝登录。

降低 systemd 日志大小

执行

1
vim /etc/systemd/journald.conf

找到

1
2
3
SystemMaxUse=2000M
SystemMaxFileSize=500M
#SystemMaxFiles=200

把前面的注释#号去掉,改成下面这样:

1
2
3
SystemMaxUse=5M
SystemMaxFileSize=2M
SystemMaxFiles=1

保存,然后清理之前的日志,并重启journalctl服务:

1
2
journalctl --vacuum-time=1week
systemctl restart systemd-journald

添加 Swap 分区

先查看当前是否已经有Swap分区。
执行

1
swapon -s

查看是否已有Swap,若为0则表示没有。
如果不为0则执行下面这个指令删除已有的Swap分区:

1
swapoff -a

添加 Swap 分区

接下来添加Swap分区,对于小内存的VPS来说,一般设置为实际内存的2倍,比如VPS内存是1GB的,设置2GB的Swap:

1
2
fallocate -l 2G /swapfile
chmod 600 /swapfile

不宜设置过大,原因是Swap其实是占用的硬盘空间进行疯狂读写,会缩短硬盘寿命,并且Swap出来的这一部分内存也比较慢。
应该设置多大Swap的参考:https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/installation_guide/s2-diskpartrecommend-ppc

物理内存建议的交换空间大小
⩽2GB内存的2倍
>2GB~8GB等于内存大小
>8GB~64GB至少4G
>64GB至少4G

之后激活Swap分区并设置其开机自启动:

1
2
3
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab

再次执行

1
swapon -s

即可看到当前Swap的大小了。

调整 Swappiness 值

Swappiness的值可控制系统在还有真实内存剩余的时候尽量少用Swap,比如设为10%:

1
echo "vm.swappiness=10" >> /etc/sysctl.conf

执行

1
sysctl -p

使新的Swappiness值生效。

删除 Swap 分区

停用Swap分区:

1
swapoff -v /swapfile

关闭Swap的开机自启:

1
sed -i '/\/swapfile swap swap defaults 0 0/d' /etc/fstab

并删除之前创建的Swap文件:

1
rm /swapfile

IPv6 相关操作

先查看机器是否拥有IPv6地址或是否启用了IPv6:

1
curl ipv6.ip.sb

如果返回Couldn't connect to server说明没有/没启用。

启用/禁用 IPv6

禁用IPv6:

1
2
echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf

并重载sysctl配置:

1
sysctl -p

开启IPv6:
删除之前的设置即可。

1
2
3
sed -i '/net.ipv6.conf.all.disable_ipv6=1/d' /etc/sysctl.conf
sed -i '/net.ipv6.conf.default.disable_ipv6=1/d' /etc/sysctl.conf
sysctl -p

设置 IPv4 优先

先执行

1
curl ip.sb

看看返回的是IPv4地址还是IPv6地址,返回的是谁,目前就是谁优先。

一般有IPv6地址的机器会默认优先IPv6地址。执行

1
echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf

curl ip.sb,即可看到返回的是IPv4地址。

取消 IPv4 优先

把刚刚添加的那一行配置注释掉即可:

1
sed -i 's/precedence ::ffff:0:0\/96  100/#precedence ::ffff:0:0\/96  100/' /etc/gai.conf

curl ip.sb,即可看到返回的是IPv6地址。也可以curl ipv6.google.com看看。