Saturday, June 20, 2009

Minimize Downtime(DNS propagation) using tcp packet forwarding using TCPPROXY

A TCP proxy is a server that acts as an intermediary between a client and another server, called the destination server. Clients establish connections to the TCP proxy server, which then establishes a connection to the destination server. The proxy server sends data received from the client to the destination server and forwards data received from the destination server to the client.

It can be used to forward all the tcp connections to another ports in another server. This can be very effective during server migration time when we may face downtime due to DNS propagation delay. The DNS update in the nameservers will sometimes take more than 24 hours to fully propagate in the internet and as a result all the requests from the nameservers that are not updated will be accessing the old server. The old server might be either not accessible or showing old contents or we may be updating the old server with new data. This is especically critical when it comes to emails. We may sent emails to the wrong server which may become unavailable.

In these kind of circumstances we can initiate a forwarding setting which will forward all the requests that were sent to the old server to be forwarded to the new server. This can be accomplished by many free softwares licensed by GPL. In my case I used TCPPROXY a C++ application simple to install and setup as a proxy.

Installation and setup of tcpproxy for redirecting all traffic to another server

wget http://www.quietsche-entchen.de/download/tcpproxy-2.0.0-beta15.tar.gz

tar zxf tcpproxy-2.0.0-beta15.tar.gz

cd tcpproxy-2.0.0-beta15

make all


Setup tcpproxy as a proxy:

Suppose I have a old server 192.168.1.12 and new server 192.168.15.20 then I will have to forward all http requests to port 80 in old server to port 80 in new server. This can be accomplished using the command in the old server.

tcpproxy -b 80 192.168.15.20:80


General syntax:

Whatever maybe the service that you are using the general syntax would be

tcpproxy -b source port destination server:destination port

Suppose I want to use SMTP then the syntax would be

tcpproxy -b 25 192.168.15.20:25

Service not supported:

* FTP is not supported because it uses a second TCP connections for data transmission

Wednesday, June 10, 2009

Xen with grub2

This is small article to configure xen boot in grub2. First install xen in the machine using yum. I used centos and hence used yum to install it.
-----------------------------------------

yum install xen virt-manager kernel-xen
------------------------------------------

Now xen and xen kernel is installed in the machine. Now you have to configure grub2 to recognize xen.

In my case I installed xen in another partition other than boot partition. My centos was in /dev/sda1 and boot partition was /dev/sda4

I had to mount that partition and configure the grub configuration to recognize XEN.

mount /dev/sda4 /test
vi /test/boot/grub/grub.cfg

Add the following lines to the end of the configuration.
------------------------------------------------------
menuentry "CentOS (2.6.18-128.1.10.el5xen)"{
set root=(hd0,1)
multiboot /xen.gz-2.6.18-128.1.10.el5
module /vmlinuz-2.6.18-128.1.10.el5xen ro root=LABEL=/ rhgb quiet
module /initrd-2.6.18-128.1.10.el5xen.img
--------------------------------------------------------


Now the xen kernel will be available in the grub 2 menu.

Sunday, May 17, 2009

Dual Boot vyatta VC5 with centos, ubuntu, debian,

I came across some issue in dual boot of vyatta VC5 with centos. There has been some modification in the VC5 grub they are using grub2 which is still in testing phase.

The dual boot centos,Ubuntu... in vyatta can be performed by adding the following entries in /boot/grub/grub.cfg . The default grub configuration in grub2 is /boot/grub/grub.cfg

---------------
menuentry " Centos"{
set root=(hd0,1)
linux /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-92.el5.img
}
-----------------

Vyatta VC5 uses grub2 and it's format is completely different from legacy grub.

In GRUB2 the root system starts from "1" instead of "0". Hence hda1 partition will point to root(hd0,1) instead of legacy root(hd0,0)

Enjoy dual boot in latest GRUB.

You can get new command list from http://grub.enbug.org/CommandList

Tuesday, May 5, 2009

Block unwanted scrapers and bots using .htaccess and robots.txt

You can block unwanted bots by adding a robots.txt file with the following entries.
-------------------------
User-agent: *
Disallow: /
-------------------------


A list of bad bots that can be denied access using .htaccess. Add the following entries in .htaccess the list of scrapers.
-----------------------------
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]
---------------------------------------------

Restore a Old Backup HELM database file and configure Helm

Sometimes there may be a situation in which all the data is lost and you have a backup of old helm database. In my case the backup file is c:\Backup\cmhelm_db.bak

1. Install the new Helm in the server

2. Restore the Helm database
-------------------------------------------------
a . Better to use a new database

osql -E -S .\Helm

1> create database cmhelm
2> go
The CREATE DATABASE process is allocating 0.63 MB on disk 'cmhelm'.
The CREATE DATABASE process is allocating 0.49 MB on disk 'cmhelm_log'.


b. Restore the backup to new database
1> RESTORE DATABASE cmhelm FROM DISK='c:\Backup\cmhelm_db.bak' with move 'cmhelm
' to 'C:\Program Files\Microsoft SQL Server\MSSQL$HELM\Data\cmhelm.MDF',move 'cm
helm_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL$HELM\Data\cmhelm_log.L
DF'
2> go
Processed 2552 pages for database 'cmhelm', file 'cmhelm' on file 1.
Processed 1 pages for database 'cmhelm', file 'cmhelm_log' on file 1.
RESTORE DATABASE successfully processed 2553 pages in 0.107 seconds (195.397

----------------------------

Now all the backup database contents are restored in the new database


3. Configure Helm to use new database by changing the database name to 'cmhelm' in helm-config-tool


That is it and you can get all the old helm data in control panel.

Saturday, April 25, 2009

Why this site

Hi,

I just created this site to deliver some of the solutions that I could not find or had a great difficulty in finding it out.
I am late in this area. Anyhow I hope that i can provide some useful information to some people searching for it.