VPSs y mas.

viernes, 28 de septiembre de 2012

Como forzar una consulta DNS a un determinado servidor

Introducción:
  Este post es sumamente sencillo pero espero sea útil.
  Hoy recibí por correo la pregunta de como forzar o realizar una consulta DNS sobre un determinado servidor.

Situacion:
  Deseo que mi consulta DNS sea dirigida/apuntada/forzada sobre cierto servidor específico, las razones pueden ser variadas, desde curiosidad o troubleshooting. En el caso del día de hoy querían verificar que un DNS secundario estuviese copiando la zona correctamente.

Solución:
  Existen varias soluciones:

1) La más fácil (pero poco elegante):
   Configurar el/los DNS sobre los que se desea hacer la consulta sobre el host con el que voy a trabajar. Ejecutar por ejemplo un ping al nombre y verificar el IP que devuelve

2) Nslookup (funciona sobre windows y linux)
  En el siguiente ejemplo voy a verificar como resuelve blog.acostanetwork.com el servidor 8.8.8.8

aacosta@aacosta:~$ nslookup  --> para entrar en un subshell
> server 8.8.8.8     ---->>> indico el DNS sobre quien va ir dirigida la consulta
Default server: 8.8.8.8
Address: 8.8.8.8#53
> blog.acostasite.com   ----> indico el nombre que deseo consultar
Server:        8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
blog.acostasite.com    canonical name = cf-protected-blog.acostasite.com.
Name:    cf-protected-blog.acostasite.com
Address: 108.162.198.198
Name:    cf-protected-blog.acostasite.com
Address: 108.162.195.100

  En el ejemplo anterior hay que cambiar "8.8.8.8" por la dirección IP a quien deseamos enviar la consulta

3) Dig (Linux)
  En el siguiente ejemplo voy a verificar como resuelve blog.acostanetwork.com el servidor 8.8.4.4

aacosta@aacosta-ThinkPad-E420:~$ dig @8.8.4.4 blog.acostasite.com

; <<>> DiG 9.8.1-P1 <<>> @8.8.4.4 blog.acostasite.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 17584="17584" br="br" id:="id:" noerror="noerror" opcode:="opcode:" query="query" status:="status:">;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;blog.acostasite.com.        IN    A

;; ANSWER SECTION:
blog.acostasite.com.    0    IN    CNAME    cf-protected-blog.acostasite.com.
cf-protected-blog.acostasite.com. 117 IN A    108.162.198.198
cf-protected-blog.acostasite.com. 117 IN A    108.162.195.100

;; Query time: 67 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Fri Sep 28 09:44:34 2012
;; MSG SIZE  rcvd: 101

  En el ejemplo anterior hay que cambiar "8.8.4.4" por la dirección IP a quien deseamos enviar la consulta
  El mismo


Espero sea útil,

martes, 11 de septiembre de 2012

Telnet y SSH directo desde la consola/shell/prompt de Windows

Introduccion:  Si has llegado a este post es porque estas aburrido y quizas hasta molesto que Windows 7 no tenga un cliente telnet ni un cliente SSH incorporado.

Objetivo:  Poder hacer telnet y SSH de manera sencilla desde Windows. Por ejemplo, en el campo de ejecutar escribir algo tan sencillo como:
  telnet 192.168.1.1  o
  ssh 192.168.1.2 y que se ejecute el telnet o ssh para entrar en la direccion
  Hoy en dia existen diferentes progrmas que hacen eso, siendo quizas el mas famoso Putty.

Pasos:  Es mucho mas facil de lo que me esperaba. Sigue estos pasos:
1) Entra en: 
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
y baja los ejecutables (.exe) de putty y puttytel
2) Renombra putty.exe a ssh.exe y puttytel a telnet.exe
3) Copia/mueve ssh.exe y telnet.exe a: 
C:\Windows\System32

Voila!..., listo, ahora desde inicio-->ejecutar, desde una prompt DOS, etc puedes escribir ssh/telnet + IP y entrará.


Espero haya sido útil!

jueves, 6 de septiembre de 2012

Tunel GRE entre Cisco y Linux + NAT

Introducción:
  En el siguiente escenario se plantean dos oficinas conectadas mediante un tunel GRE. En la oficina "A" existe un router Cisco y en la oficina "B" un servidor Linux.

Objetivo:
  Que la oficina "A" (la red con el router Cisco) salga a Internet (nateada) con el IP de la red de la oficina "B" (red con el servidor Linux)


Topologia:
 
Lado Cisco (Oficina A):
   LAN: 192.168.56.6
   WAN: 98.76.54.32
   TUNNEL 0: 192.168.56.6

Lado Linux (Oficina B):

   LAN: 192.168.1.200/24  (gre_if0)
   WAN: 123.45.67.89 (Interfaz: venet0:0)

Pasos (lado equipo Linux):
1) Levantar el modulo GRE
  #modprobe ip_gre

2) Crear la interfaz del tunel (llamada gre_if0). Puede tener cualquier nombre:
   #ip tunnel add gre_if0 mode gre remote 98.76.54.32 local 123.45.67.89 ttl 255

3) Asignarle un IP a la interfaz recien creada (gre_if0)
   #ip addr add 192.168.1.200/24 dev gre_if0

4) Levantar la interfaz del tunel (por defecto viene shutdown)
   #ip link set gre_if0 up (Levantar la interfaz gre_if0)

5) Enrutar por el tunel aquellas rutas que sean necesarias, por ejemplo: 
   #route add -net 192.168.56.6 netmask 255.255.255.255 dev gre_if0

Pasos (lado Cisco)



!Creación de la interfaz tunel
interface Tunnel0
 ip unnumbered FastEthernet0/0
 tunnel source Vlan1
 tunnel destination 123.45.67.89
 

!Configuración de la interfaz LAN
interface FastEthernet0/0
 description **Conexion LAN**
 ip address 192.168.56.6 255.255.255.252
 duplex auto
 speed auto
 

!La interfaz VLAN1 es la interfaz WAN
interface Vlan1
 description **Conexion WAN**
 ip address 98.76.54.32 255.255.255.248
 

!Hacer las rutas necesarias en el router
!para alcanzar la LAN de la oficina B
ip route 192.168.1.200 255.255.255.255 Tunnel0


PARA EL NAT (LADO LINUX):

1) Permitir routing en el equipo
  # echo 1 > /proc/sys/net/ipv4/ip_forward

2) Que el servidor Linux sepa alcanzar la LAN de Oficina A
   #route add -net 192.168.56.0 netmask 255.255.255.0 dev gre_if0


3) Realizar el NAT
   # iptables -A POSTROUTING -t nat -s 192.168.56.0/24 -j SNAT --to 123.45.67.89





  Notese que hubo que hacer Source NAT (SNAT). La explicación del motivo está indicada en el post: "Linux iptables, solucion al error: Warning: wierd character in interface"

 
Espero te sea útil,

domingo, 2 de septiembre de 2012

Linux iptables, solucion al error: Warning: wierd character in interface

Introducción:
  En Linux cuando intentamos realizar un NAT con alguna interfaz que posea el caracter ":" recibimos el error:  Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).
  Por ejemplo en el siguiente escenario:

   #iptables -t nat -A POSTROUTING -o venet0:0 -j MASQUERADE  
   Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).

Explicación:
  Luego de una investigación en muchas páginas en Internet llegué a la conclusión que no es posible realizar el NAT con una "subinterfaz" (interfaz secundaria, IP secundario, etc) con Linux que posea ":" , durante mi busqueda conseguí que es un problema del manejo de los ARP en dicha interfaz, sin embargo no hay que preocuparse, existe una alternativa y es la que voy a plantear en este post. 

Solución:
  La solución es bastante sencilla y al menos funciona en todos los escenarios donde la dirección IP con la que deseamos natear es estática. La misma se conoce como SNAT (Source NAT) y se utiliza como IP saliente el IP secundario de la interfaza utilizar (ej. eth0:0). La diferencia principal es que hay que indicar cual es la red a la cual deseamos hacer NAT, esto no debe ser ningún inconveniente porque seguramente sabremos esta información.
  En definitiva la solución es realizar el NAT con el IP "saliente" en vez de la interfaz saliente e indicando la red a la cual deseamos realizar el NAT.

Comandos:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A POSTROUTING -t nat -s 192.168.56.0/24 -j SNAT --to 123.4.5.6

  Con  lo anterior estaremos nateando la red 192.168.56.0/24 con la dirección IP 123.4.5.6, es decir, cualquier equipo con dirección IP fuente en el rango 192.168.56.0/24 se verá en Internet con 123.4.5.6. En ningún momento hace referencia a "eth0:0"

Espero les sea útil,

Saludos,

Deshabilitar/bajar iptables en Linux

Introduccion:
   En algunas ocasiones es necesario "bajar"  o deshabilitar iptables en nuestro Linux, el procedimiento depende de la distribución de Linux que estes utilizando. Aquí te dejo los más conocidos.

1) Procedimiento si estas utilizando Redhat, Fedora core, Mandriva/Mandrake o Centos, solo debes  ejecutar lo siguiente:
# service iptables save
# service iptables stop
# chkconfig iptables off
o
# /etc/init.d/iptables stop


2) Procedimiento para deshabilitar iptables en Debian o Ubuntu

  a) Crea un script llamado fw.stop con el siguiente contenido:

#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

  b) Dale permiso de ejecución a dicho script:

# chmod +x /root/fw.stop
o
# chmod 755 fw.stop

  c) Puedes ejecutar el scritp con el siguiente comando:
# fw.stop

Mas info en:
http://sources68.com/linux-disable-remove-the-iptables-firewall-1fa67761.html