Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Dev Section 3rd Party Software
  • Search

How to Auto Change IP Address in VestaCP

Section with additional software for Vesta
Post Reply
  • Print view
Advanced search
40 posts
  • Previous
  • 1
  • 2
  • 3
  • 4
  • Next
jobarte
Posts: 15
Joined: Fri Apr 11, 2014 2:28 pm

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by jobarte » Thu Mar 26, 2015 5:36 pm

Hi @crypto,

You have this code on github? I want to help you wtih bug fixes. If not, I can put on github?
Top

psaproxy
Posts: 8
Joined: Mon Nov 30, 2015 5:33 am

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by psaproxy » Mon Nov 30, 2015 5:44 am

Hello

I have completed the instruction. Ip has been successfully changed.
But now problem. Site is not open: 504 Gateway Time-out (nginx).

nginx log:
[error] 11506#0: *7 upstream timed out (110: Connection timed out) while connecting to upstream, client: 178.76.231.212, server: _, request: "GET /favicon.ico HTTP/1.1", upstream: "http://10.73.117.115:8080/error/50x.html", host: "54.74.17.21", referrer: "http://54.74.87.18/"

178.76.231.212 - it is my ip
10.73.117.115 - it is new private ip, it used in instruction
54.74.17.21 - it is new public ip, I was set this ip as NAT ip in control panel

How fix it?
Top

kaines
Posts: 10
Joined: Tue Dec 01, 2015 9:37 pm

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by kaines » Tue Dec 01, 2015 9:39 pm

hi, i have the same issue... i get:

2015/12/01 22:36:14 [error] 3075#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: MYIP, server: domainame.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://SERVERIP2:8080/favicon.ico", host: "DOMAINAME.COM", referrer: "http://DOMAINNAME.COM/"

any idea what could this be?
Top

psaproxy
Posts: 8
Joined: Mon Nov 30, 2015 5:33 am

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by psaproxy » Wed Dec 02, 2015 10:05 am

my solution
xx.xx.xx.xx - old private IP
yy.yy.yy.yy - new private IP

1) run instruction from first post

2)
grep -r "xx.xx.xx.xx" /etc/
grep -r "xx.xx.xx.xx" /home/
grep -r "xx.xx.xx.xx" /usr/local/
and replace all "xx.xx.xx.xx"/"xx-xx-xx-xx" on "yy.yy.yy.yy"/"yy-yy-yy-yy"

3)
rename files
/etc/apache2/conf.d/xx.xx.xx.xx.conf in yy.yy.yy.yy.conf
/etc/nginx/conf.d/xx.xx.xx.xx.conf in yy.yy.yy.yy.conf

4)
set new public IP in NAT Vesta control panel

5)
restart server

And may be you need change public IP on WEB and DNS sections in Vesta control panel
Top

kaines
Posts: 10
Joined: Tue Dec 01, 2015 9:37 pm

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by kaines » Thu Dec 03, 2015 11:15 pm

in my case i had to do this:

/etc/apache2/conf.d - rename OLDIP.conf to NEWIP.conf than edit NEWIP.conf and ranem old ip to new one.
/etc/iptables.rules - change this line: -A INPUT -s OLDIP/32 -j ACCEPT -> -A INPUT -s NEWIP/32 -j ACCEPT

after that i restarted apache and nginx and everything worked well.

Hope it will help someone ;)
Top

conneXions
Posts: 5
Joined: Thu Feb 18, 2016 3:18 pm

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by conneXions » Tue Feb 23, 2016 6:34 am

I think psaproxy's post above is quite helpful
though that NAT step may not apply for everyone (not for me anyway).

an additional step that finally got everything working (before this only vestacp is accessable using domain.com:8083) for me is:

restart iptables from within the server tab of vestacp (or use command line I suppose)

otherwise I couldn't even get my homepage (domain.com) to load.
Top

aeromaxx
Posts: 5
Joined: Fri Apr 08, 2016 11:01 am

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by aeromaxx » Fri Apr 08, 2016 11:09 am

Hello,

I have amended crypto's original script from post #1.

It now contains a switch to be verbose or not.

It also has some checks for empty directories, as the original script gave errors when my dns folder was empty, so it now checks for this.

Some users like myself use apache2 and not httpd, and as such the configuration options may need to changed to reflect this.

Code: Select all

#!/bin/sh

#script to change ips on a VestaCP server.
#usage:
# $0 <oldip> <newip>

#########################
# Configuration Options #
#########################

HAVE_APACHE2=1;
HAVE_HTTPD=0;
HAVE_NGINX=1;
VERBOSE=0;

# DON'T CHANGE ANYTHING BELOW THIS LINE
# -------------------------------------

clear;

LOG=/var/log/vesta/system.log;

MYUID=`/usr/bin/id -u`;
if [ "$MYUID" != 0 ]; then
        echo "You require Root Access to run this script";
        exit 0;
fi;

if [ $# != 2 ] && [ $# != 3 ]; then
        echo "Usage:";
        echo "$0 <oldip> <newip> [<file>]";
        echo "you gave #$#: $0 $1 $2 $3";
        exit 0;
fi;

echo "";
echo "######################################";
echo "# Changing VestaCP Server IP Address #";
echo "######################################";
echo "";
sleep 5;

OLD_IP=$1;
NEW_IP=$2;

if [ "${VERBOSE}" -eq 1 ]; then
	echo "Old IP: $OLD_IP";
        echo "New IP: $NEW_IP";
        echo "";

        sleep 5;
fi;

DATE=`date '+%F %X'`;
BIN=`echo $0 | awk -F/ '{print $NF}'`;

log()
{
        echo -e "$1";
        echo -e "$1" >> $LOG;

	if [ "${VERBOSE}" -eq 1 ]; then
                echo "";
        fi;
}

swapfile()
{
	if [ "${VERBOSE}" -eq 1 ]; then
		echo "Replacing Old IP with New IP in $1...";
	        sleep 5;
	fi;

        if [ ! -e $1 ]; then
                log "Cannot Find $1 to change the IPs. Skipping...";
                return;
        fi;

        TEMP="perl -pi -e 's/${OLD_IP}/${NEW_IP}/g' $1";
        eval $TEMP;

        log "$DATE $BIN $1\t: $OLD_IP -> $NEW_IP";
}

if [ $# = 3 ]; then
        swapfile $3;
        exit 0;
fi;

IPFILE_OLD=/usr/local/vesta/data/ips/$OLD_IP;
IPFILE_NEW=/usr/local/vesta/data/ips/$NEW_IP;

if [ ! -e $IPFILE_OLD ]; then
        echo -n "$IPFILE_OLD does not exist.  Do you want to continue anyway? (y/n) : ";
        read YESNO;

        echo "";

        if [ "$YESNO" != "y" ]; then
                exit 0;
        fi;
else
        mv -f $IPFILE_OLD $IPFILE_NEW;
        log "$DATE $0 $IPFILE_OLD\t: $OLD_IP -> $NEW_IP";
fi;

if [ "${HAVE_APACHE2}" -eq 1 ]; then
        if [ -e /etc/apache2/conf.d/${OLD_IP}.conf ]; then
		swapfile /etc/apache2/conf.d/${OLD_IP}.conf;
                mv -f /etc/apache2/conf.d/$OLD_IP.conf /etc/apache2/conf.d/${NEW_IP}.conf;
        fi;
fi

if [ "${HAVE_HTTPD}" -eq 1 ]; then
        if [ -e /etc/httpd/conf.d/${OLD_IP}.conf ]; then
                swapfile /etc/httpd/conf.d/${OLD_IP}.conf;
                mv -f /etc/httpd/conf.d/$OLD_IP.conf /etc/httpd/conf.d/${NEW_IP}.conf;
        fi;

        swapfile /etc/httpd/conf.d/mod_extract_forwarded.conf;
fi;

if [ "${HAVE_NGINX}" -eq 1 ]; then
        if [ -e /etc/nginx/conf.d/${OLD_IP}.conf ]; then
                swapfile /etc/nginx/conf.d/${OLD_IP}.conf;
                mv -f /etc/nginx/conf.d/$OLD_IP.conf /etc/nginx/conf.d/${NEW_IP}.conf;
        fi;
fi;

swapfile /etc/hosts;

ULDDU=/usr/local/vesta/data/users;

for i in `ls $ULDDU`; do
{

        if [ ! -d $ULDDU/$i ]; then
                continue;
        fi;

        swapfile $ULDDU/$i/web.conf;
        swapfile $ULDDU/$i/dns.conf;

        if [ `find $ULDDU/$i/dns/ -type f | wc -l` -gt 0 ]; then
                for j in `ls $ULDDU/$i/dns/*.conf`; do
                {
                        swapfile $j;
                };
                done;

                for j in `ls /home/$i/conf/dns/*.db`; do
                {
                        swapfile $j;
                };
                done;
        fi;

        if [ "${HAVE_APACHE2}" -eq 1 ]; then
                swapfile /home/$i/conf/web/apache2.conf;
        fi;

        if [ "${HAVE_HTTPD}" -eq 1 ]; then
                swapfile /home/$i/conf/web/httpd.conf;
        fi;

        if [ "${HAVE_NGINX}" -eq 1 ]; then
                swapfile /home/$i/conf/web/nginx.conf;
        fi;

};
done;

#this is needed to update the serial in the db files.
if [ "${HAVE_APACHE2}" -eq 1 ]; then
	if [ "${VERBOSE}" -eq 1 ]; then
		echo "Restarting service: apache2...";
	fi;

        service apache2 restart;

	if [ "${VERBOSE}" -eq 1 ]; then
		echo " done.";
		echo "";
	fi;
fi;

if [ "${HAVE_HTTPD}" -eq 1 ]; then
	if [ "${VERBOSE}" -eq 1 ]; then
		echo "Restarting service: httpd...";
	fi;

        service httpd restart;

	if [ "${VERBOSE}" -eq 1 ]; then
		echo " done.";
		echo "";
	fi;
fi;

if [ "${HAVE_NGINX}" -eq 1 ]; then
	if [ "${VERBOSE}" -eq 1 ]; then
		echo "Restarting service: nginx...";
	fi;

        service nginx restart;

	if [ "${VERBOSE}" -eq 1 ]; then
		echo " done.";
		echo "";
	fi;
fi;

if [ "${VERBOSE}" -eq 0 ]; then
        echo "";
fi;

echo "*** Done swapping $OLD_IP to $NEW_IP ***";
echo "";
Top

pandabb
Posts: 192
Joined: Sat Aug 08, 2015 3:03 am

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by pandabb » Mon Apr 18, 2016 11:09 pm

very useful. thanks
Top

Falzo
Posts: 60
Joined: Mon Mar 28, 2016 8:49 am

Re: not for the faint heartes
  • Quote

Post by Falzo » Fri Apr 22, 2016 9:32 pm

one should easily be able to search and replace either for filenames or for content of files with two commands...
not a lot of magic after all, did this multiple times on standard debian installs - but do use at your own risk!

Code: Select all

find /home /etc /usr -type f -exec perl -i -p -e 's/11\.22\.33\.44/66\.77\.88\.99/g' {} \;
find / -name *11.22.33.44* -exec rename 's/11\.22\.33\.44/66\.77\.88\.99/g' {} \;
- 11.22.33.44 has to be replaced by your old ip and 66.77.88.99 by your new one
- you need to keep the . escaped properly as shown above
- don't do this on /var if you don't exactly know what you are doing. at least mysql doesn't like that kind of find and replace with its files.

as there is not much output at all, you might want to find/grep for your IP as names/in files beforehand, to see whats gonna be changed.
and of course don't forget to restart your services afterwards (including vesta).
Top

anuradhan
Posts: 14
Joined: Sat Dec 03, 2016 10:34 am

Re: How to Auto Change IP Address in VestaCP
  • Quote

Post by anuradhan » Mon Dec 05, 2016 5:44 am

Option 1 didnt wrk .
i worked with option 2 and it works.
Thanks for the great script :)
crypto wrote:In case you change vps's/ips and need to change the Shared Ip for your vestacp server, can be a real pain to do by hand.

Option 1 - Best Way Download and Run Code

Code: Select all

wget http://www.nobill.tv/dl/changeip.tar.gz
tar -zxvf changeip.tar.gz
mv v-change-server-ip /usr/local/vesta/bin/
v-change-server-ip OLDIP NEWIP

Option 2 - Long way Create it yourself

Code: Select all

touch /usr/local/vesta/bin/v-change-server-ip
chmod 0755 /usr/local/vesta/bin/v-change-server-ip

Code: Select all

#!/bin/sh

#script to change ips on a VestaCP server.
#usage:
# $0 <oldip> <newip>

LOG=/var/log/vesta/system.log

MYUID=`/usr/bin/id -u`
if [ "$MYUID" != 0 ]; then
        echo "You require Root Access to run this script";
        exit 0;
fi

if [ $# != 2 ] && [ $# != 3 ]; then
        echo "Usage:";
        echo "$0 <oldip> <newip> [<file>]";
        echo "you gave #$#: $0 $1 $2 $3";
        exit 0;
fi

OLD_IP=$1
NEW_IP=$2

HAVE_HTTPD=1
HAVE_NGINX=1

DATE=`date '+%F %X'`
BIN=`echo $0 | awk -F/ '{print $NF}'`

log()
{
        echo -e "$1";
        echo -e "$1" >> $LOG;
}

swapfile()
{
        if [ ! -e $1 ]; then
                log "Cannot Find $1 to change the IPs. Skipping...";
                return;
        fi

        TEMP="perl -pi -e 's/${OLD_IP}/${NEW_IP}/g' $1"
        eval $TEMP;

        log "$DATE $BIN $1\t: $OLD_IP -> $NEW_IP";
}

if [ $# = 3 ]; then
        swapfile $3;
        exit 0;
fi


IPFILE_OLD=/usr/local/vesta/data/ips/$OLD_IP
IPFILE_NEW=/usr/local/vesta/data/ips/$NEW_IP
if [ ! -e $IPFILE_OLD ]; then
        echo -n "$IPFILE_OLD does not exist.  Do you want to continue anyway? (y/n) : ";
        read YESNO;
        if [ "$YESNO" != "y" ]; then
                exit 0;
        fi
else
        mv -f $IPFILE_OLD $IPFILE_NEW
        log "$DATE $0 $IPFILE_OLD\t: $OLD_IP -> $NEW_IP";
fi

if [ "${HAVE_HTTPD}" -eq 1 ]; then
        if [ -e /etc/httpd/conf.d/${OLD_IP}.conf ]; then
                swapfile /etc/httpd/conf.d/${OLD_IP}.conf
                mv -f /etc/httpd/conf.d/$OLD_IP.conf /etc/httpd/conf.d/${NEW_IP}.conf
        fi
        swapfile /etc/httpd/conf.d/mod_extract_forwarded.conf
fi

if [ "${HAVE_NGINX}" -eq 1 ]; then
        if [ -e /etc/nginx/conf.d/${OLD_IP}.conf ]; then
                swapfile /etc/nginx/conf.d/${OLD_IP}.conf
                mv -f /etc/nginx/conf.d/$OLD_IP.conf /etc/nginx/conf.d/${NEW_IP}.conf
        fi
fi

swapfile /etc/hosts

ULDDU=/usr/local/vesta/data/users

for i in `ls $ULDDU`; do
{

        if [ ! -d $ULDDU/$i ]; then
                continue;
        fi

        swapfile $ULDDU/$i/web.conf
        swapfile $ULDDU/$i/dns.conf
        for j in `ls $ULDDU/$i/dns/*.conf`; do
        {
                swapfile $j
        };
        done;

        if [ "${HAVE_HTTPD}" -eq 1 ]; then
                swapfile /home/$i/conf/web/httpd.conf
        fi
        if [ "${HAVE_NGINX}" -eq 1 ]; then
                swapfile /home/$i/conf/web/nginx.conf
        fi

        for j in `ls /home/$i/conf/dns/*.db`; do
        {
                swapfile $j
        };
        done;

};
done;

#this is needed to update the serial in the db files.
if [ "${HAVE_HTTPD}" -eq 1 ]; then
   service httpd restart
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
   service nginx restart
fi

echo "*** Done swapping $OLD_IP to $NEW_IP ***";
Enjoy!
Top


Post Reply
  • Print view

40 posts
  • Previous
  • 1
  • 2
  • 3
  • 4
  • Next

Return to “3rd Party Software”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password