Páginas

miércoles, 25 de noviembre de 2009

Nslookup en modo interactivo

El modo interactivo de nslookup es mucho mas interesante. Ademas de buscar maquinas por su nombre, se puede tambien preguntar por cualquier registro DNS, y transferir la informacion de zona completa de un dominio.

Cuando se invoca sin argumentos, nslookup mostrara el servidor de nombres en uso y entrara en modo interactivo. En el prompt ‘>’ que se mostrara, puede teclear cualquier nombre de dominio por el que quiera preguntar. Por defecto, preguntara por registros de tipo A, es decir, aquellos que dan una direccion IP correspondiente al dominio introducido.

Esta puede ser una sesion con nslookup:
$ nslookup
Server: 80.58.61.250
Address: 80.58.61.250#53

** server can't find nslookup: NXDOMAIN

Preguntaremos por un nombre que tiene una IP asociada:
> pucmm.edu.do

Non-authoritative answer:
Name: pucmm.edu.do
Address: 200.26.171.83
>

Si intenta preguntar por un nombre que no tiene direccion IP asociada, pero se encuentran otros registros relacionados en el DNS, el programa respondera con un error “No type A records found” (no se encontraron registros de tipo A). Sin embargo, puede hacer preguntas para otro tipo de registros sin mas que usar el comando “set type”. Por ejemplo, para obtener el registro SOA de pucmm.edu.do:

> set type=SOA
> pucmm.edu.do

Non-authoritative answer:
pucmm.edu.do
origin = server1.pucmm.edu.do
mail addr = hostmaster.nic.do
serial = 2009112201
refresh = 7200
retry = 900
expire = 604800
minimum = 86400

Authoritative answers can be found from:
mail.pucmm.edu.do internet address = 200.26.171.82
>

De manera similar, se pueden pedir registros MX, etc. Y mediante la palabra ANY se
obtendran todos los RR asociados al nombre escrito.

> set type=MX
> pucmm.edu.do

Non-authoritative answer:
pucmm.edu.do mail exchanger = 0 mail.pucmm.edu.do.

Authoritative answers can be found from:
mail.pucmm.edu.do internet address = 200.26.171.82
>

Una aplicacion practica de nslookup para la depuracion es obtener la lista de servidores raiz. Esto puede hacerse pidiendo todos los registros NS asociados al dominio raiz:

> set type=NS
> .
Non-authoritative answer:
. nameserver = D.ROOT-SERVERS.NET.
. nameserver = L.ROOT-SERVERS.NET.
. nameserver = F.ROOT-SERVERS.NET.
. nameserver = B.ROOT-SERVERS.NET.
. nameserver = H.ROOT-SERVERS.NET.
. nameserver = I.ROOT-SERVERS.NET.
. nameserver = M.ROOT-SERVERS.NET.
. nameserver = J.ROOT-SERVERS.NET.
. nameserver = G.ROOT-SERVERS.NET.
. nameserver = C.ROOT-SERVERS.NET.
. nameserver = K.ROOT-SERVERS.NET.
. nameserver = A.ROOT-SERVERS.NET.
. nameserver = E.ROOT-SERVERS.NET.

Authoritative answers can be found from:
D.ROOT-SERVERS.NET internet address = 128.8.10.90
L.ROOT-SERVERS.NET internet address = 199.7.83.42
L.ROOT-SERVERS.NET has AAAA address 2001:500:3::42
F.ROOT-SERVERS.NET internet address = 192.5.5.241
F.ROOT-SERVERS.NET has AAAA address 2001:500:2f::f
B.ROOT-SERVERS.NET internet address = 192.228.79.201
H.ROOT-SERVERS.NET internet address = 128.63.2.53
H.ROOT-SERVERS.NET has AAAA address 2001:500:1::803f:235
I.ROOT-SERVERS.NET internet address = 192.36.148.17
M.ROOT-SERVERS.NET internet address = 202.12.27.33
M.ROOT-SERVERS.NET has AAAA address 2001:dc3::35
J.ROOT-SERVERS.NET internet address = 192.58.128.30
J.ROOT-SERVERS.NET has AAAA address 2001:503:c27::2:30
G.ROOT-SERVERS.NET internet address = 192.112.36.4
>

Bibliografia: Guia de Administracion de Redes con Linux. Olaf Kirch.
Exelente libro disponible en formato pdf gratuito. Traducido al español por el proyecto luCAS.

miércoles, 18 de noviembre de 2009

Conexion a Internet compartida IP WAN dinamica

Tendremos una conexión a Internet compartida y un cortafuegos utilizando un switch DLINK 4 puertos Ethernet.

Para este ensayo los componentes de hardware a utilizar:

- Un portatil con GNU-Linux Debian Lenny con dos interfaces de red. Una alámbrica que la denominaremos como la nombra el sistema: "eth0" y otra interface de nombre "wlan0" inalámbrica, la 3945ABG Intel Centrino, un swicth dlink con 4 puertos Ethernet, dos claves CAT 5E UTP conectores RJ45.

- Un segundo de sobremesa con Ubuntu Jaunty instalado y una interfaz de red Ethernet eth0.

Lo primero es desactivar el cortafuegos si lo tenemos activado. Puede ser necesario instalar los paquetes net-tools, ifrename y Nmap en ambos pc's.

Configuración de tarjetas de interfaz de red en Debian:
Configuramos la tarjeta NIC LAN con una IP estática del tipo A para nuestro esquema de red privada. No asignaremos la dirección LAN con DHCP.

Configuraremos la interfaz WAN con la información proporcionada por nuestro ISP. Tendremos direcciones IP local estáticas y una dirección PUBLICA dinámica. No nos conectamos a internet todavía.

Para entrar en el router debemos estar en la misma red. Conectamos las dos terminales RJ45 a las tarjetas eth0 del portatil y eth0 del sobremesa y al switch local dlink. Nos ponemos en la misma red:

# ifconfig eth0 192.168.1.2 netmask 255.255.255.0 eth0

Entramos en el router con ip por defecto 192.168.1.1, user=admin, passw=admin.

Ahora, clic en la pestaña SETUP y acto seguido en MANAGEMENT IP. Cambiamos la IP a 10.0.0.1 netmask 255.255.255.0, aplicar para guardar los cambios. La nueva IP del router es 10.0.0.1.

Editamos el archivo interfaces con vim, ¿porque vi?, porque respeta el formato, para que quede así:
# vim interfaces
## /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# lan interface
auto eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
gateway 10.0.0.1
network 10.0.0.0
broadcast 10.0.0.255

# wan interface
auto wlan0
iface wlan0 inet dhcp

Para añadir los servidores DNS de nuestro ISP a /etc/resolv.conf (para las direcciones DHCP WAN no se sigue el mismo procedimiento):
#vim /etc/resolv.conf
nameserver 80.58.61.250
nameserver 80.58.61.254

Ahora, fijamos los nombres de las interfaces con ifrename:
Primero buscamos las direcciones MAC de nuestras interfaces con ifconfig
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:21:9b:e2:ff:44
......
wlan0 Link encap:Ethernet HWaddr 00:1f:dd:fd:a0:3c

En este momento introducimos nuestros nombres de interfaces y direcciones MAC en /etc/iftab. Si no existe el archivo iftab deberá crearlo.

# vim /etc/iftab
## /etc/iftab
eth0 mac 00:21:9b:e2:ff:44
wlan0 mac 00:1f:dd:fd:a0:3c

En el pc de sobremesa, con el que queremos compartir la conexión a Internet, la configuración de la tarjeta eth0 alámbrica tendrá IP 10.0.0.3 estática y los dns de su proveedor de acceso a Internet (ISP). Fíjese que el gateway es la direccion IP local asignada al primer ordenador, (el portatil):
ipaddress 10.0.0.3
netmask 255.255.255.0
gateway 10.0.0.2
network 10.0.0.0
broadcast 10.0.0.255

Ahora añadimos los servidores DNS de nuestro ISP a /etc/resolv.conf (para las direcciones DHCP WAN no se sigue el mismo procedimiento):
#vim /etc/resolv.conf
nameserver 80.58.61.250
nameserver 80.58.61.254

Añadiremos estos parámetros del kernel al archivo /etc/sysctl.conf necesarios para la conexión a Internet compartida.
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0

Llamaremos /usr/local/bin/fw_nat al siguiente guión copielo y hágalo ejecutable en rw para root con chmod 0700.

#############Inicio del guion###################
#!/bin/sh
##/usr/local/bin/fw_nat
#iptables firewall script for sharing
#broadband Internet, with no public services

#define variables
ipt="/sbin/iptables"
mod="/sbin/modprobe"
LAN_IFACE="eth0"
WAN_IFACE="wlan0"

#basic set of kernel modules
$mod ip_tables
$mod ip_conntrack
$mod iptable_filter
$mod iptable_nat
$mod iptable_mangle
$mod ipt_LOG
$mod ipt_limit
$mod ipt_state
$mod ipt_MASQUERADE

#add these for IRC and FTP
$mod ip_nat_ftp
$mod ip_nat_irc
$mod ip_conntrack_ftp
$mod ip_conntrack_irc

# Flush all active rules and delete all custom chains
$ipt -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -X
$ipt -t nat -X
$ipt -t mangle -X

#Set default policies
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t nat -P PREROUTING ACCEPT 43303031443230333138303133

$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT

#this line is necessary for the loopback interface
#and internal socket-based services to work correctly
$ipt -A INPUT -i lo -j ACCEPT

#Enable IP masquerading
$ipt -t nat -A POSTROUTING -o $WAN_IFACE -j MASQUERADE

#Enable unrestricted outgoing traffic, incoming
#is restricted to locally-initiated sessions only
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A FORWARD -i $WAN_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $LAN_IFACE -o $WAN_IFACE -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accept important ICMP messages
$ipt -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT

#Reject connection attempts not initiated from inside the LAN
$ipt -A INPUT -p tcp --syn -j DROP
#############final del guion########################

Los nuevos parámetros sysctl debe abrirlos, para ello teclee desde el terminal:
# /sbin/sysctl -p

Ejecute firewall_nat
# /usr/local/bin/fw_nat

Conecte la interfaz WAN a su router de banda ancha:
# /sbin/ifup wlan0
# iwconfig wlan0 essid "WLAN_AB"
# iwconfig wlan0 essid "WLAN_AB" key 43303031443230333183303433
# dhclient wlan0

Después de ejecutar dhclient wlan0, Verá algo como:
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/wlan0/00:1f:dd:fd:a0:3c
Sending on LPF/wlan0/00:1f:dd:fd:a0:3c
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11
DHCPOFFER from 10.185.228.9
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 10.185.228.9
bound to 192.168.1.34 -- renewal in 122773 seconds.

Ya tiene que poder enviar ping desde y hacia las ip's 10.0.0.3 y 10.0.0.2 y navegar por Internet en cualquiera de los dos ordenadores.

Probado el 28 octubre 2009.

Bibliografía: Redes en Linux. Guia de Referencia. Carla Schroder.
Guia de Administracion de Redes con Linux. Olaf Kirch & Terry Dawson.

domingo, 8 de noviembre de 2009

Hamachi

Hamachi - VPN










Activar en el kernel soporte TUN/TAP y recompilar el nucleo:
Device Drivers  --->
  Network device support  --->
    [*] Universal TUN/TAP device driver support
Verificar la salida de dmesg
# dmesg | grep TUN
Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky

Cargar módulo tun
# modprobe tun
# lsmod
Module                  Size  Used by
tun                     7296  0

Comprobar que nuestro kernel ya lo soporta y el dispositivo ha sido creado:
$ ls /dev/net/tun
/dev/net/tun

Para x86_64 bits será necesario instalar:
$ sudo apt-get -y install build-essential ia32-libs upx-ucl

Para x86_32 bits:
$ sudo apt-get -y install build-essential upx-ucl

Descargue la última versión de hamachi desde http://files.hamachi.cc/linux/.

Entre en el directorio donde lo descargó:

$ cd /home/debian/descargas/

Descomprimir el archivo:
$ tar -zxvf hamachi-0.9.9.9-20-lnx.tar.gz

Entramos en el directorio de hamachi
$ cd hamachi-0.9.9.9-20-lnx/


Instalar hamachi
$ sudo make install

Verá este mensaje:
Hamachi is installed

Crear grupo hamachi
$ sudo groupadd hamachi

Agregar root al grupo hamachi
$ sudo gpasswd -a root hamachi

Añadir usuario al grupo hamachi (en mi caso lenny)
$ gpasswd -a $USER hamachi

Cambiando al propietario de la carpeta /home/lenny/.hamachi
$ sudo chown -R $USER:$USER ~/.hamachi

Cambiando permisos
$ sudo chmod 760 /var/run/tuncfg.sock

Cambiando a grupo hamachi
$ sudo chgrp hamachi /var/run/tuncfg.sock

Iniciar tuncfg
$ sudo tuncfg
tuncfg: already running

Si sale este error:
  # /etc/init.d/tuncfg start
 * Starting tuncfg ...
tuncfg: cannot stat() /dev/net/tun -- No such file or directory
tuncfg: visit http://www.hamachi.cc/tuntap for more info  [ !! ]

primero hay que asegurarse que este archivo existe:
# ls -l /var/run/tuncfg.sock
ls: cannot access /var/run/tuncfg.: No such file or directory

No existe, tiene que crearlo:
# touch /var/run/tuncfg.sock


Cambie los permisos:
# chmod 1254 /var/run/tuncfg.sock

Falta crear el device tun:
# mkdir /dev/net
# mknod /dev/net/tun c 10 200

Intentelo de nuevo:
# /etc/init.d/tuncfg start
 * Starting tuncfg ...                [ ok ]

Crear una configuración inicial e indicándole el path de instalación:
$ sudo hamachi-init -c /usr/bin/hamachi
Initializing Hamachi configuration (/usr/bin/hamachi). Please wait ..

generating 2048-bit RSA keypair .. ok
making /usr/bin/hamachi/ directory .. ok
saving /usr/bin/hamachi/client.pub .. ok
saving /usr/bin/hamachi/client.pri .. ok
saving /usr/bin/hamachi/state .. ok

Authentication information has been created. Hamachi can now be started with
'hamachi start' command and then brought online with 'hamachi login'.

Configuracion inicial en home (normalmente no es necesario si lo instala por primera vez, puede obviar este paso):

$ sudo hamachi-init -f
Initializing Hamachi configuration (/home/lenny/.hamachi). Please wait ..

generating 2048-bit RSA keypair .. ok
making /home/lenny/.hamachi directory .. ok
saving /home/lenny/.hamachi/client.pub .. ok
saving /home/lenny/.hamachi/client.pri .. ok
saving /home/lenny/.hamachi/state .. ok

Iniciar el programa:
$ sudo /usr/bin/hamachi start
Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok

Login a Hamachi
$ sudo /usr/bin/hamachi login
Logging in ......... ok

Llegado a este punto configure su nick:
$ sudo /usr/bin/hamachi set-nick xenaunix

Acceder a una red existente o crear una nueva.

Unirse a una red existente:
$ sudo /usr/bin/hamachi join NETLENNY
Password:
Joining NETLENNY .. ok

O crear una red nueva:
$ sudo /usr/bin/hamachi create NETGENTOO

Por último, Tras unirnos o crear una red hay que ponerla online:
$ sudo /usr/bin/hamachi go-online NETGENTOO

Ver lista de redes y usuarios:
$ sudo /usr/bin/hamachi list
[NETLENNY]
5.3.129.195
5.7.236.132
5.177.3.194
5.183.232.165
5.205.183.13

Obtener los nicknames
sudo /usr/bin/hamachi get-nicks
Retrieving peers' nicknames ..

Listar usuarios con su nick

$ sudo /usr/bin/hamachi list
[NETLENNY]
5.3.129.195 DEBIANHP
5.7.236.132 NETGENTOO
5.177.3.194 NETLENNY
5.183.232.165 NETARCH
5.205.183.13 NETXENA

Averiguar el estado de hamachi:
$ sudo /usr/bin/hamachi
Hamachi, a zero-config virtual private networking utility, ver 0.9.9.9-20

version : hamachi-lnx-0.9.9.9-20
pid : 4456
status : logged in
nickname : NETGENTOO

También podemos borrar una red creada por nosotros:
$ sudo /usr/bin/hamachi delete NETGENTOO

Comando para desligarnos o desunirnos de una red:
$ sudo /usr/bin/hamachi leave NETLENNY

A continuación un sencillo guión impedirá repetir teclear todos os camandos:
Guardelo en /etc/init.d/ con el nombre de hamachi.

#!/bin/bash
#######################################
### script de inicio, parada y reinicio de hamachi ###
#######################################
case "$1" in
start)
echo "Iniciando hamachi..."
/usr/bin/sudo /sbin/tuncfg
/usr/bin/sudo /usr/bin/hamachi start
/usr/bin/sudo /usr/bin/hamachi login
/usr/bin/sudo /usr/bin/hamachi go-online NETGENTOO
sudo /usr/bin/hamachi set-nick NETGENTOO
;;
stop)
echo "Deteniendo hamachi..."
/usr/bin/sudo /usr/bin/hamachi stop
;;
restart|force-reload)
echo "Reiniciando hamachi..."
/usr/bin/sudo /usr/bin/hamachi start
sleep 1
/usr/bin/sudo /usr/bin/hamachi stop
;;
*)
exit 1
;;
esac
exit 0


Hacerlo ejecutable:
$ sudo chmod +x /etc/init.d/hamachi

Para ejecutarlo:
$ /etc/init.d/hamachi start
Iniciando hamachi...
tuncfg: already running
Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok
Logging in .......... ok
Going online in NETGENTOO .. ok
Setting nickname .. ok

Si queremos detener hamachi:
$ /etc/init.d/hamachi stop
Deteniendo hamachi...
Shutting down .. ok

Utilizando restart como parámetro reiniciamos hamachi:
$ /etc/init.d/hamachi restart
Reiniciando hamachi...
Starting Hamachi hamachi-lnx-0.9.9.9-20 .. ok
Shutting down .. ok

El programa hamachi-gui provee de interfaz gráfica a hamachi.

Descargar de http://hamachi-gui.sourceforge.net/index.html

Instalar hamachi-gui:
$ sudo dpkg -i hamachi-gui_0.9.6-1_amd64-hardy.deb

Ejecute el siguiente comando donde -c le indica a hamachi-gui donde encontrará el programa hamachi, nohup para que al cerrar la terminal el programa continue corriento. Si no se utilizan redirecciones todas las salidas del programa se dirigen a un fichero llamado nohup.out. & Se utiliza para recuperar inmediatamente el control del terminal:
$ sudo nohup hamachi-gui -c /usr/bin/hamachi > /dev/null 2>&1 &

Un script para iniciar la interfaz gráfica?, guardelo como hamachi_gui.sh.:
#!/bin/bash
########################################
### script hamachi-gui ######################
#######################################

echo "Iniciando interfaz grafica..."
/usr/bin/sudo /usr/bin/nohup /usr/bin/hamachi-gui -c /usr/bin/hamachi > /dev/null 2>&1 &

Hágalo ejecutable:
$ sudo chmod +x /etc/init.d/hamachi.

Para ejecutarlo:
$ sudo ./hamachi-gui.sh
[sudo] password for debian:
Iniciando interfaz grafica...

Activar hamachi durante el inicio de GNU-Linux:
$ sudo update-rc.d hamachi defaults

Desactivar hamachi durante el arranque:
$ sudo update-rc.d-f hamachi remove