VestaCP – nelze se přihlásit do GUI (firewall po restartu)

Po migraci VestaCP z jednoho fyzického serveru na druhý se nelze připojit do GUI. Postup „opravy“ pokus-omyl dokumentujeme.

Postup opravy

Připojujeme se přes PuTTY.

sudo -i

# zjisteni stavu serveru VestaCP
service vesta status

# zjisteni stavu Apache2
service apache2 status

# zjisteni stavu Nginx
service nginx status

# nahled logu
cd /usr/local/vesta/logs
ls
nano +999999 auth.log
nano +999999 backup.log
nano +999999 error.log
nano +999999 nginx-access.log
nano +999999 nginx-error.log
nano +999999 system.log

# vse vypada dobre, kde je chyba netusime. zajimavy je ale system.log, ktery na uplnem zacatku obsahuje prvotni instalaci serveru. Tu se pokusime rekonstruovat. Vynechavame jediny radek s vytvorenim uzivatele admina.

v-change-sys-hostname  'dprostor.cz'
v-generate-ssl-cert  'dprostor.cz' 'instalace@d2a.cz' 'US' 'California' 'San Francisco' 'Vesta Control Panel' 'IT'
v-change-user-shell  'admin' 'bash'
v-change-user-language  'admin' 'en'
v-add-firewall-chain  'SSH'
v-add-firewall-chain  'FTP'
v-add-firewall-chain  'MAIL'
v-add-firewall-chain  'VESTA'
v-add-sys-ip  '10.11.0.80' '255.0.0.0' 'ens18'
v-change-sys-ip-nat  '10.11.0.80' '185.136.110.4'
v-update-user-counters  'admin'
v-rebuild-web-domains  'admin' 'no'
v-rebuild-dns-domains  'admin' 'no'
v-change-sys-ip-nat  '10.11.0.80' '185.136.110.4'

Hotovo?

Hotovo. Připojeno. GUI funkční. Zkoušíme vypnutí/spuštění serveru. A ejhle! Po restartu je zde totožný problém znovu… Jde se tedy testovat řádek po řádku, kdy se GUI probere.

# horký kandidát na vse-opravujici prikaz
v-change-sys-ip-nat  '10.11.0.80' '185.136.110.4'

Toto ale není věc, kterou bychom chtěli dělat po každém restartu. Zkoumáme tedy dál, co vlastně voláme…

#!/bin/bash
# info: change ip nat address
# options: IP NAT_IP [RESTART]
#
# The function for changing nat ip associated with ip.

#----------------------------------------------------------#
#                    Variable&Function                     #
#----------------------------------------------------------#

# Argument definition
ip=$1
nat_ip=$2
restart=$3

# Includes
source $VESTA/func/main.sh
source $VESTA/func/ip.sh
source $VESTA/conf/vesta.conf

#----------------------------------------------------------#
#                    Verifications                         #
#----------------------------------------------------------#

check_args '2' "$#" 'IP NAT_IP [RESTART]'
is_format_valid 'ip'
is_format_valid 'nat_ip'
is_ip_valid "$ip"

#----------------------------------------------------------#
#                       Action                             #
#----------------------------------------------------------#

# Updating IP
if [ -z "$(grep NAT= $VESTA/data/ips/$ip)" ]; then
    sed -i "s/^TIME/NAT='$nat_ip'\nTIME/g" $VESTA/data/ips/$ip
    old=''
    new=$nat_ip
else
    old=$(get_ip_value '$NAT')
    new=$nat_ip
    sed -i "s/NAT=.*/NAT='$new'/" $VESTA/data/ips/$ip
    if [ -z "$nat_ip" ]; then
        new=$ip
    fi
fi

# Updating WEB configs
if [ ! -z "$old" ] && [ ! -z "$WEB_SYSTEM" ]; then
    sed -i "s/$old/$new/" $VESTA/data/users/*/web.conf
    for user in $(ls $VESTA/data/users/); do
        $BIN/v-rebuild-web-domains $user no
    done
    $BIN/v-restart-dns $restart
fi

# Updating DNS configs
if [ ! -z "$old" ] && [ ! -z "$DNS_SYSTEM" ]; then
    sed -i "s/$old/$new/" $VESTA/data/users/*/dns.conf
    sed -i "s/$old/$new/" $VESTA/data/users/*/dns/*.conf
    for user in $(ls $VESTA/data/users/); do
        $BIN/v-rebuild-dns-domains $user no
    done
    $BIN/v-restart-dns $restart
fi

# Updating FTP
if [ ! -z "$old" ] && [ ! -z "$FTP_SYSTEM" ]; then
    conf=$(find /etc -name $FTP_SYSTEM.conf)
    if [ -e "$conf" ]; then
        sed -i "s/$old/$new/g" $conf
        if [ "$FTP_SYSTEM" = 'vsftpd' ]; then
            check_pasv=$(grep pasv_address $conf)
            if [ -z "$check_pasv" ] && [ ! -z "$nat_ip" ]; then
                echo "pasv_address=$nat_ip" >> $conf
            fi
            if [ ! -z "$check_pasv" ] && [ -z "$nat_ip" ]; then
                sed -i "/pasv_address/d" $conf
            fi
            if [ ! -z "$check_pasv" ] && [ ! -z "$nat_ip" ]; then
                sed -i "s/pasv_address=.*/pasv_address='$nat_ip'/g" $conf
            fi
        fi
    fi
    $BIN/v-restart-ftp $restart
fi

# Updating firewall
if [ ! -z "$old" ] && [ ! -z "$FIREWALL_SYSTEM" ]; then
    sed -i "s/$old/$new/g" $VESTA/data/firewall/*.conf
    $BIN/v-update-firewall
fi

#----------------------------------------------------------#
#                       Vesta                              #
#----------------------------------------------------------#

# Logging
log_history "changed associated nat address on $ip to $nat_ip" '' 'admin'
log_event "$OK" "$ARGUMENTS"

exit

Na řadě je další restart mašiny a rozborka údajů zapsaných před spuštěním vše-opravujícího příkazu. Zjistili jsme, že část $VESTA/data/ips/$ip je v pořádku ještě před změnou. Za to $VESTA/data/users/*/web.conf je prázdný… prázdný protože jsme smazali i poslední web vedený pod adminem? Vytváříme web pod účtem admina a restartujeme.

Nepomohlo, pátráme dál

Poslední v řadě bash příkazů je v-update-firewall a tak zkoušíme.

sudo -i

# novy horky kandidat na viteze
v-update-firewall

S tímto výsledkem jsem schopni smířit se. Po restartu je nutné provést příkaz v-update-firewall. Tomuto tématu se budeme věnovat v samostatném návodu Skripty prováděné po spuštění VestaCP.

Martin Horák

Martin Horák má na svědomí 29 příspěvků

Již nějakou chvíli se věnuji tvorbě webů, copywritingu a všem těm drobným a nepodstatným věcem okolo toho.

Najmout si mě můžete přes horní lištu a klikátko kontakty.

Diskuze

Vaše emailová adresa nebude publikována. Povinné údaje jsou označeny *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>