martes, 12 de mayo de 2015

Haciendo ping desde una interfaz en específica Windows/Linux

En windows en ocasiones puede que tengamos la necesidad de verificar la conectividad por ping desde una interfaz en específico. Esto cuando por ejemplo tenemos un equipo conectado por wifi y cable (Ethernet) al mismo tiempo, tenemos un servidor con varias interfaces conectadas a diferentes redes. Para lograr esto usamos el flag -S que indica la dirección IP del adaptador desde donde queremos probar.

Asumamos que tenemos un equipo con Windows conectado por Wifi y que tiene la IP 192.168.0.100, y que el mismo equipo por cable (ethernet) tiene la dirección IP 192.168.1.100.

Para probar la conexión Wifi sería, por ejemplo: ping google.com -S 192.168.0.100
Para probar la conexión por cable (Ethernet) sería, por ejemplo: ping google.com -S 192.168.1.100

Para hacer el proceso en Linux hay que usar el flag -I seguido del Alias de la interfaz (eth0, eth1, eth2).

Para probar la conectividad en Linux por una interfaz en específico sería: ping google.com -I ethX. Donde X representa el número del alias (0,1,2,3,4....)

Gracias por su atención.

sábado, 9 de mayo de 2015

Moodle autenticando usuarios con Active Directory

Hace varias semanas tuve el requerimiento de crear los más de 80 usuarios de la red en la plataforma moodle para una tarea que se asignaría a todos. Si hay algo que los usuarios detestan es tener una contraseña diferente para cada aplicación que se autentica, y más si se trata de aplicaciones cuya función no están ligadas sus funciones principales.

Por eso, cada vez que evalúo una plataforma para implementarla, uno de los puntos que tomo en cuenta es la integración con Active Directory. Solo imagínense esta situación: Contraseña para la computadora que vence cada cierto tiempo (Active Directory), contraseña para el correo, contraseña para el ERP que vence cada cierto tiempo, contraseña del ERP anterior que se sigue usando, contraseña de aplicaciones de terceros en internet (banca, seguro, reclutamiento etc..), las contraseñas de las cuentas personales (hotmail, gmail, facebook, twitter, instagram) y arriba de todo eso ahora yo vengo y les digo que tienen que tener una contraseña nueva para otra plataforma....solo imaginense sus caras.

Por eso tomé la desición de autenticar Moodle con Active Directory, para así decirle en el lenguaje de ellos "Entra con el usuario y contraseña de tu computadora" y que tengan menos cosas que recordar. Las herramientas que utilicé fueron las siguientes:

- Windows Server 2003 Server (Sí ya se, lo voy a migrar este año)
- Una cuenta de Active Directory (Suelo usar una tipo Domain Users, no es neceario que sea Administrativa, solo es para hacer queries LDAP)
- Moodle (No importa la plataforma, yo la tengo en CentOS 6)

Pasos previos

- Asegurate que el servidor moodle y Active Directory se den ping, que tengan comunicación a través del puerto LDAP (389) y si los separa un firewall crea una regla que permita comunicación directa entre ellos.
- Asegurate de que puedas iniciar sesión en una computadora del dominio con la cuenta de usuario de Active Directory que creaste para este fin.

Pasos:

1- Ir a Administración de sitios - Caracteristicas avanzadas - Extensiones - Identificación - Gestionar Identificación.

2- Habilitar (click en el ojo) Usar servidor LDAP, después donde dice Configuración.

3- La parametrización es la siguiente, sustituya según su conveniencia:

Ajustes de servidor LDAP

URL del host: ldap://ip-del-servidor-active-directory
Versión: 3
Usar TLS: No
Codificación LDAP: utf-8
Tamaño de página: 250

Fijar ajustes

Mapeado de datos

Nombre: GivenName
Apellidos: Sn
Dirección de correo: mail
Los demás campos se quedan por defecto.

Ya solo queda hacer click en guardar y ya los usuarios podrán autenticarse por Active Directory.






viernes, 8 de mayo de 2015

Experimentando con IPv6 en República Dominicana


Hace varias semanas decidí buscar la manera de conectarme al internet IPv6, pero tenía un problema, y era que ningún proovedor local prestaba ese servicio aún. Buscando y buscando en internet encontré una manera de conectarme al internet IPv6, y de la manera como nos gusta a los dominicanos "GRATIS".

Esto se logra a través de un servicio que ofrece el backbone de internet Hurricane Electric llamado Tunnelbroker. El servicio consiste en un tunel encapsulado 6in4 que haces con uno de los routers Edge que ofrece el servicio, es como si hicieras un Site to Site VPN con ellos. Una vez hecho el enlace puedes asignar al tunel un bloque /48, el cual puedes asignarlo a tu red (como lo hice).

En los siguientes pasos explico como hacer la cuenta de tunnelbroker, como asignarla a un router Cisco y como llevarla a tu red. A continuación la topología:



Los pasos son los siguientes:

1- Crear la cuenta en tunnelbroker.net. En su explorador acceda a la página http://tunnelbroker.net  y haga click donde dice register



2- Llenar el formulario a continuación, una vez lleno proceda a aceptar los términos.



3- Le llegará un correo de confirmación que contiene la información del formulario; una vez reciba el correo inicie sesión en tunnelbroker.net. Cuando esté en el menú principal, proceda a hacer click en "Create a regular tunnel".


4- Les aparecerá el cuadro abajo indicado, en este paso le pide la siguiente información:

a)- IPv4 Endpoint (Your side): Es la dirección IPv4 pública de su router Cisco.

b) Available Tunnel Servers: Es el router Edge con el cual usted iniciará el tunel. En este caso usaré Miami, FL, US. Una vez creado solo es cuestión de dar click donde dice create.



5- Una vez creado el tunnel es solo cuestión de volver al menú principal, y hacer click sobre el enlace del tunel que acabamos de crear que en nuestro caso es el número, en el caso mío tengo 2, uno para la casa que termina directamente en mi computadora y otro que termina en un router Cisco.

6- En la página de configuración del tunel, podemos asignar un bloque /48 para enrutar nuestros dispositivos IP detrás del router. Adicional a esto hay una pestaña llamada Example Configurations donde se puede generar la configuración para las plataformas más conocidas (Cisco IOS, Fortigate, Linux, Windows, PfSense, Checkpoint)



8- La configuración más relevante del router Cisco es la siguiente:

Habilitar IPv6 globalmente
ipv6 unicast routing

Habilitar el Tunel
interface Tunnel0
 description Tunel IPv6 con Hurricane Electric
 no ip address
 ipv6 address "Client IPv6 Address, esta parte se encuentra en el portal de configuración del tunel"
 ipv6 enable
 tunnel source "Su IPv4 Pública"
 tunnel destination 209.51.161.58
 tunnel mode ipv6ip

Habilitar la interfaz LAN del router, en caso de que quieran enrutar otros nodos de red
interface FastEthernet0/0
 ipv6 address IPv6 Asignado a partir del bloque /48
 ipv6 dhcp server HE rapid-commit
 no shutdown

Crear ruta por defecto hacia internet
ipv6 route ::/0 Tunnel0

DNS de google para resolver nombres de dominio en IPv6
ip name-server 2001:4860:4860::8888

DHCPv6 en router Cisco

ipv6 dhcp pool HEaddress prefix "Subred del bloque /48 asignado" lifetime infinite infinitedns-server 2001:4860:4860::8888domain-name example.com

9- Probando la conectividad

PING
francisvgarcia#ping ipv6 google.com
Sending 5, 100-byte ICMP Echos to 2607:F8B0:4008:804::200E, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 92/94/100 ms

TRACEROUTE

francisvgarcia#traceroute ipv6 google.com

Type escape sequence to abort.
Tracing the route to google.com (2607:F8B0:4008:804::200E)

  1 francisvgarcia-2.tunnel.tserv12.mia1.ipv6.he.net (2001:470:4:28B::1) 72 msec 76 msec 72 msec
  2 gige-g4-12.core1.ash1.he.net (2001:470:0:90::1) 72 msec 76 msec 116 msec
  3 2001:4860:1:1:0:1B1B:0:35 68 msec 68 msec 80 msec
  4 2001:4860::1:0:3D49 76 msec
    2001:4860::1:0:9FF 80 msec
    2001:4860::1:0:3D49 80 msec
  5 2001:4860::8:0:8F9E 68 msec 68 msec 72 msec
  6 2001:4860::8:0:5B13 84 msec 80 msec 80 msec
  7 2001:4860::1:0:245B 93 msec 96 msec 104 msec
  8 2001:4860:0:1::F3 92 msec 96 msec 96 msec
  9 google.com (2607:F8B0:4008:804::200E) 88 msec 96 msec 92 msec
francisvgarcia#

francisvgarcia#traceroute ipv6 google.com

Type escape sequence to abort.
Tracing the route to google.com (2607:F8B0:4008:804::200E)

  1 francisvgarcia-2.tunnel.tserv12.mia1.ipv6.he.net (2001:470:4:28B::1) 72 msec 76 msec 72 msec
  2 gige-g4-12.core1.ash1.he.net (2001:470:0:90::1) 72 msec 76 msec 116 msec
  3 2001:4860:1:1:0:1B1B:0:35 68 msec 68 msec 80 msec
  4 2001:4860::1:0:3D49 76 msec
    2001:4860::1:0:9FF 80 msec
    2001:4860::1:0:3D49 80 msec
  5 2001:4860::8:0:8F9E 68 msec 68 msec 72 msec
  6 2001:4860::8:0:5B13 84 msec 80 msec 80 msec
  7 2001:4860::1:0:245B 93 msec 96 msec 104 msec
  8 2001:4860:0:1::F3 92 msec 96 msec 96 msec
  9 google.com (2607:F8B0:4008:804::200E) 88 msec 96 msec 92 msec
francisvgarcia#

10- Ya tenemos el tunel conectado a internet a través del router Cisco, solo hay que hacer la configuración de la LAN, que en nuestro caso solo es conectar la computadora capaz de soportar IPv6. Como notan, no hay que hacer PAT (ip nat inside/outside )para acceder a internet IPv6, solo hay que definir una ruta por defecto. Es bueno destacar que la conexión está sin access list definidas, por lo que su equipo se está expuesto a internet. Debe por lo tanto, tomar las medidas necesarias. Aca adjunto el resultado de la página http://whatismyv6.com que es el equivalente al http://whatismyip.com de IPv4. Si quieren me pueden dar ping :-)



Como dije anteriormente, es posible terminar el tunel en una computadora con Linux, Mac, FreeBSD, Windows  o cualquier otro sistema operativo que soporte IPv6. La configuración en las diferentes plataformas la estaré explicando en otras publicaciones. También es posible, si posees un sistema autónomo público, establecer una sesión BGP con ellos y recibir la tabla de enrutamiento IPv6 completa que ellos poseen sin ningún costo adicional, esto a través del mismo servicio de tunnelbroker. 

Cualquier pregunta o sugerencia estoy a la disposición.

Permitir las llamadas de whatsapp a través de un firewall

El día de hoy hice un paréntesis para resolver una situación que estaba afectando los usuarios de whatsapp en una red wifi que tengo dedicada para los celulares; la situación era que a pesar de lograr comunicarse a través de mensajes de texto y notas de voz, no podían hacer uso de la llamada a través de la aplicación. Esto se debía a que a la VLAN que estaba usando dicho wifi estaba restringida al uso de HTTP, HTTPS, DNS y correo (SMTP/IMAP/POP) a ciertos servidores (gmail y el empresarial).

Lo que hice para resolver la situación, después de hacer una captura de las sesiones, fué abrir los siguientes puertos outbound TCP/UDP en el firewall:

5222, 5223, 5228, 3478

Hacia las siguientes direcciones IP e IPv6 (de ser necesario IPv6):


31.13.64.51/32
31.13.65.49/32
31.13.66.49/32
31.13.67.51/32
31.13.68.52/32
31.13.69.240/32
31.13.70.49/32
31.13.71.49/32
31.13.72.52/32
31.13.73.49/32
31.13.74.49/32
31.13.75.52/32
31.13.76.81/32
31.13.77.49/32
31.13.78.53/32
31.13.79.195/32
31.13.80.53/32
31.13.81.53/32
31.13.82.51/32
31.13.83.51/32
31.13.84.51/32
31.13.85.51/32
31.13.86.51/32
31.13.87.51/32
31.13.88.49/32
31.13.90.51/32
31.13.91.51/32
31.13.92.52/32
31.13.93.51/32
31.13.95.63/32
50.22.198.204/30
50.22.210.32/30
50.22.210.128/27
50.22.225.64/27
50.22.235.248/30
50.22.240.160/27
50.23.90.128/27
50.97.57.128/27
75.126.39.32/27
108.168.174.0/27
108.168.176.192/26
108.168.177.0/27
108.168.180.96/27
108.168.254.65/32
108.168.255.224/32
108.168.255.227/32
158.85.0.96/27
158.85.5.192/27
158.85.46.128/27
158.85.48.224/27
158.85.58.0/25
158.85.61.192/27
158.85.224.160/27
158.85.233.32/27
158.85.249.128/27
158.85.249.224/27
158.85.254.64/27
169.44.36.0/25
169.45.71.32/27
169.45.71.96/27
169.45.87.128/26
169.45.169.192/27
169.45.182.96/27
169.45.214.224/27
169.45.219.224/27
169.53.29.128/27
169.53.71.224/27
169.53.250.128/26
169.54.2.160/27
169.54.51.32/27
169.54.55.192/27
169.54.210.0/27
169.54.222.128/27
169.55.69.128/26
169.55.74.32/27
169.55.126.64/26
169.55.210.96/27
169.55.235.160/27
173.192.162.32/27
173.192.219.128/27
173.192.222.160/27
173.192.231.32/27
173.193.205.0/27
173.193.230.96/27
173.193.230.128/27
173.193.230.192/27
173.193.239.0/27
174.36.208.128/27
174.36.210.32/27
174.36.251.192/27
174.37.199.192/27
174.37.217.64/27
174.37.231.64/27
174.37.243.64/27
174.37.251.0/27
179.60.192.51/32
179.60.193.51/32
179.60.195.51/32
184.173.136.64/27
184.173.147.32/27
184.173.161.64/32
184.173.161.160/27
184.173.173.116/32
184.173.179.32/27
184.173.204.32/27
185.60.216.53/32
192.155.212.192/27
198.11.193.182/31
198.11.251.32/27
198.23.80.0/27
208.43.115.192/27
208.43.117.79/32
208.43.122.128/27
2607:f0d0:1301:17d::/64
2607:f0d0:1b01:d4::/64
2607:f0d0:1b02:14d::/64
2607:f0d0:1b04:32::/64
2607:f0d0:2102:229::/64
2607:f0d0:2601:37::/64
2607:f0d0:3003:1bc::/64
2607:f0d0:3004:136::/64
2607:f0d0:3004:174::/64
2607:f0d0:3005:183::/64
2607:f0d0:3005:1a3::/64
2607:f0d0:3006:84::/64
2607:f0d0:3006:af::/64
2607:f0d0:3801:38::/64
2607:f0d0:3802:48::/64
2a03:2880:f000:d:face:b00c::167/128
2a03:2880:f001:d:face:b00c::167/128
2a03:2880:f002:10f:face:b00c::167/128
2a03:2880:f003:c0d:face:b00c::167/128
2a03:2880:f004:11:face:b00c::167/128
2a03:2880:f005:11:face:b00c::167/128
2a03:2880:f005:322:face:b00c::167/128
2a03:2880:f006:11:face:b00c::167/128
2a03:2880:f007:11:face:b00c::167/128
2a03:2880:f008:11:face:b00c::167/128
2a03:2880:f009:11:face:b00c::167/128
2a03:2880:f00a:12:face:b00c::167/128
2a03:2880:f00b:d:face:b00c::167/128
2a03:2880:f00c:12:face:b00c::167/128
2a03:2880:f00c:11e:face:b00c::167/128
2a03:2880:f00d:d:face:b00c::167/128
2a03:2880:f00e:12:face:b00c::167/128
2a03:2880:f00f:11:face:b00c::167/128
2a03:2880:f011:d:face:b00c::167/128
2a03:2880:f012:d:face:b00c::167/128
2a03:2880:f013:d:face:b00c::167/128
2a03:2880:f014:11:face:b00c::167/128
2a03:2880:f015:1c:face:b00c::167/128
2a03:2880:f016:13:face:b00c::167/128
2a03:2880:f017:11:face:b00c::167/128
2a03:2880:f018:f:face:b00c::167/128
2a03:2880:f019:11:face:b00c::167/128
2a03:2880:f01a:11:face:b00c::167/128
2a03:2880:f01b:11:face:b00c::167/128
2a03:2880:f01c:11:face:b00c::167/128
2a03:2880:f01c:215:face:b00c::167/128
2a03:2880:f01f:11:face:b00c::167/128
2a03:2880:f021:11:face:b00c::167/128
2a03:2880:f022:d:face:b00c::167/128

Después de hacer esta excepción en el firewall los usuarios pudieron hacer y recibir llamadas sin problemas en whatsapp. Debido a la naturaleza dinámica de las aplicaciones de internet y de los servidores que prestan el servicio, estaré actualizando cualquier cambio que pueda surgir.

############## Actualización 24 de Febrero 2016 ##############################

Gracias a Anónimo 24 de Febrero 2016, 4:57, tenemos la lista de todas las direcciones IP e IPv6 actualizadas. Se pueden encontrar en el siguiente enlace:

https://www.whatsapp.com/cidr.txt




Elastix no inicia después de actualizar con error " Automatically restarting Asterisk .... Asterisk ended with exit status 139"

En ocasiones, cuando se actualiza Elastix se suele actualizar Asterisk a la versión LTS más reciente y puede que nos topemos con este error en /var/log/message o en la misma CLI:

Automatically restarting Asterisk

/usr/sbin/safe_asterisk: line 159: 6966 Segmentation fault (core dumped) nice -n $PRIORITY ${ASTSBINDIR}/asterisk -f ${CLIARGS} ${ASTARGS} > /dev/${TTY} 2>&1 < /dev/${TTY}

Asterisk ended with exit status 139

Esto se debe a una discrepancia con el codec G729 instalado en la PBX y el que debe estar instalado. Esto me sucede cuando actualizo de la versión 1.8 a la 11 de Asterisk o de la 11 a la 13. Para solucionarlo solo hay que desinstalar el codec g729 perteneciente a la versión anterior con:

mv /usr/lib/asterisk/modules/codec_g729.so /tmp/
service asterisk restart

Automáticamente Asterisk subirá y Elastix volverá a la normalidad, debemos recordar que hay que instalar el codec g729 de la versión nueva de Asterisk en "/usr/lib/asterisk/modules/" y reinciar el servicio "service asterisk restart" para que las llamadas con g729 funcionen con normalidad.


Bienvenidos

Saludos a todos,

Hago este blog con el objetivo de ayudar a resolver situaciones del diario vivir. El mismo no estará limitado a la tecnología, que es mi área de trabajo, sino también a los casos de la vida cotidiana en todos los ámbitos. Cosas que para muchos son triviales, pero que al final, complican a otros.

Espero que les sirva de provecho.

Saludos,

Francis Virgilio García