Tuesday, May 15, 2012

Ip tunneling on linux


Ip tunneling on linux :)



Let's suppose that we've two vps on two remote isps, a vps A with 20 ips, vps B with only one, you want to use some resources from B with some ips but you only have one, in order to use the ips from  A on vps B you've to tunnel all traffic from one to another, and here is how:


Public ips:
A = 50.2.2.2-22
B = 70.2.2.3


tunneling with gre:


On A:
# adding the interface for the tunnel
ip tunnel add tun2 mode gre remote 70.2.2.3 ttl 64
# setting the private ip address 
ifconfig tun2 10.0.201.1/24
ifconfig tun2 up
# A point to point 
ifconfig tun2 pointopoint 10.0.201.2
# enabling multicast (it's not necessary for this)
ifconfig tun2 multicast

ifconfig tun2 arp
ifconfig tun2 broadcast


# default route for the tunnel
ip route add 10.0.201.2 dev tun2 


# enable ip forward
echo 1 > /proc/sys/net/ipv4/ip_forward


# add the permanent entries to the arp table in order to get the complete loop. (without this doesn't work)
# replace the public ips for your ips, and the mac for your real mac for your interface
# the word pub it's the most important here, if it's not there the arps will never go outside
arp -s 50.2.2.20 00:00:00:00:00:00 -i eth0 pub
arp -s 50.2.2.21 00:00:00:00:00:00 -i eth0 pub
arp -s 50.2.2.22 00:00:00:00:00:00 -i eth0 pub


On B:
# adding the interface for the tunnel
ip tunnel add tun2 mode gre remote 50.2.2.2 ttl 64
# setting the private ip address 
ifconfig tun2 10.0.201.2/24
ifconfig tun2 up
# point to point B
ifconfig tun2 pointopoint 10.0.201.1
# enabling multicast (it's not necessary for this)
ifconfig tun2 multicast

ifconfig tun2 arp
ifconfig tun2 broadcast


# default route for the tunnel
ip route add 10.0.201.1 dev tun2 


echo 1 > /proc/sys/net/ipv4/ip_forward
# putting the ips to listen in the eth0 as secondary ips
ip ad add 50.2.2.20/32 dev eth0
ip ad add 50.2.2.21/32 dev eth0
ip ad add 50.2.2.22/32 dev eth0


And that's it, you should have a fully functional tunnel and the ability to route ips that are far away from were you want to use them, so you can now start to bind some daemons to those ips...


Another think to have in mind is that if you have so many ips, you've to be careful with your broadcast domain on point A, and if you're planning to tunnel more than 500 ips, then you've to change the default values of linux for the arp table in order to keep all entries:


echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 16384 > /proc/sys/net/ipv4/neigh/default/gc_thresh3


A further explanation of this things could be found here:
seems that the first link it's not available right now, so I'm putting the same from google cache.
http://webcache.googleusercontent.com/search?q=cache:6MBqIXDmxIIJ:waldner.netsons.org/d4-encapsulation.php+&cd=1&hl=es-419&ct=clnk&gl=ar
http://www.lartc.org/lartc.html
http://linux-ip.net/gl/ip-tunnels/node9.html
http://yurisk.info/2009/12/15/arp-table-overflow-in-checkpoint-nad-linux-in-general/


Good Luck!

Friday, July 24, 2009

Sockets en Php

Buenas:

No me voy a ir en detalles de que es un socket ? o para que sirve ? ya que eso lo encuentran en google en miles de lugares... solamente voy a dar un ejemplo de php de como simular una visita por un navegador atravez de php con un socket...

por cualquier consulta dejen un comentario :) o pueden ir a php.net hay muchos ejemplos, esta es una forma mas "complicada" de hacer un socket, lo bueno que tiene es que nosotros le podemos decir la ip de la que viene el pedido... tambien pueden buscar sobre fsockopen si estan interesados en visitar un sitio web desde php, o mandar un mail, o enviarle comandos por telnet a algun equipo como ser un router...


<?php

$host = "www.google.com"; //el servidor al que nos queremos conectar.

$page = "/"; //si queremos pedir un archivo en especial, ej: index.html



/*

la ip de nuestra pc '192.168.0.100' IP, puede ser publica de esta forma se pueden hacer pedidos a un servidor web haciendole creer que nuestra ip es otra, en el caso de si tenemos muchas ips publicas haciendo una minima modificacion, podriamos hacer muchos pedidos de diferentes ips...

*/



$opts = array('socket' => array('bindto' => '192.168.0.254:0'));



$context = stream_context_create($opts);

//creamos el socket

$fp = stream_socket_client("tcp://$host:80", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);

//y agregamos los datos del header de un pedido comun de mozilla firefox.

$request  = "GET $page HTTP/1.1\r\n";

$request .= "Host: $host\r\n";

$request .= "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204\r\n";

$request .= "Referer: http://kainlite.blogspot.com/\r\n";

$request .= "Accept: text/xml,application/xml,application/xhtml+xml,";

$request .= "text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,";

$request .= "image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n";

$request .= "Accept-Language: en-us, en;q=0.50\r\n";

$request .= "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n";

$request .= "Connection: Close\r\n\r\n";



    $page = array();

//mandamos el pedido y despues leemos los datos del socket con el handler $fp

    fputs ( $fp, $request );

    while ( ! feof( $fp ) )

        $page[] = fgets( $fp, 2048 );

    fclose( $fp );

//contamos y mostramos los resultados del array

    $counter=count($page);

        print "the server returned ".$counter." lines! <br />";



    print_r($page);

?>


Saludos ^^

Monday, July 20, 2009

Firefox Speed Tunning

Buenas aca van un par de valores para mejorar la velocidad de firefox en cuanto a lo que se tarda en descargar y mostrar una pagina :) prueben y me dicen...

primero tienen que ir a : about:config <- url

le clickean en "no voy a romper nada..."

buscan : network.http.pipelining y lo ponen en true.
buscan : network.http.pipelining.maxrequests doble click y lo ponen en 10 o 15.
buscan : network.http.proxy.pipelining y lo ponen en true.

y uno mas : network.dns.disableIPv6 lo ponen en true.

con esas 4 cosas, deberian notar un gran cambio, checkeenlo entrando a paginas pesadas antes y despues de cambiar eso :)

cualquier cosa comenten, probado en firefox 3 y 3.5

mas detalles sobre esto aca : network.http.pipelining

basicamente es una una forma de aumentar la cantidad de pedidos al servidor, en vez de que pida ej de a 2 imagenes para descargar una web pasaria a pedir de a 10 si se le pone 10, y se habilita, tambien dice que no todos los servers lo soportan, pero yo creo que en la actualidad la mayoria lo debe soportar...

Saludos

Saturday, July 11, 2009

Firebug, Firephp...

Buenas, viendo el addon de firebug, (firebug es un addon para firefox, muy potente y muy util para el diseƱo y desarrollo de una aplicacion web), firephp te ayuda con el debugging de tu aplicacion, ya que podes ver resultados de arrays, o mostrar elementos o muchas cosas mas, simplemente "logueandolo"

un ejemplo de codigo:


require_once('/var/www/FirePHPCore/FirePHP.class.php');
$firephp = FirePHP::getInstance(true);
$arr[] = 'a';
$arr[] = 'b';
$arr[] = 'c';
$firephp->log($arr, 'array');

?>


y la salida seria:



esto es un simple ejemplo, para mas detalles de uso y descarga -> http://www.firephp.org/

y para firebug -> https://addons.mozilla.org/en-US/firefox/addon/1843

addons totalmente recomendados :)

tiene muchas cosas mas firebug, como ser firecookie, pixelperfect, firequery, etc,etc...

Thursday, April 23, 2009

Al fin terminamos la web! :D

Buenas:

Como pueden ver cambio el titulo del post, ya que la pagina esta finalmente Up and Running....

thegeeks.com.ar

pasen y vean... espero sus comentarios :D

Saludos.
Gabriel.

Monday, January 28, 2008

Escritorios Remotos en Linux

estos dias estube rabiando con los servidores de vnc... llegue a la conclusion de q el vnc no sirve ni para ver quien viene... :P

y en eso encontre una alternativa muy buena... FreeNX o NX...

http://www.nomachine.com/download.php

esa es la pagina de descargas... directamente desde el servidor de nomachine los autores de este proyecto... yo estoy usando la version free.. osea freenx.. y anda joya... mucho mas rapido q cualquier otro soft para escritorio remoto... lo bueno es q trae clientes para windows, solaris, linux y lo q sea... se puede usar en windows.. pero tenes q hacer un pedido especial mediante un formulario... por el tema de las licencias... pero bue :p.. usa 2 puertos... autentica mediante ssh.. y es opcional encriptar toda la transferencia de datos o no... :P

espero q a alguien le sirva :p asi no se gasta rabiando con servers feos como los del vnc... :P

y si le digo feo... es por q probe todos los vncs q encontre y ninguno andaba decentemente... :P

PD.: se puede usar vnc o rdp en windows.. atraves de nx.. inclusive funcionan mejor q solos...

saludos

Wednesday, December 19, 2007

vean este video :P

los q entienden del tema capaz q les gusta la idea los demas seguro no entiendan un pomelo :P

saludos

si no se ve bien lo pueden bajar de aca : :P

http://rapidshare.com/files/77770756/video.avi.html


saque el video por q se veia muy mal.. pero dejo ese link para q lo bajen y lo vean :P