Wykonaj rollback po zapisaniu wyników. Najpierw, jeszcze na działającej konfiguracji laboratoryjnej, zachowaj wynik kontroli i potwierdź, które pliki są własnością Lab 05.
sudo named-checkconf
sudo named-checkzone lab.test /etc/bind/db.lab.test
sudo named-checkzone 100.168.192.in-addr.arpa /etc/bind/db.192.168.100
systemctl list-unit-files | grep -E '^(bind9|named).service'
Na DNS SERVER wybierz wykrytą jednostkębind9 albo named, zatrzymaj ją na czas odtwarzania i przywróć named.conf.local. Pliki stref usuń tylko wtedy, gdy zapisany marker potwierdza, że nie istniały przed ćwiczeniem; w przeciwnym razie odtwórz kopię.
STATE="$HOME/lab05-state"
UNIT=bind9
sudo systemctl stop "$UNIT"
sudo cp -a "$STATE/named.conf.local.before-edit" /etc/bind/named.conf.local
for FILE in db.lab.test db.192.168.100; do
if grep -qx present "$STATE/$FILE.marker"; then
sudo cp -a "$STATE/$FILE.before" "/etc/bind/$FILE"
else
# UWAGA: usuń plik strefy tylko wtedy, gdy marker potwierdza jego wcześniejszy brak.
sudo rm -- "/etc/bind/$FILE"
fi
done
sudo named-checkconf
sudo test ! -e /etc/bind/db.lab.test ||
sudo named-checkzone lab.test /etc/bind/db.lab.test
sudo test ! -e /etc/bind/db.192.168.100 ||
sudo named-checkzone 100.168.192.in-addr.arpa /etc/bind/db.192.168.100
Odtwórz stan jednostki zapisany przed instalacją. Jeżeli używaną jednostką jest named, podstaw tę nazwę. Dla stanunot-found zatrzymaj i wyłącz nowo zainstalowaną usługę, pozostawiając pakiet do świadomej decyzji.
STATE="$HOME/lab05-state"
UNIT=bind9
ENABLED=$(cat "$STATE/$UNIT.enabled")
ACTIVE=$(cat "$STATE/$UNIT.active")
case "$ENABLED" in
enabled|enabled-runtime) sudo systemctl unmask "$UNIT"; sudo systemctl enable "$UNIT" ;;
disabled) sudo systemctl unmask "$UNIT"; sudo systemctl disable "$UNIT" ;;
masked) sudo systemctl disable "$UNIT"; sudo systemctl mask "$UNIT" ;;
not-found) sudo systemctl disable "$UNIT" ;;
static|indirect|generated|transient|alias) : ;;
*) echo "Nietypowy stan enabled: $ENABLED — odtwórz go świadomie" ;;
esac
case "$ACTIVE" in
active|reloading) sudo systemctl start "$UNIT" ;;
inactive|failed|unknown) sudo systemctl stop "$UNIT" ;;
*) echo "Nietypowy stan active: $ACTIVE — odtwórz go świadomie" ;;
esac
systemctl is-enabled "$UNIT" || true
systemctl is-active "$UNIT" || true
journalctl -u "$UNIT" -n 30 --no-pager
Na każdej VM odtwórz jej własne pliki sieci i resolver. Użyj lokalnej konsoli VirtualBox, bo restart sieci może zerwać SSH. Opcja --remove-destination odtwarza również zapisany typ pliku lub dowiązania resolv.conf.
STATE="$HOME/lab05-state"
if grep -qx present "$STATE/interfaces.marker"; then
sudo cp -a "$STATE/interfaces.before" /etc/network/interfaces
else
# UWAGA: usuń plik tylko wtedy, gdy marker potwierdza jego wcześniejszy brak.
sudo rm -- /etc/network/interfaces
fi
sudo cp -a --remove-destination "$STATE/resolv.conf.before" /etc/resolv.conf
sudo systemctl restart networking
ip -br address
ip route show table all
cat /etc/resolv.conf
resolvectl status 2>/dev/null || true
Przywróć zapisane ustawienia kart VirtualBox i porównaj wyniki z plikami *.before. Pakiety BIND pozostają zainstalowane. Ich odinstalowanie jest osobnym, opcjonalnym zadaniem i wymaga sprawdzenia zależności; ta procedura nie usuwa innych stref, cudzych plików ani cache systemowego resolvera.
Kontynuuję Lab 06: wykonaj pełny rollback, bo Lab 06 używa innej topologii i adresacji. Kończę ćwiczenia: usuń katalogi stanu dopiero po zgodnym porównaniu adresów, tras, resolvera i usługi.
Nie odtwarzaj sztucznie początkowego stanufailed. Zatrzymaj usługę i opisz wcześniejszą awarię w raporcie; rollback nie powinien celowo ponownie psuć jednostki.