Kontakt  Oferta 
 Kontakt  Oferta
ARWAL - internet, kasy fiskalne, programowanie, serwis, komputery

V-SMART 2.x awaria multiwan

1. Konfiguracja z podziałem usług

 

W takiej konfiguracji standardowo część ruchu jest markowana aby została obsłużona przez drugie łącze. U mnie wygląda to tak ( plik /serwer/skrypty/firewall.sh ):

 

 

# ruch po wybranym porcie (80) docelowym po drugim laczu
$IPTABLES -A PREROUTING -t mangle -p tcp --dport 21 -j MARK --set-mark 0x2
$IPTABLES -A PREROUTING -t mangle -p tcp --dport 80 -j MARK --set-mark 0x2
$IPTABLES -A PREROUTING -t mangle -p tcp --dport 110 -j MARK --set-mark 0x2
$IPTABLES -A PREROUTING -t mangle -p tcp --dport 443 -j MARK --set-mark 0x2
$IPTABLES -A PREROUTING -t mangle -p tcp --dport 995 -j MARK --set-mark 0x2

 

 

Jeśli drugie łącze padnie to należy zakomentować linie decydujące o ruchu przez drugie łącze

# ruch po wybranym porcie (80) docelowym po drugim laczu
# $IPTABLES -A PREROUTING -t mangle -p tcp --dport 21 -j MARK --set-mark 0x2
# $IPTABLES -A PREROUTING -t mangle -p tcp --dport 80 -j MARK --set-mark 0x2
# $IPTABLES -A PREROUTING -t mangle -p tcp --dport 110 -j MARK --set-mark 0x2
# $IPTABLES -A PREROUTING -t mangle -p tcp --dport 443 -j MARK --set-mark 0x2
# $IPTABLES -A PREROUTING -t mangle -p tcp --dport 995 -j MARK --set-mark 0x2

 

Zmian dokonujemy przez Winscp , w trakcie zapisu zmian często pod winscp wyskakuje żadanie potwerdzenia hasła : query : . Po podaniu hasła i zapisaniu dokumentu uruchamiamy putty,w putty restartujemy lms : /serwer/start_all .

 

V-SMART odtwarzanie kopii

Jeśli w naszym serwerze wymienialismy dysk lub w serwerze testowym chcemy odtworzyć naszą konfigurację musimy utworzyć partycje zgodne z odtwarzanym obrazem. Zakałdamy , że obraz był tworzony według artykułu : v-smart instalacja partycje i tworzenie kopii. Za pomocą narzędzia gparted należącego do pakietu system rescue.

 

Należy utworzyć następujące partycje

 

partycja typ flagi rozmiar ( przykład dla dysku 40 GB ) kolejność tworzenia
/dev/sda1 ext3 boot 29 GB 1
/dev/sda3 fat32   9 GB 4
/dev/sda2
  /dev/sda5
extended
linux swap
  1 GB 2
3

 

Dysk po zakończeniu tworzenia partycji powinien wyglądać następująco :

gparted_dysk_vs...

 

Uwaga - prawidłowe nazwe partycji pojawią się dopiero po zatwierdzeniu ( apply ), po zapisaniu partycji należy ustawić flagę boot dla /dev/sda1 .

 

Jeśli mamy kopię na dysku USB to po jego podłączeniu wykonujemy komendy ( przykładowe przy założeniu , że dysk USB ma partycję /dev/sdb1, aby sprawdzić jakie partycje ma dysk USB możemy użyć partimage, aby partimage zobaczył dysk dołączony po starcie systemu trzeba odświeżyć urządzenia - refresh )

mount   /dev/sdb1   /mnt/windows
mount   /dev/sda3   /mnt/backup

 

Następnie możemy za pomocą mc kopiować kopie bezpieczeństwa między dyskiem lokalnym a dyskiem USB. W lewym panelu mc wybieramy np. dysk źródłowy a w prawym docelowy i przez F5 kopiujemy.

 

mc_kopiowanie_p...

 

Za pomocą komendy partimage możemy odtworzyć partycję sda1 z obrazu

 

partimage_odtwa...

 

Możemy również użyć partimage podając parametry w wierszu polecenia np.

partimage restore /dev/sda1 /mnt/backup/kopia.000

 

 Należy zwrócić uwagę na:

  • partycja sda1 była większa niż partycja ukryta w obrazie ( W przeciwnym wypadku pojawią się błędy )

  • trzeba podać pełną nazwę pliku ( łącznie ze ścieżką ) , np. /mnt/backup/kopia1.000
  • na pierwszym ekranie trzeba wybrać restore !!
  • przejście do kolejnych ekranów przez F5 , wszystkie wybory domyślne

 

Błąd za małej partycji wygląda następująco

partimage_odtwa...

 

Za pomocą programu gparted możemy zmienić rozmiar partycji i powtórzyć operację.

Czasami po przyróceniu przy starcie może pojawić się komunikat "missing operating system" ( zwłaszcza po przywracaniu na nowym komputerze ). Dzieje się tak dlatego , ponieważ informacje o grub ( rozruchowe ) są nieprawidłowe. Grub możemy naprawić przez system-rescue, uruchamiamy ponownie komputer z płytą system-rescue i wybieramy:

 

boot an existing linux OS installed on disc

 

Spowoduje to uruchomienie systemu vsmart za pośrednictwem system-rescue. Po zalogowaniu możemy naprawić grub :

grub-install /dev/sda

Do naprawy grub możemy również użyć narzędzia restall. Również partycję swap musimy odpowiednio podłączyć aby została prawidłowo działała w systemie debian. W pliku /etc/fstab dopisujemy ( o ile nie ma ) :

/dev/hda5    none    swap   sw   0   0

Za pomocą komendy top sprawdzamy czy swap działa prawidłowo.

Po przywróceniu może pojawić się problem kart sieciowych ( jeśli przywracamy na innym komputerze i innych kartach ). Debian zapisuje informacje o adresach mac kart sieciowych w pliku /etc/udev/rules.d/70-persistent-net.rules i w tym pliku trzeba skasować stare adresy MAC a nowe adresy MAC przywiązać do odpowiednich interfaców.

Tak przywrócony komputer będzie posiadał bazę LMS na dzień , kiedy została sporządzony obraz.


Po odtworzeniu kopii według opisu powyżej lub gdy dysponujemy komputerem zapasowym baza lms jest nieaktualna. Jeśli dysponujemy aktualną kopią bazy lms ( sposób tworzenia automatycznej kopii bazy lms opisałem w v-smart instalacja i tworzenie kopii ) odtwarzamy ją przez phpmyadmin . Logujemy się na serwer LMS na adres : http://adres serwera/phpmyadmin na użytkownika root .

phpmyadmin_logo...

Wybieramy bazę lms , import , wybieramy i odtwrzamy naszą zewnętrzną kopię

phpmyadmin_odtw...

 

V-SMART instalacja partycje i tworzenie kopii

Kopia bezpieczeństwa to podstawa spokojnego snu informatyka. Pierwszym etapem instalacji v-smart jest instalacja debiana. W celu wykonania obrazu systemu dobrze jest w trakcie instalacji podzielić nasz dysk na partycje. Należy zwrócić uwagę :

 

  • najpierw tworzymy partycję główną od początku , flaga boot, punkt podłączenia / , więcej niż 20 GB
  • partycja swap od końca dysku, rozmiar 1 GB
  • partycja backup w środku dysku, reszta , preferuję typ fat32

 

Na obrazach poniżej przedstawiłem istotne elementy podziału na partycje.

debian_inst1_re...
debian_inst2_wy...
debian_inst3_dy...
debian_inst4_wy...
debian_inst5_pa...
debian_inst6_pa...
debian_inst7_pa...

 

Do tworzenia kopii użyjemy system rescue. Za pomocą komend startx lub wizard uruchamiamy środowisko graficzne ( bardziej zaawansowani użytkownicy mogą wykonać kopie w środowisku tekstowym ). Za pomocą narzędzia gparted możemy zobaczyć w sposób graficzny podział dysku.

 

 

Często jest tak, że mamy już gotową instalację linuxa i nie mamy partycji na wykonanie kopii zapasowej. Za pomocą gparted możemy pozmieniać rozmiary partycji i wstawić partycje backup

 

gparted2_zmiana...

 

Gdy już nasz dysk jest odpowiednio przygotowany uruchamiamy nowy terminal , podłączamy partycję i za pomocą partimage wykonujemy obraz systemu.

 

partimage_tworz...

 

Trzeba jednak pamiętać , że jest to kopia utworzona na dysku lokalnym , który oczywiście może się uszkodzić. Do komputera podłączamy ( jeśli nie był podłączony wcześniej ) zewnętrzny dysk USB. Znów uruchamiamy partimage. Aby partimage zobaczył dołączony dysk USB musimy odświeżyć urządzenia ( refresh devices ). W przypadku USB 1.1 operacja ( i potem kopiowanie ) może być trochę czasochłonne. Na dysku USB powinniśmy mieć partycję fat32 na nasze kopie. Znajdujemy jej nazwę w systemie linux

 

gparted3_partyc...

 

Do wykonania kopii na zewnętrznym dysku musimy mieć podłączoną partcyję backup z dysku w komputerze oraz partcyję docelową za pomocą komendy mount. W terminalu uruchamiamy Midnight Commander ( mc ) i kopiujemy nasz obraz.

 

mc_kopiowanie_p...

 


Kopia bezpieczeństwa wykonana według powyższego opisu jest związana z określonym komputerem i konfiguracją. Aby odtworzyć tą konfigurację na innym komputerze lub innej konfiguracji sieciowej należy zwrócić uwagę na pliki :

 

plik

zawiera kiedy zmieniać

/etc/network/interfaces

podstawowe zewnętrzne łącze, łącze wewnętrzne przy zmianie konfiguracji sieci (adresy IP)

/etc/rc.local

pozostałe łącza przy zmianie konfiguracji sieci (adresy IP)
/etc/hostname nazwa komputera przy zmianie całej instalacji
/etc/hosts dane domeny przy zmianie całej instalacji

/etc/udev/rules.d/70-persistent-net.rules

dane kart sieciowych ( mac ) przy zmianie kart sieciowych

 


 

Automatyczny backup bazy i istotnych katalogów można wykonywać sposobem opisanym na forum v-smart. Poniżej zmodyfikowany opis tej procedury.

Łączymy się z naszym serwerem przez putty i wprowadzamy :

wget http://files.v-smart.pl/features/backupsys.tar.gz
tar -xf backupsys.tar.gz --directory=/home

 

Modyfikujemy tabelę zadań crona

nano /etc/cron.d/vsmart

 i dopisujemy

23 5 * * *       root    /home/backupsys/scripts/backup.sh

!!! Uwaga przed i po słowie root musi być tabulator !!!

 

W pliku /home/backupsys/scripts/db.conf ustalamy parametry połączenia z bazą danych.

LMS przechowuje swoje kopie bezpieczeństwa w /var/www/backups .

Standardowo LMS nieprawidłowo zapisuje kopie zewnętrzne.Aby rozwiązać ten problem poprawiamy plik /var/www/modules/dbview.php

Zamieniamy

header('Content-Length: '.$filename);

na :

header('Content-Length: '.filesize($filename));

Zgodnie z obowiązującymi przepisami providerzy internetowi mają obowiązek zapisywać w logach ruch ip. Funkcję tę możemy włączyć w v-smart. Ruch sieciowy będzie zapisywany do plików syslog. Pliki syslog na serwerze v-smart są przechowywane w /var/log i mają nazwy

  • syslog
  • syslog1
  • syslog2.gz
  • syslog3.gz
  • syslog4.gz
  • syslog5.gz
  • syslog6.gz
  • syslog7.gz

Jak widać logi 2-7 są kompresowane, dlatego skrypt ściągający logi może np. ściągać codziennie syslog2.gz

W pliku /serwer/skrypty/firewall.sh po limitach połączeń dodajemy zaznaczoną linię

# limit polaczen na portach powyzej 1024
$IPTABLES -A FORWARD -s $INTNET1 -p tcp --dport 1024: -m connlimit --connlimit-above $CONNLIMIT --connlimit-mask 32 -j REJECT --reject-with tcp-reset
$IPTABLES -A FORWARD -s $VPNNET1 -p tcp --dport 1024: -m connlimit --connlimit-above $CONNLIMIT --connlimit-mask 32 -j REJECT --reject-with tcp-reset

$IPTABLES -A FORWARD -o $EXTDEV -s $INTNET1 -p tcp -m state --state NEW -j LOG --log-level info --log-prefix "SYN-INTNET1 "

Ale plik syslog jest po 7 dniach usuwany. Dlatego należy ten ruch zapisywać na naszym lokalnym komputerze. 


W celu przygotowania tej kopii niezbędne jest wykonanie opisanej w poprzedniej części konfiguracji kopii.

Na początek tworzymy katalog : /home/backupsys/arch_lastdbs . W katalogu tym będzie zapisywana najnowsza kopia bazy danych. Kopia ta będzie automatycznie pobierana przez komputer zewnętrzny. W celu ograniczenia rozmiaru do bazy nie będą dołączane kopie statystyk.

Modyfikujemy plik /home/backupsys/scripts/config.conf ( dodajemy konfigurację APATH_lastdbs , zmienną APATH_lastdbs ustawiamy na utworzony krok wcześniej katalog )

 

# basic config
USER=root
GROUP=root
DEBUG=0
BTIME=14
APATH=/home/backupsys/arch
DIRS=/home/backupsys/scripts/dirs.conf
DBS=/home/backupsys/scripts/dbs.conf
APATH_lastdbs=/home/backupsys/arch_lastdbs

Modyfikujemy skrypt  /home/backupsys/scripts/backup.sh , ustawiamy aby katalog ostatniej bazy był czyszczony a następnie aby do tego katalogu zapisywała się ostatnia kopia, ustawiamy tworzenie kopii tak , aby pomijało statystyki.

#!/bin/bash
## by v-smart.pl of koz xD
. /home/backupsys/scripts/config.conf
# check what to remove
j=1;
for i in `ls -t $APATH`; do
    if [ ${j} -ge ${BTIME} ]; then
        if [ ${DEBUG} = '1' ]; then
            echo "removing directory ${APATH}/${i}";
        fi
        rm -frd ${APATH}/${i};
    fi
    j=$(($j + 1));
done
rm ${APATH_lastdbs}/*
# let's back it up!
DATE=`date +'%F'`;
DATELONG=`date +'%F.%H.%M'`
    if [ ${DEBUG} = '1' ]; then
        echo "making directory ${APATH}/${DATE}/dir";
        echo "making directory ${APATH}/${DATE}/db";
    fi
    mkdir -p ${APATH}/${DATE}/dir;
    mkdir -p ${APATH}/${DATE}/db;
    # directory backup
    grep "^[^#]" ${DIRS} | while read DIR; do
    FILE=dir`echo $DIR | tr '/' '-'`_${DATELONG}.tar.gz
    tar --directory=${DIR}/.. -pzcf ${APATH}/${DATE}/dir/${FILE} `basename ${DIR}` 1> /dev/null 2> /dev/null
    done
    # database backup
    grep "^[^#]" ${DBS} | while read DBNAME DBUSER DBPASS; do
    /usr/bin/mysqldump -d -u ${DBUSER} --password=${DBPASS} --add-drop-table --add-locks ${DBNAME} > ${APATH}/${DATE}/db/${DBNAME}_${DATELONG}.sql
    /usr/bin/mysqldump -u ${DBUSER} --password=${DBPASS} --add-drop-table --add-locks ${DBNAME} --ignore-table=lms.stats >> ${APATH}/${DATE}/db/${DBNAME}_${DATELONG}.sql
        # nazwa rozumiana przez lms : ${DBNAME}-"$(date +%s)"-2011032500.sql , jednak przy probie odtworzenia przez lms nie dziala, nalezy odtwarzac np. przez phpmyadmin lub bezposrednio z poziomu shella
    gzip ${APATH}/${DATE}/db/${DBNAME}_${DATELONG}.sql 1> /dev/null 2> /dev/null
    cp ${APATH}/${DATE}/db/*.gz $APATH_lastdbs
    done
    
    chown -R ${USER}.${GROUP} ${APATH}

 

W systemie windows tworzymy skrypt backup.bat , który będzie się łączył przez psftp ( jeśli nie mamy psftp można je pobrać ze strony putty , zalecam instalację całego pakietu putty ) z serwerem vsmart i pobierał najnowszą wersję bazy. Załóżmy , że nasz serwer znajduje się pod adresem 192.168.20.1 Skrypt powinien wyglądać następująco :

F:
del /Q "F:\Backup\my_network\LMS_ARWAL\*"
"C:\Program Files (x86)\PuTTY\psftp.exe" 192.168.20.1 -l root -pw mypassword -b D:\FTP\LMS_backup.txt
move /Y "F:\Backup\my_network\syslog.2.gz" "F:\Backup\my_network\syslog\syslog_%date%_odejmij1.gz"

Na początku tego skryptu kasujemy zawartość katalogu my_network. Nie kasujemy jednak podkatalogów. W rzeczywistości jest kasowana ostatnia baza lms ściągnięta z serwerem. Następnie uruchamiany jest  skrypt który wywołuje psftp z komendami zawartymi w  D:\FTP\LMS_backup.txt. Skrypt ściąga aktualną kopię bazy oraz ostatni plik syslog2.gz ( historia ruchu sieciowego ). Historia ruchu sieciowego ma zmienianą nazwę i jest przenoszona do podkatalogu syslog

Plik komend psftp wygląda następująco :

 

cd /home/backupsys/arch_lastdbs
lcd F:\Backup\my_network\my_LMS
mget *.gz
cd /var/log
mget syslog.2.gz
bye

 

Skrypt pobiera z serwera kopię .gz oraz plik syslog2.gz i zapisuje je w katalogu kopii zapasowej. Kopię zapasową można tak rozbudować aby dotyczyła wszystkich dostępnych  serwerów VSMART i mikrotik ( więcej informacji o kopii bezpieczeństwa dla systemu mikrotik ).

 

 

 

 

Początek strony