? Ubuntu 22.04 本地/通用服務器初始化配置清單
1. 設置時區
sudo timedatectl set-timezone Asia/Shanghai
2. 防火墻配置(UFW)
sudo ufw enable
sudo ufw default deny
# 可選放通SSH或其他端口
sudo ufw allow 22/tcp
# 查看狀態
sudo ufw status
# 禁用防火墻
# sudo ufw disable
3. 安裝常用基礎軟件
sudo apt update && sudo apt install -y vim wget lrzsz bash-completion tree lsof rsync unzip net-tools
4. 優化資源限制(limits.conf)
sudo tee -a /etc/security/limits.conf << 'EOF'
root soft nofile 65535
root hard nofile 65535
root soft stack unlimited
root hard stack unlimited
root soft nproc 127962
root hard nproc 127962
root soft core unlimited
root hard core unlimited
EOF
5. 配置靜態IP(手動編輯)
sudo vi /etc/netplan/00-installer-config.yaml
sudo netplan apply
6. 徹底關閉 IPv6
sudo tee -a /etc/sysctl.conf << 'EOF'
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF
sudo sysctl -p
7. 刪除 Snap 系統(節省空間、提高兼容性)
snap list
sudo snap remove --purge lxd
sudo snap remove --purge core20
sudo snap remove --purge snapd
sudo apt remove --autoremove snapd
8. 配置國內 DNS 并關閉 DNSStubListener
sudo vi /etc/systemd/resolved.conf
修改為:
[Resolve]
DNS=223.5.5.5
DNSStubListener=no
然后執行:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved
9. 開啟系統時間同步(默認使用 systemd-timesyncd
)
sudo timedatectl set-ntp true
如需自定義 NTP:
sudo vi /etc/systemd/timesyncd.conf
10. 禁用 Swap(適用于純內存型虛擬化環境)
sudo swapoff -a
sudo sysctl -w vm.swappiness=0
sudo sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
11. SSH 啟用 root 登錄(僅限內網、測試環境,生產不推薦)
sudo vi /etc/ssh/sshd_config
修改或添加:
PermitRootLogin yes
然后重啟 SSH 服務:
sudo systemctl restart ssh
🛠? 一鍵初始化優化交互腳本
#!/bin/bashset -efunction prompt() {read -rp "$1 [y/N]: " responsecase "$response" in[yY][eE][sS]|[yY]) return 0 ;;*) return 1 ;;esac
}echo "🌐 Ubuntu 22.04 云/虛擬化服務器初始化交互腳本"# 1. 設置時區
if prompt "1?? 設置時區為 Asia/Shanghai?"; thentimedatectl set-timezone Asia/Shanghaiecho "? 時區已設置為 Asia/Shanghai"
fi# 2. 安裝常用工具
if prompt "2?? 安裝常用軟件包(vim wget net-tools 等)?"; thenapt update && apt install -y vim wget lrzsz bash-completion tree lsof rsync unzip net-toolsecho "? 常用工具安裝完成"
fi# 3. 優化 limits.conf
if prompt "3?? 配置系統資源限制(/etc/security/limits.conf)?"; thencat >> /etc/security/limits.conf << EOF
root soft nofile 65535
root hard nofile 65535
root soft stack unlimited
root hard stack unlimited
root soft nproc 127962
root hard nproc 127962
root soft core unlimited
root hard core unlimited
EOFecho "? limits.conf 已配置"
fi# 4. 禁用 IPv6
if prompt "4?? 禁用 IPv6?"; thencat >> /etc/sysctl.conf << EOF
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOFsysctl -pecho "? IPv6 已禁用"
fiif prompt "2?? 修改 GRUB 參數徹底禁用 IPv6?(重啟后生效)"; thenGRUB_FILE="/etc/default/grub"if grep -q "ipv6.disable=1" "$GRUB_FILE"; thenecho "🔁 GRUB 已包含 ipv6.disable=1,無需重復添加"elsesed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="\1 ipv6.disable=1"/' "$GRUB_FILE"echo "? GRUB 參數已添加"update-grubfi
fi# 5. 刪除 snap
if prompt "5?? 刪除 snap 及其組件(節省空間)?"; thensnap list || truesnap remove --purge lxd || truesnap remove --purge core20 || truesnap remove --purge snapd || trueapt remove --autoremove snapd -y || trueecho "? snap 已刪除"
fi# 6. 配置 DNS
if prompt "6?? 配置 DNS 為(223.5.5.5)并關閉 DNSStubListener?"; thensed -i '/^#*DNS=/c\DNS=223.5.5.5' /etc/systemd/resolved.confsed -i '/^#*DNSStubListener=/c\DNSStubListener=no' /etc/systemd/resolved.confln -sf /run/systemd/resolve/resolv.conf /etc/resolv.confsystemctl restart systemd-resolvedecho "? DNS 配置完成"
fi# 7. 開啟時間同步
if prompt "7?? 開啟時間同步?"; thentimedatectl set-ntp trueecho "? NTP 時間同步已啟用"
fi# 8. 禁用 Swap
if prompt "8?? 禁用 Swap(建議內存足夠情況下)?"; thenswapoff -asysctl -w vm.swappiness=0sed -ri '/^[^#]*swap/s@^@#@' /etc/fstabecho "? Swap 已禁用"
fi# 9. 防火墻配置(UFW)
if prompt "9?? 啟用防火墻(默認拒絕,放通22端口)?"; thenufw enableufw default denyufw allow 22/tcpecho "? 防火墻已啟用,22端口已放行"
fi# 10. SSH 啟用 Root 登錄
if prompt "🔟 啟用 root 用戶 SSH 登錄?(不推薦生產使用)"; thensed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_configsystemctl restart sshecho "? Root 登錄已啟用"
fiecho "🎉 所有選擇的操作已完成 ?"
保存為 init.sh
,賦予執行權限并運行:
chmod +x init.sh
sudo ./init.sh
📌 建議后續補充(非必須):
- 設置主機名(
hostnamectl set-hostname
) - 創建新用戶并設置免密sudo權限
- 安裝 fail2ban、防火墻策略等安全組件
- 啟用 BBR(TCP加速)
- 開啟日志輪轉策略(logrotate)