-
创建者:
虚拟的现实,上次更新时间:7月 02, 2025 需要 4 分钟阅读时间
DNS设置
查看当前DNS配置
DNS 全局配合和网卡局部配置 systemd 239 中 systemd-resolve 已被重命名为 resolvectl
$ resolvectl status Global(全局配置) Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub Link 2 (enp1s0)(某网卡局部配置) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 8.8.8.8 DNS Servers: 8.8.8.8 8.4.4.8
临时设置DNS
# vim /etc/resolv.conf nameserver 1.1.1.2 nameserver 1.0.0.2
永久设置DNS
1.最简单的方法
使用resolvconf命令设置,通过此命令永久设置dns
# 1.安装resolvconf # apt install resolvconf # 2. 修改head文件(此文件由resolvconf生成) # vim /etc/resolvconf/resolv.conf.d/head nameserver 1.1.1.2 nameserver 1.0.0.2 # 4.配置shengxiao # resolvconf -u # 3.开机启动服务 systemctl enable --now resolvconf.service
注意:
- 修改完成后,必须通过 resolvconf -u 生效,此时会在 /etc/resolv.conf 中添加dns配置并生效。
- 生效后,通过 resolvectl status 查询不到此配置生效情况,但是通过 netplan apply 生效可在全局配置中找到。最终以 /etc/resolv.conf 中的dns配置生效为准。
2.非简单方法
修改/etc/netplan/目录下的yml文件
# 1.修改相关配置文件 # vim /etc/netplan/xxx.yml network: ethernets: enp1s0: dhcp4: true nameservers: addresses: [8.8.8.8, 8.4.4.8] version: 2 # 2.配置生效 # netplay apply
3.配置生效总结
netplay apply 应用后,resolvconf 和 netplan 的配置通过 resolvectl status 查到,但是只有 resolvconf 的配置会写入 /etc/resolv.conf。
$ resolvectl status Global(全局配置) Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: foreign Current DNS Server: 1.1.1.2 DNS Server: 1.0.0.2 Link 2 (enp1s0)(某网卡局部配置) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 8.8.8.8 DNS Servers: 8.8.8.8 8.4.4.8 $ cat /etc/resolv.conf nameserver 1.1.1.2 nameserver 1.0.0.2
时间同步
Ubuntu 22.04 中
- timedatectl 替代了老旧的 ntpdate。默认情况下,timedatectl 在系统启动的时候会立刻同步时间,并在稍后网络连接激活后通过 socket 再次检查一次。
- timesyncd 替代了 ntpd 的客户端的部分。默认情况下 timesyncd 会定期检测并同步时间。它还会在本地存储更新的时间,以便在系统重启时做时间单步调整。
timesyncd 和 ntpd 区别:
- ntpd是步进式平滑的逐渐调整时间
- timesyncd是断点式更新时间,也就是时间不同会立即更新
# 1. 配置时间同步 # vi /etc/systemd/timesyncd.conf [Time] # 一个空格分隔的NTP服务器列表 #NTP= # 一个空格分隔的NTP服务器列表,用作备用NTP服务器 #FallbackNTP=ntp.ubuntu.com # 最大可接受的"root distance"秒数(最大误差),默认值为 5 秒 #RootDistanceMaxSec=5 # NTP消息的 最小/最大轮询间隔秒数 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048 # 2.查看时间同步 # timedatectl
设置静态 IP 地址
1、通过 netplan 配置静态 IP 地址,先通过 ip address和 ip link2、 查看当前的 IP 地址情况,然后备份已有的 netplan 配置文件
ip address ip link ls /etc/netplan/ sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all_backup.yaml sudo nano /etc/netplan/01-network-manager-all.yaml
3、参照下面的格式配置静态 IP 地址
network: version: 2 renderer: networkd ethernets: ens18: dhcp4: no addresses: - 192.168.1.22/24 gateway4: 192.168.1.101 nameservers: addresses: [8.8.8.8, 8.8.4.4]
如果需要配置多个 IP 地址,可以参考下面的内容
network: version: 2 renderer: networkd ethernets: ens18: dhcp4: no addresses: - 192.168.1.22/24 - 192.168.1.23/24 - 192.168.1.24/24 routes: - to: default via: 192.168.1.101 nameservers: addresses: [8.8.8.8, 8.8.4.4]
DHCP 的配置文件可以参考
# This is the network config written by 'subiquity' network: ethernets: eno1: dhcp4: true version: 2
5、保存后重启并应用网络配置
sudo netplan try sudo netplan apply sudo systemctl restart systemd-networkd
安全基线
设置过期时间
# vim /etc/login.defs PASS_MAX_DAYS 90 PASS_MIN_DAYS 0 PASS_WARN_AGE 10
密码长度已不在此处,而是在相关pam中进一步设置。
设置密码复杂度、长度、过期时间、密码尝试次数
通过 pwquality 控制,Ubuntu 22.04 默认没有此模块,需要提前安装。
# 安装libpam-pwquality apt install libpam-pwquality # 设置密码复杂度 vim /etc/security/pwquality.conf minlen = 8 dcredit = -1 lcredit = -1 ocredit = -1 ucredit = -1 # 设置密码尝试3次 vim /etc/pam.d/common-password password requisite pam_pwquality.so try_first_pass retry=3 # 禁止重复使用旧密码 vim /etc/pam.d/common-password password [success=1 default=ignore] pam_unix.so obsecure use_authtok try_first_passs yescrypt remember=5
防暴力破解
Ubuntu 22.04 中,pam_tally2 已被移除,可以使用 pam_faillock 代替。
# faillock 包含在libpam-modules中,无需安装 # faillock参数配置 # grep -v '#' /etc/security/faillock.conf dir = /var/run/faillock audit silent deny = 3 fail_interval = 900 unlock_time = 120
关于faillock的配置,涉及以下两个pam文件
- /etc/pam.d/common-auth
- /etc/pam.d/common-account
# 用户账户锁定时连续身份验证失败必须达到的间隔长度默认为 900 秒 # 用户账户锁定时间默认为 600 秒, root用户不受管控 # vim /etc/pam.d/common-auth auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900 auth [success=1 default=ignore] pam_unix.so nullok auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900 auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900 auth requisite pam_deny.so auth required pam_permit.so auth optional pam_cap.so # vim /etc/pam.d/common-account account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so account requisite pam_deny.so account required pam_permit.so account required pam_faillock.so
Selinux
Ubuntu22.04 默认没有安装 Selinux,进一步操作:
# 1.安装selinux apt update apt install policycoreutils selinux-utils selinux-basics # 2.启动selinux selinux-activate # 3.enforce selinux,需重启生效 selinux-config-enforcing # 4.查看selinux 状态 setstatus SELinux status: disabled # 5.关闭selinux,需重启生效 vim /etc/selinux/config SELINUX=enforcing 或 SELINUX=disabled # 6.临时设置selinux setenforce 0 或 setenforce 1
防火墙
Ubuntu22.04 默认使用 ufw 管理防火墙,默认处于禁用状态。
# 1.安装ufw apt install ufw # 2.防火墙状态 ufw status verbose
防火墙常用配置
sudo ufw default allow # 預設允許 sudo ufw default deny # 預設封鎖 sudo ufw allow ssh sudo ufw allow 22 sudo ufw allow 80 # 允許 80 sudo ufw allow 443 # 允許 443 sudo ufw deny 3389 # 封鎖 3389 sudo ufw deny 21 # 封鎖 21 sudo ufw allow 6000:6007/tcp # 允許 TCP 6000~6007 sudo ufw allow 6000:6007/udp # 允許 UDP 6000~6007 sudo ufw allow from 192.168.11.10 # 允許 192.168.11.10 的所有連線 sudo ufw allow from 192.168.11.0/24 # 允許 192.168.11.1~192.168.11.255 的所有連線 sudo ufw deny from 192.168.11.4 # 封鎖 192.168.11.4 的所有連線 sudo ufw status numbered sudo ufw enable # 啟用防火牆 sudo ufw disable # 停用防火牆
内核
在做内核参数优化时,提示报错 sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: No such file or directory。Ubuntu22.04 使用 5.15.0-60-generic,经过进一步了解到从4.10内核开始,官方修改了时间戳的生成机制,在此我们参考小米技术的总结的建议:
- tcp_tw_recycle 选项在4.10内核之前还只是不适用于NAT/LB的情况(其他情况下,我们也非常不推荐开启该选项),但4.10内核后彻底没有了用武之地,并且在4.12内核中被移除.
- tcp_tw_reuse 选项仍然可用。在服务器上面,启用该选项对于连入的TCP连接来说不起作用,但是对于客户端(比如服务器上面某个服务以客户端形式运行,比如nginx反向代理)等是一个可以考虑的方案。
- 修改TCP_TIMEWAIT_LEN是非常不建议的行为。
跨版本升级
以下内容基于从 20.04 升级到 22.04 ,当然 22.04 升级到 24.04 也类似
1、查询系统版本和磁盘空间
> lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.04 Codename: focal df -H
2、更新现有的组件并清理不必要的组件,安装升级所需的组件
sudo apt update -y && sudo apt upgrade -y sudo apt dist-upgrade sudo apt autoremove sudo apt install update-manager-core sudo reboot
3、重新开机后确认是否有对应升级的版本
> sudo do-release-upgrade --check-dist-upgrade-only Checking for a new Ubuntu release There is no development version of an LTS available. To upgrade to the latest non-LTS development release set Prompt=normal in /etc/update-manager/release-upgrades. sudo do-release-upgrade -d --allow-third-party
-d是指升级到最新的开发版,即使是 LTS 版本都没开发出来。
参照升级提示一路完成系统升级并重启
4、清理升级后不必要的组件
> lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jammy sudo apt update -y && sudo apt upgrade -y sudo apt --purge autoremove sudo apt autoclean
- 无标签