@@ -167,13 +167,15 @@ cleanup_firewall() {
167167 _step " 清理端口转发规则..."
168168
169169 if [ -f " $FIREWALL_LIB " ]; then
170+ # 使用防火墙库清理(推荐,会自动持久化)
170171 fw_cleanup_all
171172 else
172173 # 回退:手动清理
173174 if command -v nft > /dev/null 2>&1 ; then
174175 nft delete table inet kubevirt 2> /dev/null || true
175176 fi
176177 if command -v iptables > /dev/null 2>&1 ; then
178+ # 清理IPv4规则
177179 local chain
178180 for chain in PREROUTING OUTPUT POSTROUTING; do
179181 local i=0
@@ -186,12 +188,36 @@ cleanup_firewall() {
186188 i=$(( i + 1 ))
187189 done
188190 done
191+ # 清理IPv6规则
192+ if command -v ip6tables > /dev/null 2>&1 ; then
193+ for chain in PREROUTING OUTPUT POSTROUTING; do
194+ local i=0
195+ while [ " $i " -lt 500 ]; do
196+ local rule_num
197+ rule_num=$( ip6tables -t nat -L " $chain " --line-numbers -n 2> /dev/null | \
198+ grep " KUBEVIRT-VM-" | head -1 | awk ' {print $1}' )
199+ [ -z " $rule_num " ] && break
200+ ip6tables -t nat -D " $chain " " $rule_num " 2> /dev/null || break
201+ i=$(( i + 1 ))
202+ done
203+ done
204+ fi
205+ # 持久化清理后的规则
206+ if command -v netfilter-persistent > /dev/null 2>&1 ; then
207+ netfilter-persistent save 2> /dev/null || true
208+ elif [ -x /etc/init.d/iptables-persistent ]; then
209+ /etc/init.d/iptables-persistent save 2> /dev/null || true
210+ elif command -v iptables-save > /dev/null 2>&1 ; then
211+ mkdir -p /etc/sysconfig
212+ iptables-save > /etc/sysconfig/iptables 2> /dev/null || true
213+ ip6tables-save > /etc/sysconfig/ip6tables 2> /dev/null || true
214+ fi
189215 fi
190216 fi
191217 rm -f /etc/kubevirt/port-rules.conf
192218 rm -f /etc/kubevirt/iptables-rules
193219
194- _info " 防火墙规则清理完成"
220+ _info " 防火墙规则清理完成(已持久化) "
195221}
196222
197223# ===== 停用并删除 systemd 服务 =====
@@ -293,10 +319,11 @@ print_summary() {
293319 echo " ✓ CDI 组件"
294320 echo " ✓ K3s Kubernetes 集群"
295321 echo " ✓ virtctl 工具"
296- echo " ✓ 端口转发规则(nftables/iptables)"
322+ echo " ✓ 端口转发规则(nftables/iptables,含持久化规则 )"
297323 echo " ✓ 相关配置文件"
298324 echo " "
299325 _warn " vmlog 文件未删除,如需清理请手动运行:rm -f vmlog"
326+ _warn " iptables-persistent/netfilter-persistent 服务未卸载(可能有其他用途)"
300327 echo " ======================================================"
301328}
302329
0 commit comments