服务器维护记录
系统设置
nano vim
修改为四个空格
1 |
|
python
记得链接一下
1 |
|
时区
参考文章
使用 date
检查当前系统的时区,一般默认是 UTC
可以使用
1 |
|
选择北京时间,然后选择时区
1 |
|
这样使用 date
时可以发现变成了 CST
东八区时间,但是依然是12小时制
详细检查时间
1 |
|
修改为24小时制
1 |
|
需要重启 | 重新登陆才能生效
需要注意,回滚快照后需要检查时间是否正确,重启系统可以重新矫正时间
用户
创建用户
1 |
|
删除用户
1 |
|
如果用户组无法自动删除,可以手动删除
1 |
|
创建无终端无法登录的账户
1 |
|
WiFi
需要安装的软件包
1 |
|
wpasupplicant
连接WiFi使用的模块wireless-tools
扫描WiFi使用的模块iw
扫描硬件使用的模块
检查你的WiFi网卡名称
1 |
|
- WiFi网卡一般以
wlp
开头
(选做)扫描周围的可用网络SSID
1 |
|
确定SSID和密码后,先生成配置文件
1 |
|
然后使用配置文件设置连接
1 |
|
wlp4s0
应该是你自己的WiFi硬件名称
连接WiFi,申请DHCP的IP地址
1 |
|
检查IP是否获取
1 |
|
nmcli
ubuntu server使用 NetworkManager 接管 netplan
1 |
|
添加
1 |
|
然后接受更改
1 |
|
此时使用
1 |
|
可以看到大部分的接口都被接管, 但是应该没启用(深绿色)
修改超时等待时间
1 |
|
在 [main]
内增加 configure-timeout=120
添加链接,给接口 ens19 增加为DHCP,设置超时为300秒
1 |
|
添加链接,给接口 ens18 设置静态连接,设置超时为200秒
1 |
|
启用连接
1 |
|
检查连接
1 |
|
删除多余IP
有时候因为nmcli反复配置了静态地址又配置了动态地址会出现一点问题,按照这个指令删除多余的地址
1 |
|
- ip **是多余的地址
拒绝权限
拒绝sudo下的权限
有时你sudo了也不能用一些指令(比如 reboot )
在root下
1 |
|
添加一个指令组,要求指令名称是全大写(不然好像会报错),然后添加一些指令
1 |
|
对某个自定义用户或自定义组使用这个权限组
1 |
|
拒绝su指令
有的用户可以使用 su 来切换到别的用户,进行拒绝
1 |
|
添加PAM(可插拔认证模块)
1 |
|
然后创建拒绝文件,写入用户名
1 |
|
Mysql && MariaDB
查询所有用户
1 |
|
删除用户
1 |
|
查询当前活动连接数
1 |
|
查询链接的详细信息, 有那些用户在读写
1 |
|
IP
tailscale会为机器分配 CGNAT(运营商级NAT)
地址 , 为 100.64.0.0/10 ( 100.64.0.0 ~ 100.127.255.255 )
, 大约400万个地址
- 一般情况下不会与常见的内网保留地址冲突 ( 10.0.0.0/8 也不会 ) , 不会干扰 LAN
- 这些地址也不会在互联网上路由
注意
尽管有400万个地址 , 但是tailscale的私网v4依然在快速耗尽
现在不再分配唯一的私网v4, 而是可能重复的v4复用地址 , 并很可能只分配v6
由于重用机制存在, 当你尝试跨网(分享网络)时, 对方网络完全有可能存在IP地址与你网络某台机器相同, 从而导致灾难
为了解决这个问题, tailscale决定给每个分享网络的入网机器分配跟你网络不冲突的IP地址
这相当于, 这台分享机器在两张网都会有一个IP地址, 类似于网关
DNS & SearchDomain
记住服务器的IP会比较麻烦, tailscale允许使用DNS来为你的IP分配域名, 叫做 magic DNS
同时也能设置服务器的公共DNS
不过你无法添加自定义DNS , 他会自动分配
DNS
DNS设置有两块
- 受限DNS ( restricted nameserver)
只处理某些特定域名的DNS服务, 一般是你自己架设的内网DNS
例如, 你希望把一个特殊域名劫持掉, 作为内网的域名服务使用, 或者为了避免域名被国内DNS服务商污染, 要求一些特定域名使用外国的DNS查询 , 可以设置这个DNS
- 全局DNS ( global nameserver)
所有的DNS查询都走这个全局DNS, 也就是默认的DNS查询
全局DNS会被视作一个实体(IP集), 例如你设置全局服务器为 1.1.1.1 , 识别到为 Cloudflare , 则会自动添加所有CF的DNS地址作为DNS而不仅仅是一个DNS地址
一般情况下机器都会使用本地或者DHCP服务器通告的DNS地址, 你需要额外设置 强制本地DNS切换 , 参见 Override Local DNS部分
SearchDomain
搜索域(SearchDomain) , 即你可以不使用完全域名(FQDN, Fully Qualified Domain Name) , 他会自动补足后缀来节省时间
例如, 设置 example.com
为搜索域, 当你尝试访问 test
时会自动补足为 test.example.com
进行DNS查询 , 如果配置了多个搜索域, 会逐个查找, 直到有查询结果
- MagicDNS启用后会指派一个优先级最高的搜索域 (DNS)
- 你可以按照自己的想法添加搜索域并排列优先级
- 你也可以直接在公共的DNS上直接解析你的域名为tailscale的内网地址, 只有内网的服务器才能访问到这些IP
注意, 由于现代程序使用了很多种方式来提高域名查询速度 ( 例如并行查询 , 并基于历史的返回速度对DNS服务器的优先级进行重新排序 ) , tailscale 不一定能确保DNS查询按照预期的顺序查询
如果你期望查询一定按照顺序进行查询, 回去使用DNS拆分 ( restricted domain) 或指定一个你的私人DNS 并在其中完成需要的动作
Force Override Local DNS
基于一些特殊原因你可能希望覆盖接入网络的机器的DNS服务
- 确保机器可以访问一些仅内网的域名
- 防止设备使用不受控制/被污染的DNS服务器
- 对设备的DNS解析域名访问进行审计控制过滤等
tailscale允许你强制网络中的设备都使用预定义的服务器 ,启用后加入网络的客户端将收到通知并忽略客户端自己的DNS
注意
必须确认所有的客户端都可以访问你即将指定的全局服务器, 否则会导致客户端DNS工作异常
Control D
注意
Control D似乎是一个云DNS ,你不能自己单独部署并修改配置
但是可以创建用户后使用他们的公共DNS, 并根据你的配置进行管控
高性能的可自定义的DNS服务器 , 包括域名审计 , 解析拦截 , 劫持以及家长控制等
- 内置了一些自动更新的恶意和广告的域名和IP订阅, 可以自动阻止恶意及解析
- 自动删除一些广告跟踪的参数
部署
首先需要选择解析器(resolver)类型
- Legancy
- DoH
- DoT
- DoQ ( DNS Over QUIC)
将配置文件导入终端Control D即可
Docker
容器内存操作
直接使用 htop
只能检查宿主的内存使用情况,要了解容器的内存使用情况需要使用别的指令
1 |
|
处理内存泄露
首先查看容器的内存详细信息
1 |
|
尝试执行 echo 3 > /proc/sys/vm/drop_caches
来丢掉所有的缓存文件,释放缓存(危险操作)
docker-compose yaml
介绍
yaml文件支持一种叫做 锚点
的变量列表, 允许全文共享一些变量
1 |
|
定义共享变量组后的调用方法 , 这里以 docker-compose为例
1 |
|
${sysEnv} 与 ${sysEnv: - }区别
前者如果没有找到系统变量则为空, 后者则使用空字符串作为默认值
profile 字段
使用profile字段可以配置这个服务在哪个配置项中被使用, 例如
1 |
|
按照匹配规则, docker-compose将会按照如下方式启动服务
- 没有配置
profiles
字段的服务一定会被启动 profiles
配置为""
时无论指定的配置项为何都会被启动profiles
配置为具体值时, 只有—profile
指定才会被启动
举个栗子
1 |
|
如果执行默认的启动配置
1 |
|
那么, 根据上方的配置文件, app
服务会持续保持启用, 且只有他会启动,其他的服务必须指定配置项才能启动
1 |
|
此时配置为 fronted
的服务都会启动, 没有配置 profiles
字段的服务也会保持启动, 包括 app web debug
如果不指定任何具体值
1 |
|
那么只会启动 profiles
配置为 ""
的服务, 以及没有配置 profiles
字段的服务, 包括 app something
,其他服务不会启动
docker compose允许一个服务从属于多个profile