Páginas

Mostrando entradas con la etiqueta ddns. Mostrar todas las entradas
Mostrando entradas con la etiqueta ddns. Mostrar todas las entradas

domingo, 26 de enero de 2020

DST-NAT Mikrotik acceder desde Internet

Acceder desde Internet a nuestros dispositivos con IPs Privadas si tenemos una IP estática.

NAT Es utilizado:

1.- para permitir acceso a una red externa desde una que utiliza IPs privadas (srcnat). 

2.- Para permitir acceso desde una red externa a un recurso (p.e., web server) alojado en una red interna utilizamos dst-nat de nuestro Mikrotik. Dstnat también conocido como Port Forwarding


Existen 3 redes privadas que no son ruteables desde Internet. ¿Como un dispositivo con una IP privada pueda navegar en Internet?, gracias a NAT que traduce esa IP privada en una IP pública que pueda ser routeable desde Internet.


Los chains srcnat y dstnat son utilizados para implementar la funcionalidad de NAT.


Dst Nat se refiere a una dirección IP y un puerto (193.153.76.150:80). Si el router recibe un intento de conexión a la IP pública 193.153.76.150 por el puerto 80 tenemos una regla con el chain dst-nat en la pestaña NAT del firewall que va a redirigir el tráfico a la dirección IP del servidor web, p.e., 192.168.88.120 puerto 80. El redireccionamiento lo realiza el Mikrotik. Todas las conexiones van a pasar por el Mikrotik.


La Action Redirect es un tipo especial de dstnat que rediríge el paquete al mismo router, puede ser utilizado para crear servicios proxy transparentes (DNS, HTTP).


Masquerade es un tipo especial de srcnat. Cambia la dirección IP de origen por la IP pública del router.


Abrimos el winbox y nos conectamos al router que tiene acceso a Internet. Lo primero es ir a IP -> Firewall -> NAT para agregar una nueva regla, es importante que se encuentre en el Chain dstnat, a continuación en Dst. Address vamos a introducir la IP pública del router (p.e. 194.187.249.184) seleccionamos el protocolo tcp y el Dst. Port, puerto en el que vamos a escuchar (80). Cuando alguien desde el exterior acceda al puerto 80 vamos a redirigirlo al web Server. Luego en Action vamos a seleccionar dstnat y vemos dos campos que son a la dirección y a los puertos To Address y To Ports. Vamos a redirigir a la dirección 192.168.88.120 y el puerto 80. En comentarlo tecleamos Redirigir al servidor web. 


Como estoy redirigiendo el puerto 80, he cambiado el puerto www del router al 88. O sea, que si quiero acceder a este router vía webfig debo hacerlo utilizando el puerto: 192.168.88.1:88. Si no cambiamos el puerto www no podremos acceder vía web a este router porque lo estará enviando al web Server. En estos momentos la redirección tendría que estar funcionando. Si tecleo en el navegador la dirección IP 194.187.249.184) nos debería redirigir al servidor web.


Si tecleo en el navegador la ip privada 192.168.88.200 me aparece el mismo sitio web, pero este es accesible solo dentro mi red LAN. Si utilizo dstnat, desde cualquier sitio del mundo van a poder acceder a la página web que está alojada dentro de nuestra red LAN.


Mikrotik es genial!.

lunes, 20 de enero de 2020

DDNS Mikrotik IP dinamica



DDNS funciona revisando la IP cada segundos. El tiempo de espera del servidor Cloud Mikrotik (15 segundos). Registro DDNS TTL (60 segundos). Envía paquetes encryptados a cloud.mikrotik.com usando el puerto UDP = 15252.
 
Activar el servicio DDNS
IP Cloud

DDNS enabled



Ya asignada una dirección de dominio del tipo a4b00b98ca6c.sn.mynetname.net. La primera parte está relacionada con nuestro disopositivo y la segunda es la parte del dominio que maneja Mikrotik. A partir de este punto cuando querramos ingresar al router utilizaremos el dominio y no la IP. En el momento que la dirección IP cambie el router automáticamente esa ip y en el Cloud estará la nueva IP disponible y nosotros vamos a tener acceso a nuestro router.

Pero no es suficiente con el dominio para alcanzar nuestro router porque tenemos políticas de firewall que nos están impidiendo el acceso a esa IP. La última regla del firewall dice: todo lo que venga hacia el router (input) que entre por la interfz WAN drop.


Es decir, cualquier servicio que no esté explícitamente permitido por el firewall será rechazado.

Crear la regla

IP Firewall
New Firewall Rule

Todo lo que vaya al router (input) a través del protocolo tcp y puerto 80 lo aceptamos. Y luego colocar esta nueva regla por encima del drop, si no no se va a ejecutar porque el firewall se ejecuta de manera lineal.

Chain input
Protocol tcp
Dst. Port 80 (Todo lo que vaya al puerto 80)
Action Accept



Abrir Firefox y en la barra de direciones pegar el nombre del dominio proporcionado por Mikrotik y ya tengo acceso al Router desde mi red interna.

Si tenemos un modem un router y después otro router y en este último quiero utilizar IP Cloud. Habilitar IP Cloud para que el segundo routerMikrotik nos asigne el DNS Name. Un mensaje nos informa que el Router está detrás de un NAT y que la conexión remota podría no funcionar. En este segundo router el servicio web está en el puerto 81. Por tanto en el navegador será DNS Name:81. pero no funcionará porque no hemos establecido la regla en el Firewall del router principal.

IP Firewall
Chain input
Protocol tcp
Dst. Port 81
Action Accept


También necesitamos una regla NAT para redirigir el tráfico desde el Router principal al router secundario. Creamos una Address List que llamaremos WAN donde copiaremos DNS Name desde IP Cloud. Luego creamos la regla en IP Firewall NAT


IP Firewall pestaña NAT
Chain: dstnat
Protocol tcp
Dst. Port 81
Pestaña Advanced
Dst.Address List: WAN
Pestaña Action
Action: dst-nat
To Address: 192.168.10.1
To. Address: 192.168.10.1
To Ports: 81




Ya tenemos acceso a los dos Router Mikrotik.




MikroTik es genial!.

domingo, 1 de diciembre de 2013

FreeBSD ddns apache mysql drupal

Si en un momento determinado tenemos la intención de habilitar un servidor web o acceder remotamente a nuestra red, nos encontramos con el tema de que nuestro ISP nos proporciona una ip dinámica (diferente) cada vez que nos conectamos. Por esto se hace necesario registrar una cuenta ddns.

En este caso y a modo de laboratorio realizaremos todo el proceso desde el registro ddns hasta la instalación y puesta en funcionamiento del CMS Drupal.

Dinamic DNS

Configurar ddns en el router vdsl Comtrend VR-3025u 30MB Jazztel



Les presento dnsdynamic.org un ddns gratuito y según dice siempre lo será. Durante el registro nos pedirá una cuenta de correo válida y un password que serán utilizados posteriormente, también hay que elegir un dominio. El password me lo invento por lo tanto no traten de entrar en dnsdynamic.org con esta cuenta, solo serviría para cargar el servidor:

login=nombreusuario@gmail.com # correo registrado
password=26Ac9yodLK4jzH48== # password registrado (inventado)
carlescamilo.dnsdynamic.com # dominio registrado

Ahora vamos a nuestro servidor FreeBSD e instalamos ddclient utilizado para actualizar automáticamente dynamic DNS:
$ ssh -l carlos -p 3434 192.168.3.1
password

$ hostname
$ freebsdsvr.linux.bcn

# cd /usr/ports/dns/ddclient
# make install clean
# rehash

# cd /usr/local/etc
# cp ddclient.conf.sample ddclient.conf
# ee ddclient.conf
# Archivo de configuración /usr/local/etc/ddclient.conf


Guardar y salir.

ddclient.conf contiene el password de su proveedor DNS dinámico, hágalo legible solo por root:
# chmod 600 /usr/local/etc/ddclient.conf

y agregue las siguientes líneas de inicio:
# ee /etc/rc.conf

ddclient_enable="YES"
ddclient_flags="-daemon 600" # comprobar cada 600 segundos

Guardar los cambios y levantar el demonio:

# /usr/local/etc/rc.d/ddclient start
Confirmar que ddclient se está ejecutando:


Si repite el comando ps comprobará el estado de ddclient en cualquier momento. Después de que el tiempo de sueño expire, ddclient
debe comprobar su IP pública y hacer los cambios apropiados a su proveedor DNS dinámico.

El archivo /var/tmp/ddclient.cache guarda la última dirección IP pública conocida del sistema y los mensajes de estado de los registros ddclient, así como errores los guarda en /var/log/messages


Correos electrónicos de estado se enviarán a la dirección de correo electrónico de la cuenta root. (Si configura el reenvío de correo electrónico del usuario root en el archivo /etc/aliases), configure la dirección de correo electrónico a la que desea que lleguen los mensajes agregando esta línea:
# ee /etc/aliases

root: localuser, nombreusuario@gmail.com # su cuenta

Guardar y salir

Nota: El puerto 25 es utilizado por mail para el envío de email por lo tanto el firewall debe permitir su paso y no olvide abrir el puerto 587 en su router ADSL si utiliza gmail, por ejemplo en este caso el 587 abierto para la dirección IP 192.168.1.250)

Adicionalmente debe configurar dnsdynamic en su router de acceso a Internet. Un ejemplo para el Comtrend vr3025u Multi-DSL 30 Megas de Jazztel:

hostname: carlescamilo.dnsdynamic.com # dominio dnsdynamic
username: nombreusuario@gmail.com # mail registro dnsdynamic
password=26Ac9yodLK4jzH48== # password, me lo invento
service: dyndns
interface: ppp1.1

Depurar ddclient. Trate de ejecutar el comando siguiente:

# ddclient -daemon=0 -noquiet -debug
DEBUG:    proxy  =
DEBUG:    url    = myip.dnsdynamic.com
DEBUG:    server = myip.dnsdynamic.com
DEBUG:    get_ip: using web, myip.dnsdynamic.com reports 96.27.155.98
DEBUG:   
DEBUG:     nic_dyndns2_update -------------------
DEBUG:    proxy  =
DEBUG:    url    = http://www.dnsdynamic.org/nic/update?system=custom&hostname=carlescamilo.dnsdynamic.com&myip=96.27.155.98
DEBUG:    server = www.dnsdynamic.org

Apache HTTP Server

Instalar el servidor Apache

Comprobar el archivo /etc/hosts
ee /etc/hosts

#
::1 localhost freebsdsvr.linux.bcn
127.0.0.1 localhost freebsdsvr.linux.bcn
192.168.3.1 freebsdsvr freebsdsvr.linux.bcn
#

Instalar el Servidor Apache
# cd /usr/ports/www/apache22
# make config ; make install clean
# rehash

Agregar las siguientes líneas a httpd.conf
# ee /usr/local/etc/apache22/httpd.conf

ServerAdmin mailvalido@gmail.com
ServerName freebsdsvr.linux.bcn:80

Comprobar errores de sintaxis en el archivo de configuración
# apachectl configtest
Performing sanity check on apache22 configuration:
Syntax OK

Después agregar las siguientes lineas en /etc/rc.conf:
apache22_enable="YES"
apache22_http_accept_enable="YES"

# /usr/local/etc/rc.d/apache22 start


El comando GET es case sensitive. Asegúrese de presionar enter dos veces y fíjese que antes y después del primer slash hay espacio.

Si puede ver el texto it works! en la última línea de salida quiere decir que Apache funciona.

Con el navegador lynx puede hacerse lo mismo
# lynx http://freebsdsvr.linux.bcn:



o desde un cliente de la red invocando freebsdsvr.linux.bcn ó la dirección IP 192.168.3.1:


Archivos LOG de Apache:

/var/log/httpd-access.log
Contiene un log de las direcciones IP, hora, y la actividad enn el servidor HTTP.
/var/log/httpd-error.log
Contiene un log de los mensajes de error producidos opr el seridor HTTP.

PHP5

# cd /usr/ports/lang/php52
# make config ; make install clean
# rehash

Un menú de opciones para php5 diríjase hasta Apache y presione la barra espaciadora para instalar el módulo Apache, luego OK para empezar la instalación.

PHP5-5.4-29

El module requerido para el soporte de aplicaciones PHP  sobre Apache debe instalarse:
# cd /usr/ports/www/mod_php5
make install clean

Antes de construir este puerto vamos a añadir soporte para MySQL y MySQLi (una interfaz mejorada para MySQL) con el fin de comunicarse con el servidor MySQL.
# cd /usr/ports/lang/php5-extensions/
make config

En el menú correspondiente tiene seleccione “MySQL database support” y “MySQLi database support,” luego proceda a construir el puerto:
# make install clean

Ha llegado el momento de configurar PHP para utilizarlo en su sistema insertando en DirectoryIndex declaración index.php:

# ee /usr/local/etc/apache22/httpd.conf

DirectoryIndex index.php index.html

y agregar estas líneas:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

En el caso de PHP5-5.4_29 al final del archivo http.conf agregamos:


Copiar el archivo php.ini-production php.ini que son las opciones recomendadas para entornos de servidores en producción.

# cp /usr/local/etc/php.ini-production /usr/local/php.ini

La directiva session.save_path le dice a PHP donde almacenar los archivos temporales de sesión.

# ee /usr/local/php.ini

session.save_path = "/tmp"

Guardar y salir.

# /usr/local/etc/rc.d/apache22 restart

Para comprobar la instalación de PHP crearemos un archivo llamado phpinfo.php en el directorio raíz del servidor web:

# ee /usr/local/www/apache22/data/phpinfo.php
Añadir estas líneas:

Guardar y salir.

Solicite phpinfo.php de su servidor Apache desde un navegador web. Si lynx está instalado este es el aspecto para el hostname freebsdsvr.linux.bcn:

PHP5-5.4_29




Suprimir el archivo phpinfo.php después de la prueba.
# rm /usr/local/www/apache22/data/phpinfo.php

MySQL junto a PHP es utilizado para crear sitios web dinámicos.
Asegúrese de que el nombre de host de su servidor puede resolverse localmente:
 Comprobar el archivo /etc/hosts
ee /etc/hosts

::1 localhost freebsdsvr.linux.bcn
127.0.0.1 localhost freebsdsvr.linux.bcn
192.168.3.1 freebsdsvr freebsdsvr.linux.bcn

Instalar MySQL Server
# cd
/usr/ports/databases/mysql55-server
# make -D BUILD_OPTIMIZED install clean
# rehash

Ejecute el script de mysql_install_db para establecer las tablas de permisos necesarios para MySQL. Almacenan información acerca privilegios, Permisos de usuario de MySQL y otras opciones de seguridad.

# mysql_install_db --user=mysql

Iniciar el demonio MySQL y configurar la contraseña de root de MySQL:

# mysqld_safe &
# mysqladmin -u root password 'localpassword'

MySQL incluye ejemplos de configuración ubicados en el directorio /usr/local/share/mysql, cada uno de los cuales configurado para un sistema determinado:

my-medium.cnf

Sistemas con más de 128MB de RAM (recomendado para servidores web)

# cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf

Si MySQL va a utilizarse para aplicaciones PHP basadas en la web desactivar las redes TCP hará la instalación MySQL más segura.

Se aplica si el servidor web y la base de datos MySQL funcionan en el mismo ordenador. Descomentar la línea skip-networking del archivo /var/db/mysql/my.cnf

# ee /var/db/mysql/my.cnf
skip-networking

Configurar MySQL para iniciarse automáticamente con el sistema

# ee /etc/rc.conf
mysql_enable="YES"

Aplicar los cambios reiniciando MySQL:

# /usr/local/etc/rc.d/mysql-server restart

Para ver los mensajes de log error si los hubieran, el path es /var/db/mysql/freebsdsvr.linux.bcn.err y su nombre coincide con su hostname.


También hay que asegurarse que los permisos del directorio /tmp son los correctos:

# ls -ld /tmp
drwxrwxrwt  6 root  wheel  512 Nov 26 10:03 /tmp

Si no fuera así root puede corregirlos:

# chown root:whell /tmp
# chmod 777 /tmp
# chmod =t /tmp

Instalar el gestor de contenidos (CMS) Drupal7:

Primero hay que crear la base de datos.

# mysql -u root -p
Enter password: 
mysql> create database drupal;
mysql> grant all on drupal.* to
    -> drupal@localhost identified by 'password';
mysql> quit

Sustituya password por la contraseña de su elección. Esta contraseña la necesitará más adelante, no la olvide!.

Instalar Drupal7

# cd /usr/ports/www/drupal7
# make config; make install clean


Configurar Drupal para utilizarlo en su sistema:

Este archivo indica a apache la ubicación correcta de los archivos de Drupal y hace la administración más fácil. De forma predeterminada Apache busca en el directorio /usr/local/apache22/Includes para los archivos de configuración. Crear un archivo para Drupal:

# ee /usr/local/etc/apache22/Includes/drupal.conf

Agregue las líneas siguientes:


Guardar y salir. Reiniciar Apache.

# /usr/local/etc/rc.d/apache22 restart

Crontab es un servicio del sistema que permite la ejecución automática de scripts o programas de acuerdo con un calendario establecido en el archivo /etc/crontab. Hay que añadir una línea a /etc/crontab para permitir las tareas de mantenimiento de Drupal.

# ee /etc/crontab

45 */4 * * * root /usr/local/bin/lynx http://freebsdsvr.linux.bcn/drupal/cron.php

Abrir http://freebsdsvr.linux.bcn/drupal/install.php en su navegador sustituyendo su hostname y directorio, si lo ha modificado.

Introducir los datos utilizados previamente en la creación de la base de datos, nombre, nombre de usuario y contraseña. Guardar los cambios.


Seguir el asistente y al finalizar clic en su new site.


Desde fuera de nuestra red, he configurado soporte SSL para Apache::




Desde nuestra propia red:


Unix es genial!.

jueves, 25 de julio de 2013

Dynamic DNS Comtrend VR-3025u


Mucha gente está teniendo problemas para configurar Dynamic DNS a través del nuevo router VR-3025u de Jazztel 30MB, para habilitar el acceso remoto al servidor u otra máquina dentro de la red interna.

El origen de la confusión es que solo aparecen en la configuración del router (DNS -Dynamic DNS - Add Dynamic DNS) las opciones DynDNS.org y TZO.

Configurar Dynamic DNS utilizando una cuenta de synology.

(Tampoco presenta ninguna dificultad la configuración de dnsdynamic.org)

Dispongo de una cuenta DDNS en synology que utilizo para acceder remotamente al servidor synology y otra en noip para acceder a un segundo servidor freebsd interno a través del firewall pfsense. Como el proceso es similar solo configuraremos el de acceso al servidor synology utilizando https puerto 7001, que veremos más adelante, o un número de puerto secreto si el servidor no tiene servicios públicos accesibles desde Internet, como un servidor web.

Abrir puertos en el router:

DDNS synology:
Acceder desde una red externa al servidor utilizando el puerto 7001:

FreeBSD es genial!.