Archivo

Archivo para la categoría ‘Redes’

DNS dinámicas con DigitalOcean y su API v2.0

lunes, 7 de julio de 2014 Sin comentarios

Si queremos tener accesible nuestra Raspberry a través de una conexión a Internet que nos provee una IP dinámica, podemos hacer uso de la API de DigitalOcean para configurar un subdominio que vaya cambiando su IP a la par que la nuestra.

Para ello deberemos crear un nuevo token desde el panel de administración de DigitalOcean, algo parecido a una especie de hash.

Después crearemos un nuevo registro de tipo A en el gestor de DNS que podemos llamar «home», con lo que nuestro dominio dinámico será algo así como «home.midominio.com».

Después haremos un script en nuestra Raspberry que tenga el siguiente aspecto:

!/bin/bash
var_token=»nuestroToken»
var_domain=»midominio.com»
var_record_id=»elIDdeHome»
var_ip=$(curl -s icanhazip.com)

## Devuelve las últimas acciones realizadas ##
#curl -X GET «https://api.digitalocean.com/v2/actions» \
# -H «Authorization: Bearer $var_token»
## Devuelve la información sobre el dominio ##
#curl -X GET «https://api.digitalocean.com/v2/domains/$var_domain/records» \
# -H «Authorization: Bearer $var_token»

## Cambia la IP del dominio ##
curl -X PUT «https://api.digitalocean.com/v2/domains/$var_domain/records/$var_record_id» \
-d'{«data»:»‘$var_ip'»}’ \
-H «Authorization: Bearer $var_token» \
-H «Content-Type: application/json»

Los únicos valores que tendremos que cambiar serán var_token (el token que hemos generado en el paso anterior), var_domain (el dominio que nos interesa modificar) y el var_record_id (un valor que deberemos recuperar).

Entonces, nuestra IP external la obtendremos gracias al servicio de «icanhzip.com» que soporta IPv4 e IPv6. El siguiente valor que nos interesa recuperar será el identificador del registro A de «home», que se obtiene ejecutando el siguiente script:

!/bin/bash
var_token=»nuestroToken»
var_domain=»midominio.com»

curl -X GET «https://api.digitalocean.com/v2/domains/$var_domain/records» \

-H «Authorization: Bearer $var_token»

Una vez editado el script con toda ésta información sólo nos quedará programarlo en Cron. Para ello ejecutaremos como root el siguiente comando:

crontab -e

Añadiremos la ruta hasta nuestro script y la información para que se ejecute todos los días cada 5 horas:

# Actualiza la IP en DigitalOcean
* */5 * * * /opt/dynamicDNS/dns-digitalocean.sh > /dev/null 2>&1 | logger «Digital Ocean – Updating IP»

 

No olvidar instalar Curl en Raspbmc si no lo tenéis ya:

apt-get install curl

 

 

Direcciones de interés:

Información relativa a la API v2 de DigitalOcean

Manual Básico de Cron

 

 

Usando Iperf

martes, 20 de septiembre de 2011 Sin comentarios

Iperf es una herramienta realmente útil para medir la capacidad de transferencia en una red local. Un ejemplo sencillo donde se mide la velocidad entre dos equipos podría ser el siguiente.

Ejecutado en el Equipo1 donde Iperf se pone en modo servidor a la espera de peticiones:

# iperf -s

————————————————————
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
————————————————————

Ejecutado en el Equipo2 donde Iperf realizará la conexión con el servidor:

# iperf -c 192.168.1.1
————————————————————
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 3] local 192.168.1.2 port 52528 connected with 192.168.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 112 MBytes 94.4 Mbits/sec

Como se puede ver devuelve la velocidad alcanzada en 94.4 Mbits/segundo que no está nada mal para una red 10/100. Pero se puede hacer uso de la opción -P para comprobar la respuesta del servidor ante peticiones en paralelo, en este caso concretamente 4:

# iperf -c 192.168.1.1 -P 4 

————————————————————
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 6] local 192.168.1.2 port 33831 connected with 192.168.1.1 port 5001
[ 3] local 192.168.1.2 port 33828 connected with 192.168.1.1 port 5001
[ 4] local 192.168.1.2 port 33829 connected with 192.168.1.1 port 5001
[ 5] local 192.168.1.2 port 33830 connected with 192.168.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 6] 0.0-10.0 sec 27.0 MBytes 22.6 Mbits/sec
[ 5] 0.0-10.0 sec 30.0 MBytes 25.1 Mbits/sec
[ 3] 0.0-10.1 sec 30.0 MBytes 24.9 Mbits/sec
[ 4] 0.0-10.1 sec 27.8 MBytes 23.0 Mbits/sec
[SUM] 0.0-10.1 sec 115 MBytes 95.2 Mbits/sec

Es una herramienta muy recomendable para investigar posibles cuellos de botella en redes con alta carga de uso.