<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Notas y recortes &#8211; miguelcarmona.com</title>
	<atom:link href="http://miguelcarmona.com/notas-y-recortes/feed" rel="self" type="application/rss+xml" />
	<link>http://miguelcarmona.com</link>
	<description>Blog/Portfolio profesional de Miguel Carmona</description>
	<lastBuildDate>Mon, 16 May 2016 16:16:29 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.6.1</generator>
	<item>
		<title>Auditando la Seguridad de Sistemas Linux con Lynis</title>
		<link>http://miguelcarmona.com/notas-y-recortes/auditando-la-seguridad-de-sistemas-linux-con-lynis</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/auditando-la-seguridad-de-sistemas-linux-con-lynis#respond</comments>
		<pubDate>Wed, 07 Jan 2015 11:13:51 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=1048</guid>
		<description><![CDATA[Hace un tiempo hable de Lynis y hoy decido tocarlo nuevamente ya que es una herramienta bastante util para auditar el nivel de seguridad de nuestros servidores Linux. Lynis que ya va por la versión 1.6.2 ,es una herramienta de auditoría de Seguridad de Código Libre desarrollada y mantenidad por CISOfy, su principal objetivo es [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://miguelcarmona.com/wp-content/uploads/2015/01/rootkit.gif"><img class="alignleft size-full wp-image-1056" src="http://miguelcarmona.com/wp-content/uploads/2015/01/rootkit.gif" alt="rootkit" width="135" height="133" /></a>Hace un tiempo hable de<strong> Lynis</strong> y hoy decido tocarlo nuevamente ya que es una herramienta bastante util para auditar el nivel de seguridad de nuestros servidores Linux.</p>
<p><strong>Lynis</strong> que ya va por la versión <strong>1.6.2</strong> ,es una herramienta de auditoría de Seguridad de Código Libre desarrollada y mantenidad por <a href="http://cisofy.com/" target="_blank">CISOfy</a>, su principal objetivo es ayudar a los Administradores de Sistemas, Auditores y profesionales de Seguridad auditar y asegurar sus sistemas basados en Linux o Unix, Es bastante flexible y corre en casi todas las distribuciones.</p>
<p><span id="more-1048"></span></p>
<p><strong>Lynis</strong> se encarga de ejecutar una serie de pruebas y recopilar información sobre el sistema completo. Sus pruebas se basan en estándares y lineamentos de Seguridad, ejemplo de esto son la búsqueda de aplicaciones instaladas detectando cualquier falla en las configuraciónes de estas. Luego de finalizada la prueba este escribe los resultados en un archivo donde podremos ver mas al detalle las pruebas realizadas y las sugerencias para aumentar el nivel de seguridad del servidor que hemos auditado.</p>
<p>Entre las pruebas que realiza esta herramienta podemos mencionar:</p>
<ul>
<li><strong>Herramientas del Sistema </strong></li>
<li><strong>Booteo y Servicios </strong></li>
<li><strong>Kernel </strong></li>
<li><strong>Procesos y memoria </strong></li>
<li><strong>Usuarios, Grupos y metodos de autenticación </strong></li>
<li><strong>Shells </strong></li>
<li><strong>Sistema de Archivos </strong></li>
<li><strong>Almacenamiento </strong></li>
<li><strong>Sistemas de Archivos en la Red, NFS </strong></li>
<li><strong>Aplicaciones </strong></li>
<li><strong>Servicios de Nombre: </strong>DNS, Bind</li>
<li><strong>Puertos </strong></li>
<li><strong>Paquetes </strong></li>
<li><strong>Servicios de Red </strong></li>
<li><strong>Servicios de Impresión </strong></li>
<li><strong>Correo y mensajería </strong></li>
<li><strong>Servicios de Red: </strong>Nginx, Apache</li>
<li><strong>SSH </strong></li>
<li><strong>SNMP </strong></li>
<li><strong>Base de Datos:</strong> MySQL, Oracle, MariaDB</li>
<li><strong>LDAP </strong></li>
<li><strong>PHP </strong></li>
<li><strong>Squid </strong></li>
<li><strong>Archivos y Logging </strong></li>
<li><strong>Servicios Inseguros:</strong> Inetd</li>
<li><strong>Tareas Programadas: </strong>Cron, atd</li>
<li><strong>Criptografía </strong></li>
<li><strong>Virtualización </strong></li>
<li><strong>Integridad de los archivos </strong></li>
<li><strong>Malware </strong></li>
<li><strong>Directorios </strong></li>
<li><strong>y mas. </strong></li>
</ul>
<p>Mientras<strong> Lynis</strong> va realizando las pruebas, arroja los resultados de cada prueba en la pantalla que el auditor o administrador de sistemas debe ir interpretando y revisando, pero estos podrán ser visualizados mas adelante en el archivo que Lynis crea con los resultados en la ruta <strong>/var/log/lynis.log</strong></p>
<p><strong>Como descargamos y corremos la herramienta?</strong></p>
<p><strong>Para descargar y correr la herramienta vamos a ejecutar estos comandos:</strong></p>

<div class="wp_codebox"><table><tr id="p10485"><td class="code" id="p1048code5"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># wget http://cisofy.com/files/lynis-1.6.2.tar.gz</span></pre></td></tr></table></div>

<p><strong>Descomprimimos el archivo</strong></p>

<div class="wp_codebox"><table><tr id="p10486"><td class="code" id="p1048code6"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># tar xzvf lynis-1.6.2.tar.gz</span></pre></td></tr></table></div>

<p><strong>Accedemos al Directorio y lo ejecutamos:</strong></p>

<div class="wp_codebox"><table><tr id="p10487"><td class="code" id="p1048code7"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># cd lynis</span></pre></td></tr></table></div>

<p><strong>Uso Básico</strong></p>

<div class="wp_codebox"><table><tr id="p10488"><td class="code" id="p1048code8"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># ./lynis –checkall –quick</span></pre></td></tr></table></div>

<p>Con este comando lynis hará un test completo al servidor y la opción &#8211;quick es para que no espere nuestra entrada para continuar</p>
<p><strong>otros parámetros para Lynis.</strong></p>
<table border="1" cellspacing="0" cellpadding="2" align="center">
<colgroup>
<col width="211" />
<col width="110" />
<col width="331" /> </colgroup>
<tbody>
<tr>
<td width="211"><strong>Parámetro</strong></td>
<td width="110"><strong>Abreviación</strong></td>
<td width="331"><strong>Descripción</strong></td>
</tr>
<tr>
<td width="211">–auditor “Nombre Auditor”</td>
<td width="110"></td>
<td width="331">Asignar un nombre al Auditor</td>
</tr>
<tr>
<td width="211">–checkall</td>
<td width="110">-c</td>
<td width="331">Realizar un chequeo completo</td>
</tr>
<tr>
<td width="211">–check-update</td>
<td width="110"></td>
<td width="331">Revisar si Lynis está actualizado</td>
</tr>
<tr>
<td width="211">–cronjob</td>
<td width="110"></td>
<td width="331">Correr Lynis como un Cron</td>
</tr>
<tr>
<td width="211">–help</td>
<td width="110">-h</td>
<td width="331">Mostrar parámetros Válidos</td>
</tr>
<tr>
<td width="211">–manpage</td>
<td width="110"></td>
<td width="331">Ver Páginas man</td>
</tr>
<tr>
<td width="211">–nocolors</td>
<td width="110"></td>
<td width="331">No utilizar colores</td>
</tr>
<tr>
<td width="211">–pentest</td>
<td width="110"></td>
<td width="331">Realizar un Escaneo de Penetración(Sin privilegios)</td>
</tr>
<tr>
<td width="211">–quick</td>
<td width="110">-Q</td>
<td width="331">No esperar entrada del usuario</td>
</tr>
<tr>
<td width="211">–quiet</td>
<td width="110"></td>
<td width="331">Solo mostrar advertencias</td>
</tr>
<tr>
<td width="211">–reverse-colors</td>
<td width="110"></td>
<td width="331">Usar otro esquema de Colores para fondos claros</td>
</tr>
<tr>
<td width="211">–version</td>
<td width="110">-V</td>
<td width="331">Verificar versión de la Herramienta</td>
</tr>
<tr>
<td width="211">–no-log</td>
<td width="110"></td>
<td width="331">No crear archivo de log</td>
</tr>
</tbody>
</table>
<p><strong>Lynis</strong> ha mostrado ser una herramienta bastante efectiva al momento de revisar la seguridad de los sistemas Linux y es una herramienta que recomiendo utilizar antes de colocar un servidor Linux en producción y mas cuando se trata de uno que estará hosteando un portal web o aplicacion crítica. La he estado utlizando por mucho tiempo y debo decir que ha sido siempre mi punto de partida al momento de auditar mis sistemas.</p>
<p><strong>Lynis</strong> ya cuenta con una versión empresarial de pago que incluye otras características que pueden verlo <a href="http://www.jsitech.com/linux/auditando-la-seguridad-de-sistemas-linux-con-lynis/cisofy.com/lynis-enterprise/" target="_blank">aquí</a>.</p>
<p>&nbsp;</p>
<p>vía: <a href="http://www.mikejr1.es/linux/index.php/-noticias-mundo-linux-/software/11368-auditando-la-seguridad-de-sistemas-linux-con-lynis.html">http://www.mikejr1.es/linux/index.php/-noticias-mundo-linux-/software/11368-auditando-la-seguridad-de-sistemas-linux-con-lynis.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/auditando-la-seguridad-de-sistemas-linux-con-lynis/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servidor Virtual Private Network (VPN)</title>
		<link>http://miguelcarmona.com/notas-y-recortes/servidor-virtual-private-network-vpn</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/servidor-virtual-private-network-vpn#respond</comments>
		<pubDate>Wed, 29 Jan 2014 21:42:54 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=1006</guid>
		<description><![CDATA[Navegando de vez en cuando encuentras pequeñas joyas bien documentadas que merece guardar. Aquí tenéis una de www.linuxparatodos.net Sólo hay que adaptar pequeños detalles como la instalación a la distribución que estemos usando. El resto es totalmente válido para la mayoría de configuraciones comunes (que no quiere decir que haya una más correcta para la [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Navegando de vez en cuando encuentras pequeñas joyas bien documentadas que merece guardar. Aquí tenéis una de <a href="http://www.linuxparatodos.net/web/comunidad/base-de-conocimiento/-/wiki/Base+de+Conocimiento/Servidor+Virtual+Private+Network+(VPN)">www.linuxparatodos.net</a></p>
<p>Sólo hay que adaptar pequeños detalles como la instalación a la distribución que estemos usando. El resto es totalmente válido para la mayoría de configuraciones comunes (que no quiere decir que haya una más correcta para la distribución que estés usando).</p>
<h4>Índice</h4>
<ol>
<li class="toc-level-1"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Ventajas+de+las+VPN+.">Ventajas de las VPN .</a></li>
<li class="toc-level-1"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Tipos+de+VPN">Tipos de VPN</a></li>
<li class="toc-level-1"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Servidores+VPN">Servidores VPN</a></li>
<li class="toc-level-1">
		<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Postinstalacion+OpenVPN.">Postinstalación OpenVPN.</a>
<ol>
<li class="toc-level-2"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Agregando+Repositorio.">Agregando Repositorio.</a></li>
<li class="toc-level-2"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Instalaci%C3%B3n+OpenVPN.">Instalación OpenVPN.</a></li>
<li class="toc-level-2"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Interfaces+OpenVPN.">Interfaces OpenVPN.</a></li>
</ol>
</li>
<li class="toc-level-1">
		<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Servicio+OpenVPN">Servicio OpenVPN</a>
<ol>
<li class="toc-level-2">
				<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Host+To+Host">Host To Host</a>
<ol>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Server+Host+To+Host.">Server Host To Host.</a></li>
<li class="toc-level-3">
						<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Client+Host+To+Host.">Client Host To Host.</a>
<ol>
<li class="toc-level-4"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+GNU/Linux">Clientes GNU/Linux</a></li>
<li class="toc-level-4"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+Windows">Clientes Windows</a></li>
</ol>
</li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexi%C3%B3n.">Comprobando Conexión.</a></li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Host+To+Host.">Diagrama Host To Host.</a></li>
</ol>
</li>
<li class="toc-level-2">
				<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Road+Warrior"><br />
				Road Warrior</a>
<ol>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Server+Road+Warrior">Server Road Warrior</a></li>
<li class="toc-level-3">
						<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Client+Road+Warrior">Client Road Warrior</a>
<ol>
<li class="toc-level-4"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+GNU/Linux">Clientes GNU/Linux</a></li>
<li class="toc-level-4"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+Windows">Clientes Windows</a></li>
</ol>
</li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexi%C3%B3n.">Comprobando Conexión.</a></li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Asignar+IP+Est%C3%A1ticas+Road+Warrior.">Asignar IP Estáticas Road Warrior.</a></li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Road+Warrior.">Diagrama Road Warrior.</a></li>
</ol>
</li>
<li class="toc-level-2">
				<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Net+To+Net"><br />
				Net To Net</a>
<ol>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Server+Net+to+Net">Server Net to Net</a></li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Client+Net+To+Net.">Client Net To Net.</a></li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexi%C3%B3n">Comprobando Conexión</a></li>
<li class="toc-level-3"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Net+To+Net">Diagrama Net To Net</a></li>
</ol>
</li>
</ol>
</li>
<li class="toc-level-1">
		<a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Firewall+OpenVPN">Firewall OpenVPN</a>
<ol>
<li class="toc-level-2"><a class="wikipage" href="#section-Servidor+Virtual+Private+Network+(VPN)-Verificando+la+configuraci%C3%B3n+del+Firewall">Verificando la configuración del Firewall</a></li>
</ol>
</li>
</ol>
<p><span id="more-1006"></span>
<p>Una VPN &#8220;Virtual Private Network&#8221;, es una tecnología en la que permite hacer<br />
conexiones de una red local sobre una ip publica estando desde internet. También<br />
son conocida como redes privadas en las cuales mediante un proceso de<br />
encapsulamiento y encriptación de los datos se refiere a la utilización de la<br />
infraestructura publica de telecomunicaciones.</p>
<h2 id="section-Servidor+Virtual+Private+Network+(VPN)-Ventajas+de+las+VPN+.">
Ventajas de las VPN .<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Ventajas+de+las+VPN+."></a></h2>
<p>Cuando deseamos crear una VPN dentro de nuestra empresa siempre debemos saber<br />
que ventajas que nos puede proporcionar esta tecnología. Principales<br />
Ventajas:</p>
<ul>
<li><strong>Seguridad:</strong> Por medio de una VPN podemos crear túneles en<br />
	los cuales pasan la información encriptada entre los clientes por lo cual<br />
	existe una integridad segura de los datos.</li>
<li><strong>Autenticación y autorización:</strong> Solo se permiten<br />
	conectarse a los equipos o dispositivos móviles autorizados, por medio de<br />
	certificados de autenticación, llaves encriptadas y<br />
	usuarios/contraseñas.</li>
<li><strong>Velocidad:</strong> Cuando enviamos o solicitamos información por<br />
	medio de una red VPN es comprimida y descomprimida entre los 2 clientes de la<br />
	VPN, esto hace que la VPN funcione mas veloz en la transferencia de<br />
	información.</li>
<li><strong>Administración del ancho de banda:</strong> Es posible solicitar<br />
	a nuestros ISP un ancho de banda especifico para nuestra red VPN.</li>
<li><strong>Costos:</strong> Un VPN nos ahorra en costo de los equipo y otros<br />
	servicios que se estén ofreciendo dentro de la red locales.</li>
</ul>
<h2 id="section-Servidor+Virtual+Private+Network+(VPN)-Tipos+de+VPN">Tipos de<br />
VPN<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Tipos+de+VPN"></a></h2>
<p>Para poder implementar una red VPN tendremos que saber que tipos de VPN<br />
existen para poder instalarla y configurarle en nuestra red local. Existen 3<br />
tipos de redes VPN:</p>
<ul>
<li><strong>Host to Host:</strong> Este el método mas sencillo de<br />
	implementar, nos permite la comunicación entre dos máquinas de las cuales<br />
	solo tienen conexión entre ellos, esto quiere decir que solo exista la<br />
	comunicación por medio de la VPN entre estos 2 equipos y pueden estar dentro<br />
	de una red local o en internet.</li>
<li><strong>Road Warrior:</strong> Esta una de las formas mas utilizadas y<br />
	solicitadas, es permitir un conjunto de máquina ya sean de la red local o de<br />
	internet se conecten dentro de la red VPN, existiendo un servidor en el<br />
	controle las conexiones, todas estas conexiones se realizan mediante<br />
	certificados de autenticación.</li>
<li><strong>Net to Net:</strong> Mediante esta forma conectamos 2 a varias<br />
	redes LAN en lugares física apartados, la conexión entre las redes viajara<br />
	encriptada, con esto podremos acceder a cualquier recursos de la red que se<br />
	encuentre en el otro extremo de la VPN.</li>
</ul>
<h2 id="section-Servidor+Virtual+Private+Network+(VPN)-Servidores+VPN">
Servidores VPN<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Servidores+VPN"></a></h2>
<p>Tenemos varios servicios de los cuales nos permite crear estos túneles en<br />
GNU/Linux, los mas conocidos son:</p>
<ul>
<li><strong>OpenVPN:</strong> Es una solución completa de conexión de redes<br />
	VPN, contiene validación de usuario, enviado de informaron encriptada. Mas<br />
	información revisar el sitio oficial del proyecto.</li>
</ul>
<p>http://www.openvpn.net/</p>
<ul>
<li><strong>PPTP:</strong> Este el protocolo que realiza conexiones punto a<br />
	punto, su principal habilidad la conexión múltiple de protocolos dentro del<br />
	servicio.</li>
</ul>
<p>http://www.poptop.org./</p>
<ul>
<li><strong>Openswan:</strong> Es una implementación de IPSec, son varios<br />
	protocolos cuya función es garantizar la comunicación sobre el protocolo de<br />
	internet, permite la autenticación y cifrado. Mas información revisar el<br />
	siguiente link.</li>
</ul>
<p>http://www.openswan.org/</p>
<h2 id="section-Servidor+Virtual+Private+Network+(VPN)-Postinstalacion+OpenVPN.">
Postinstalacion OpenVPN.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Postinstalacion+OpenVPN."></a></h2>
<p>Toda la instalación y configuración se realizara sobre la distribución Centos<br />
versión 5.0, por el cual OpenVPN no viene agregada en los repositorio oficiales<br />
de dicha distribución. Por lo cual tendremos que agregar otra repositorio extra<br />
para este servicio.</p>
<h3 id="section-Servidor+Virtual+Private+Network+(VPN)-Agregando+Repositorio.">
Agregando Repositorio.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Agregando+Repositorio."></a></h3>
<p>Para esto tendremos que agregaremos el repositorio de DAG Wieers, este<br />
repositorio se encarga de proporcionar paquetes que no son soportados en los<br />
repositorios oficiales de CentOS. Para mas información revisar el sitio oficial<br />
del repositorio http://dag.wieers.com/rpm/ La forma mas rápida de agregar este<br />
repositorio es instalar el paquete que agrega el repositorio a nuestra lista.<br />
Esta ruta encontraran el paquete a instalar dependiendo de la versión de su<br />
CentOS http://dag.wieers.com/rpm/FAQ.php#B</p>

<div class="wp_codebox"><table><tr id="p100686"><td class="code" id="p1006code86"><pre class="shell" style="font-family:monospace;">[root@rodmen ~]# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/
rpmforge-release-0.3.6-1.el5.rf.i386.rpm</pre></td></tr></table></div>

<p>Ya instalado el paquete, actualizaremos<br />
la lista de paquetes y también se recomienda actualizar el Sistema Operativo.</p>

<div class="wp_codebox"><table><tr id="p100687"><td class="code" id="p1006code87"><pre class="shell" style="font-family:monospace;">[root@ascariote ~]# yum update</pre></td></tr></table></div>

<h3 id="section-Servidor+Virtual+Private+Network+(VPN)-Instalación+OpenVPN.">
Instalación OpenVPN.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Instalaci%C3%B3n+OpenVPN."></a></h3>
<p>Después de la actualización de paquetes ahora ya podremos instalar el<br />
servicio de OpenVPN sin ningún problema.</p>

<div class="wp_codebox"><table><tr id="p100688"><td class="code" id="p1006code88"><pre class="shell" style="font-family:monospace;">[root@ascariote ~]# yum install openvpn</pre></td></tr></table></div>

<p>OpenVPN trabaja en el puerto 1194 del cual por default utiliza protocolo udp pero<br />
también se puede utilizar tcp.</p>
<h3 id="section-Servidor+Virtual+Private+Network+(VPN)-Interfaces+OpenVPN.">
Interfaces OpenVPN.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Interfaces+OpenVPN."></a></h3>
<p>OpenVPN utiliza 2 tipos de interfaz de red virtuales como:</p>
<ul>
<li><strong>TUN:</strong> Esta interfaz simula que es un dispositivo Ethernet<br />
	que trabaja sobre la capa 3 del modelo OSI, esta interfaz es ocupada cuando<br />
	hacemos un Ruteo dentro de la red de la VPN.</li>
<li><strong>TAP:</strong> Esta interfaz simula que es un dispositivo Ethernet<br />
	que trabaja sobre la capa 2 del modelo OSI, esta interfaz es ocupada cuando<br />
	queremos utilizar redes en modo puente.</li>
</ul>
<h2 id="section-Servidor+Virtual+Private+Network+(VPN)-Servicio+OpenVPN">
Servicio OpenVPN<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Servicio+OpenVPN"></a></h2>
<p>Dentro de este manual se enseñara a configurar los métodos de configuración<br />
de OpenVPN como:</p>
<ul>
<li>Host To Host.</li>
<li>Road Warrior</li>
<li>Net To Net.</li>
</ul>
<h3 id="section-Servidor+Virtual+Private+Network+(VPN)-Host+To+Host">Host To<br />
Host<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Host+To+Host"></a></h3>
<p>Sus principales características son:</p>
<ul>
<li>Solo existe un Cliente y un servidor en esta configuración.</li>
<li>Conexión encriptada entre ambos sistemas.</li>
</ul>
<p>Utilizan la misma llave de autenticación.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Server+Host+To+Host.">
Server Host To Host.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Server+Host+To+Host."></a></h4>
<p>Para esta configuración solo se necesita ya tener instalado el servicio de<br />
OpenVPN en nuestra distribución. Todas las configuración del servicio OpenVPN se<br />
realizan dentro de la siguiente ruta:</p>

<div class="wp_codebox"><table><tr id="p100689"><td class="code" id="p1006code89"><pre class="shell" style="font-family:monospace;">/etc/openvpn/</pre></td></tr></table></div>

<p>Dentro de esta ruta deberemos crear una llave de autenticación la cual es<br />
compartida entre el servidor y el cliente. Para poder crear la llave tendremos que<br />
ejecutar el siguiente comando:</p>

<div class="wp_codebox"><table><tr id="p100690"><td class="code" id="p1006code90"><pre class="shell" style="font-family:monospace;">[root@ascariote openvpn]#openvpn --genkey --secret secret.key</pre></td></tr></table></div>

<p>Con esto nos genera un archivo en cual tiene la llave de encriptación. Ahora<br />
crearemos un archivo en el cual contendrá la configuración del servicio OpenVPN en modo<br />
Server.</p>

<div class="wp_codebox"><table><tr id="p100691"><td class="code" id="p1006code91"><pre class="shell" style="font-family:monospace;">[root@ascariote openvpn]# vim server.conf</pre></td></tr></table></div>

<p>Debe contener los siguientes parámetros:</p>

<div class="wp_codebox"><table><tr id="p100692"><td class="code" id="p1006code92"><pre class="shell" style="font-family:monospace;">dev tun0
proto udp comp-lzo port 1194 ifconfig 10.8.0.1 10.8.0.2 status openvpn-status.log
log /var/log/openvpn.log secret secret.key ping 10 verb 4 mute 10</pre></td></tr></table></div>

<p>Explicaremos cada una de la opciones del servidor OpenVPN:</p>
<table>
<tbody>
<tr>
<th>Parámetro</th>
<th>Descripción</th>
<td></td>
</tr>
<tr>
<td>dev tun0</td>
<td>Dispositivo virtual en el cual se creara el tunel.</td>
<td></td>
</tr>
<tr>
<td>proto udp</td>
<td>Protocolo de la conexión VPN</td>
<td></td>
</tr>
<tr>
<td>comp-lzo</td>
<td>Comprimir dentro de la red virtual con lzo</td>
<td></td>
</tr>
<tr>
<td>port 1194</td>
<td>Puerto de escucha del servicio.</td>
<td></td>
</tr>
<tr>
<td>ifconfig 10.8.0.1 10.8.0.2</td>
<td>Asignamos IP de la red Virtual, siempre el servidor utiliza la<br />
		primera IP del segmento de red e indicamos la IP del cliente.</td>
<td></td>
</tr>
<tr>
<td>Status openvpn-status.log</td>
<td>Ver el estado del servicio de OpenVPN</td>
<td></td>
</tr>
<tr>
<td>log /var/log/openvpn.log</td>
<td>Vemos el estado actual del servicio, como también la bitácora de<br />
		errores y conexiones.</td>
<td></td>
</tr>
<tr>
<td>secret secret.key</td>
<td>Mandamos a solicitar la llave de autenticación del servidor.</td>
<td></td>
</tr>
<tr>
<td>ping 10</td>
<td>Ping cada 10 segundos</td>
<td></td>
</tr>
<tr>
<td>verb 4</td>
<td>Método del Verbose Moderado</td>
<td></td>
</tr>
<tr>
<td>mute 10</td>
<td>Calla mas 10 mensaje iguales</td>
<td></td>
</tr>
</tbody>
</table>
<p>Con esto ya podremos podremos iniciar nuestro servicio de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p100693"><td class="code" id="p1006code93"><pre class="shell" style="font-family:monospace;">[root@ascariote openvpn]# /etc/init.d/openvpn start</pre></td></tr></table></div>

<p>Como podemos comprobar que ya existe nuestro servicio de OpenVPN, solamente<br />
ejecutando el comando ifconfig y la interfaz de VPN.</p>

<div class="wp_codebox"><table><tr id="p100694"><td class="code" id="p1006code94"><pre class="shell" style="font-family:monospace;">[root@ascariote openvpn]# ifconfig tun0 
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)</pre></td></tr></table></div>

<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Client+Host+To+Host.">
Client Host To Host.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Client+Host+To+Host."></a></h4>
<p>Para poder agregar clientes Host To Host dentro de nuestro servicio de<br />
Openvpn, ya depende del sistema operativo a conectar como alguna distribución de<br />
GNU/Linux o Windows. Solamente tendremos que crear el archivo de configuración<br />
del cliente de OpenVPN que contendría los siguiente parámetros:</p>

<div class="wp_codebox"><table><tr id="p100695"><td class="code" id="p1006code95"><pre class="shell" style="font-family:monospace;">remote ascariote.dynalias.net</pre></td></tr></table></div>

<p>port 1194 dev tun tun-mtu 1500 ifconfig 10.8.0.2 10.8.0.1 secret secret.key ping 10<br />
comp-lzo verb 4 mute 10}}} Con esto ya agregamos creado la configuración del cliente<br />
OpenVPN. Pero explicaremos para que nos sirve cada parámetro que tiene este archivo de<br />
configuración del cliente.</p>
<table>
<tbody>
<tr>
<th>Parámetro</th>
<th>Descripción</th>
<td></td>
</tr>
<tr>
<td>remote ascariote.dynalias.net</td>
<td>En este parámetro indica el nombre del servidor OpenVPN, pero<br />
		también se puede poner la IP publica.</td>
<td></td>
</tr>
<tr>
<td>port 1194</td>
<td>Puerto de escucha del servidor.</td>
<td></td>
</tr>
<tr>
<td>dev tun</td>
<td>Dispositivo virtual en el cual con el cual se conectara al<br />
		servidor.</td>
</tr>
<tr>
<td>tun-mtu 1500</td>
<td></td>
<td></td>
</tr>
<tr>
<td>ifconfig 10.8.0.2 10.8.0.1</td>
<td>IP del cliente y después del servidor OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>secret secret.key</td>
<td>Mandamos a solicitar la llave de autenticación del servidor.</td>
<td></td>
</tr>
<tr>
<td>ping 10</td>
<td>Ping cada 10 segundos.</td>
<td></td>
</tr>
<tr>
<td>comp-lzo</td>
<td>Comprimir dentro de la red virtual con lzo.</td>
<td></td>
</tr>
<tr>
<td>verb 4</td>
<td>Método del Verbose Moderado.</td>
<td></td>
</tr>
<tr>
<td>mute 10</td>
<td>Calla mas 10 mensaje iguales.</td>
<td></td>
</tr>
</tbody>
</table>
<h5 id="section-Servidor+Virtual+Private+Network+(VPN)-Clientes+GNU/Linux">
Clientes GNU/Linux<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+GNU/Linux"></a></h5>
<p>En este tipo de configuración solamente se instala openvpn en las<br />
distribuciones GNU/Linux, indicaremos como instalar esta aplicación en las<br />
conocidas como debian, ubuntu, CentOS, Fedora. Distribuciones como debian/ubuntu<br />
y sus derivados solamente tendremos que instalar el servicio de la siguiente<br />
manera.</p>

<div class="wp_codebox"><table><tr id="p100696"><td class="code" id="p1006code96"><pre class="shell" style="font-family:monospace;">lucifer:~# apt-get install openvpn</pre></td></tr></table></div>

<p>Distribuciones como RHEL/CentOs/Fedora y sus derivados solamente tendremos que<br />
instalar el servicio de la siguiente manera, pero antes de todo en CentOS/RHEL entremos<br />
que agregar el repositorio de DAG Wieers para poder tener el servicio.</p>

<div class="wp_codebox"><table><tr id="p100697"><td class="code" id="p1006code97"><pre class="shell" style="font-family:monospace;">[root@moa ~]# yum install openvpn</pre></td></tr></table></div>

<p>Para otra distribuciones existe un tar.gz el cual contiene el código fuente para<br />
ser compilado e instalado en su distribución, lo pueden descargar desde la siguiente<br />
liga. http://openvpn.net/index.php/open-source/downloads.html Con esto ya tendremos<br />
instalado nuestro cliente en nuestra distribución. Tendremos que hacer los siguientes<br />
paso para poder configurar el cliente, toda la configuración del cliente se llevan acabo<br />
en el directorio /etc/openvpn y el fichero de configuración del cliente y la llave deben<br />
estar en esta ruta. Enviaremos estos archivos serian enviados por scp, como el archivo de<br />
configuración y llave de conexión de la siguiente manera:</p>

<div class="wp_codebox"><table><tr id="p100698"><td class="code" id="p1006code98"><pre class="shell" style="font-family:monospace;">[root@ascariote openvpn]# scp client.conf secret.key root@189.175.23.45:/etc/openvpn</pre></td></tr></table></div>

<p>En el cliente solamente tendremos que iniciar el servicio de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p100699"><td class="code" id="p1006code99"><pre class="shell" style="font-family:monospace;">[root@moa ~]#/etc/init.d/openvpn start</pre></td></tr></table></div>

<p>Verificamos que tengamos levantara la interfaz virtual de la red VPN.</p>

<div class="wp_codebox"><table><tr id="p1006100"><td class="code" id="p1006code100"><pre class="shell" style="font-family:monospace;">[root@moa ~]# ifconfig tun0 
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.2 P-t-P:10.8.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:168 (168.0 b) TX bytes:168 (168.0 b)</pre></td></tr></table></div>

<h5 id="section-Servidor+Virtual+Private+Network+(VPN)-Clientes+Windows">
Clientes Windows<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+Windows"></a></h5>
<p>Para estos sistema operativos solamente tendremos que descargar el cliente en<br />
formato exe, su instalación es muy sencilla y rápida. Lo podremos descargar<br />
desde el siguiente link. http://openvpn.net/index.php/open-source/downloads.html<br />
Ya que tenemos instalado el cliente, solamente tenemos que ejecutar el siguiente<br />
comando para que cambie el formato del archivo a msdos.</p>

<div class="wp_codebox"><table><tr id="p1006101"><td class="code" id="p1006code101"><pre class="shell" style="font-family:monospace;">[root@ascariote openvpn]# unix2dos guindows.conf guindows.conf</pre></td></tr></table></div>

<p>Cambiamos la extensión del fichero ya que el cliente OpenVPN en windows reconoce<br />
sus archivos con la extensión ovpn.</p>

<div class="wp_codebox"><table><tr id="p1006102"><td class="code" id="p1006code102"><pre class="shell" style="font-family:monospace;">[root@ascariote openvpn]# mv guindows.conf guindows.ovpn</pre></td></tr></table></div>

<p>Sera cuestión de enviar el archivo de configuración del cliente y su llave de<br />
autenticación para poder hacer la conexión, ya seria enviarlo vía correo, Samba, FTP o un<br />
apache. Ya teniendo los archivos de configuración y llave solamente tendremos que<br />
moverlos a la siguiente ruta C:\Archivos de programas\OpenVPN\config. Para poder iniciar<br />
el cliente OpenVPN solamente tenemos que ejecutar el icono que se encuentra en la barra<br />
de tarea en la parte derecha se encontrara un icono muy parecido al de red en windows<br />
pero en color rojo, solo le damos click derecho en sobre el y tendremos las opciones que<br />
podremos utilizar. Una forma de comprobar que ya tenemos asignada nuestra IP es<br />
ejecutando el comando ipconfig en el interprete de comandos.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexión.">
Comprobando Conexión.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexi%C3%B3n."></a></h4>
<p>La forma mas sencilla de saber que ya funciona nuestra red VPN es mandar<br />
paquetes ICMP del servidor al cliente.</p>

<div class="wp_codebox"><table><tr id="p1006103"><td class="code" id="p1006code103"><pre class="shell" style="font-family:monospace;">lucifer@lucifer:~$ ping -c 5 10.9.0.1 
PING 10.9.0.1 (10.9.0.1) 56(84) bytes of data. 64 bytes from 10.9.0.1: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 10.9.0.1: icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from 10.9.0.1: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 10.9.0.1: icmp_seq=4 ttl=64 time=0.037 ms
64 bytes from 10.9.0.1: icmp_seq=5 ttl=64 time=0.045 ms
--- 10.9.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.025/0.036/0.045/0.009 ms
lucifer@lucifer:$</pre></td></tr></table></div>

<p>Como también hacemos la comprobación en el cliente. Si tuviéramos algún otro servicio dentro del servidor/cliente VPN, un Servidor FTP, Servidor Web, etc, ya podremos utilizar sus recursos desde la VPN.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Host+To+Host.">
Diagrama Host To Host.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Host+To+Host."></a></h4>
<p>Esta es la forma en que se podría ilustrar una configuración Host To Host de OpenVPN, teniendo las siguientes características. El equipo cliente y servidor pueden estar en lugar distantes. Los equipos están conectados directamente a Intenet. En el servidor tiene configurado el OpenVPN creando una interfaz virtual llamada tun0 que por medio de esta se creara el túnel VPN. El cliente se<br />
configura VPN, en donde también se levanta la interfaz tun0 con la cual se conectar al túnel VPN y tendrá comunicación con el servidor VPN. Pero su salida de paquetes siempre va hacer enviada por la conexión de internet.</p>
<h3 id="section-Servidor+Virtual+Private+Network+(VPN)-Road+Warrior">Road<br />
Warrior<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Road+Warrior"></a></h3>
<p>La conexión Road Warrior permite la comunicación entre los usuarios externo y<br />
usuarios locales en la red local de nuestra oficina, en esta conexión puede ver<br />
mas 1 cliente conectado en la red virtual. En este tipo de configuración los<br />
usuarios están bajo certificados y llaves de autenticación para su conexión a la<br />
red VPN. Las razones de utilizar una VPN en modo Road Warrior son:</p>
<ul>
<li>Permite compartir información y los recursos de la red local.</li>
<li>Configuración personalizada.</li>
<li>Manejo de varias redes virtuales y usuarios</li>
<li>Bloquea ataques de intrusos y espías.</li>
</ul>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Server+Road+Warrior">
Server Road Warrior<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Server+Road+Warrior"></a></h4>
<p>Para poder configurar nuestra OpenVPN en modo Road Warrior tendremos que<br />
seguir los siguientes pasos. 1) Tendremos que buscar en donde se encuentran los<br />
scripts que nos permite crear los certificados y las llaves.</p>

<div class="wp_codebox"><table><tr id="p1006104"><td class="code" id="p1006code104"><pre class="shell" style="font-family:monospace;">[root@test ~]# cd /usr/share/openvpn/ easy-rsa/</pre></td></tr></table></div>

<p>Dentro de este directorio encontraremos 2 versiones de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006105"><td class="code" id="p1006code105"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# ls</pre></td></tr></table></div>

<p>1.0 2.0 [root@test easy-rsa]#}}} Debemos elegir la version mas actual y copiarla a<br />
/etc/openvpn</p>

<div class="wp_codebox"><table><tr id="p1006106"><td class="code" id="p1006code106"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# cp -a 2.0/ /etc/openvpn/easy-rsa</pre></td></tr></table></div>

<p>Entramos en directorio principal de la configuración de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006107"><td class="code" id="p1006code107"><pre class="shell" style="font-family:monospace;">[root@test openvpn]# cd /etc/openvpn/easy-rsa/</pre></td></tr></table></div>

<p>Listamos que dentro de este directorio existen varios scripts.</p>

<div class="wp_codebox"><table><tr id="p1006108"><td class="code" id="p1006code108"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# ls</pre></td></tr></table></div>

<p>build-ca build-key build-key-server clean-all Makefile pkitool sign-req build-dh<br />
build-key-pass build-req inherit-inter openssl-0.9.6.cnf README vars build-inter<br />
build-key-pkcs12 build-req-pass list-crl openssl.cnf}}} Lo que tendremos que hacer es<br />
editar el archivo de vars el cual contiene la informacion relacionada hacia la empresa en<br />
donde estamos laborando.</p>

<div class="wp_codebox"><table><tr id="p1006109"><td class="code" id="p1006code109"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# vim vars</pre></td></tr></table></div>

<p>Tendremos que ir al final del archivo y modificar los siguiente parametros quedando<br />
de la siguiente manera.</p>

<div class="wp_codebox"><table><tr id="p1006110"><td class="code" id="p1006code110"><pre class="shell" style="font-family:monospace;">export KEY_COUNTRY=&quot;MX&quot;</pre></td></tr></table></div>

<p>export KEY_PROVINCE=&#8221;DF&#8221; export KEY_CITY=&#8221;MEXICO&#8221; export KEY_ORG=&#8221;ASCARIOTE SA DE<br />
CV&#8221; export KEY_EMAIL=&#8221;administrador@ascariote.com.mx&#8221; }}} Como podemos ver solo agregamos<br />
datos esenciales para la creación de la Certificados CA, guardamos el archivos y ahora<br />
debemos refrescar las variables que tiene el archivo var.</p>

<div class="wp_codebox"><table><tr id="p1006111"><td class="code" id="p1006code111"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# source vars</pre></td></tr></table></div>

<p>NOTE: If you run ./clean-all, I will be doing a rm -rf on<br />
/etc/openvpn/easy-rsa/keys}}} Nos devuelve un posible error por lo cual tendremos que<br />
limpiar todas la opciones de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006112"><td class="code" id="p1006code112"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# sh clean-all</pre></td></tr></table></div>

<p>Ahora debemos crear el certificado de Autenticación para el servicio de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006113"><td class="code" id="p1006code113"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# sh build-ca</pre></td></tr></table></div>

<p>Generating a 1024 bit RSA private key &#8230;&#8230;&#8230;&#8230;&#8230;..++++++ &#8230;&#8230;&#8230;.++++++<br />
writing new private key to &#8216;ca.key&#8217; &#8212;&#8211; You are about to be asked to enter information<br />
that will be incorporated into your certificate request. What you are about to enter is<br />
what is called a Distinguished Name or a DN. There are quite a few fields but you can<br />
leave some blank For some fields there will be a default value, If you enter &#8216;.&#8217;, the<br />
field will be left blank. &#8212;&#8211; Country Name (2 letter code) [MX]: State or Province Name<br />
(full name) [DF]: Locality Name (eg, city) [MEXICO]: Organization Name (eg, company)<br />
[ASCARIOTE SA DE CV]: Organizational Unit Name (eg, section) []:ASCARIOTE Common Name<br />
(eg, your name or your server&#8217;s hostname) [ASCARIOTE SA DE CV CA]:SERVER Name []:SERVER<br />
Email Address [administrador@ascariote.com.mx]: [root@test easy-rsa]# }}} Debemos crear<br />
la clave diffie-hellman, en este paso nos preguntara si queremos firmar digitalmente con<br />
nuestro certificado creado anteriormente.</p>

<div class="wp_codebox"><table><tr id="p1006114"><td class="code" id="p1006code114"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# sh build-dh</pre></td></tr></table></div>

<p>Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to<br />
take a long time<br />
&#8230;.+&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;+&#8230;&#8230;..+.+&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.+&#8230;&#8230;&#8230;&#8230;&#8230;+&#8230;&#8230;&#8230;&#8230;.<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.+&#8230;&#8230;&#8230;&#8230;.+&#8230;..+&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
&#8230;.+&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..+&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;+&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;+&#8230;.<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..+&#8230;&#8230;&#8230;&#8230;..+&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.+&#8230;&#8230;+&#8230;&#8230;&#8230;&#8230;&#8230;.<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.++++++ [root@test easy-rsa]# }}} Crearemos el<br />
certificado y la llave para el servidor OpenVPN, solicitara datos generales de la<br />
empresa.</p>

<div class="wp_codebox"><table><tr id="p1006115"><td class="code" id="p1006code115"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# sh build-key-server server</pre></td></tr></table></div>

<p>Generating a 1024 bit RSA private key &#8230;..++++++ &#8230;++++++ writing new private key<br />
to &#8216;server.key&#8217; &#8212;&#8211; You are about to be asked to enter information that will be<br />
incorporated into your certificate request. What you are about to enter is what is called<br />
a Distinguished Name or a DN. There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value, If you enter &#8216;.&#8217;, the field will be left<br />
blank. &#8212;&#8211; Country Name (2 letter code) [MX]: State or Province Name (full name) [DF]:<br />
Locality Name (eg, city) [MEXICO]: Organization Name (eg, company) [FACTOR SA DE CV]:<br />
Organizational Unit Name (eg, section) []:FACTOR Common Name (eg, your name or your<br />
server&#8217;s hostname) [server]:SERVER Name []:SERVER Email Address<br />
[administrador@factor.com.mx]: Please enter the following &#8216;extra&#8217; attributes to be sent<br />
with your certificate request A challenge password []: An optional company name []: Using<br />
configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the<br />
signature Signature ok The Subject&#8217;s Distinguished Name is as follows countryName<br />
:PRINTABLE:&#8217;MX&#8217; stateOrProvinceName :PRINTABLE:&#8217;DF&#8217; localityName :PRINTABLE:&#8217;MEXICO&#8217;<br />
organizationName :PRINTABLE:&#8217;FACTOR SA DE CV&#8217; organizationalUnitName:PRINTABLE:&#8217;FACTOR&#8217;<br />
commonName :PRINTABLE:&#8217;SERVER&#8217; name :PRINTABLE:&#8217;SERVER&#8217; emailAddress<br />
:IA5STRING:&#8217;administrador@factor.com.mx&#8217; Certificate is to be certified until Aug 23<br />
18:10:41 2019 GMT (3650 days) Sign the certificate? [y/n]:Y</p>
<p>1 out of 1 certificate requests certified, commit? [y/n]y Write out database<br />
with 1 new entries Data Base Updated [root@test easy-rsa]# }}} Todos estas<br />
llaves y certificados generados se encuentran en el directorio key por lo cual<br />
entraremos a ese directorio.</p>

<div class="wp_codebox"><table><tr id="p1006116"><td class="code" id="p1006code116"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# cd keys/</pre></td></tr></table></div>

<p>Verificamos que fichero encontramos.</p>

<div class="wp_codebox"><table><tr id="p1006117"><td class="code" id="p1006code117"><pre class="shell" style="font-family:monospace;">[root@test keys]# ls</pre></td></tr></table></div>

<p>01.pem ca.key index.txt index.txt.old serial.old server.csr ca.crt dh1024.pem<br />
index.txt.attr serial server.crt server.key [root@test keys]# }}} Los archivos mas<br />
importantes son:</p>
<table>
<tbody>
<tr>
<th>Archivo</th>
<th>Descripción</th>
<td></td>
</tr>
<tr>
<td>ca.crt/ca.key</td>
<td>Contiene el certificado de autenticación y llave. Sin estos no<br />
		podrás crear certificados para tus clientes VPN.</td>
<td></td>
</tr>
<tr>
<td>dh1024.pem</td>
<td>Clave diffie-hellman, también es necesaria los clientes.</td>
<td></td>
</tr>
<tr>
<td>server.crt/ server.key</td>
<td>Contiene el Certificado de autenticación para el servidor y su<br />
		llave.</td>
<td></td>
</tr>
</tbody>
</table>
<p>Ya teniendo estos archivos solamente tendremos que hacer una copia de estos<br />
archivos y mandarlos a /etc/openvpn/.</p>

<div class="wp_codebox"><table><tr id="p1006118"><td class="code" id="p1006code118"><pre class="shell" style="font-family:monospace;">[root@test keys]# cp ca.* dh1024.pem server.crt server.key /etc/openvpn</pre></td></tr></table></div>

<p>Ahora debemos crear el archivo de configuración de nuestro servidor OpenVPN, lo<br />
crearemos en el directorio /etc/openvpn.</p>

<div class="wp_codebox"><table><tr id="p1006119"><td class="code" id="p1006code119"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# cd /etc/openvpn</pre></td></tr></table></div>

<p>Crearemos el archivo del servidor OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006120"><td class="code" id="p1006code120"><pre class="shell" style="font-family:monospace;">[root@test openvpn]# vim server.conf</pre></td></tr></table></div>

<p>Debe contener los siguientes parámetros:</p>

<div class="wp_codebox"><table><tr id="p1006121"><td class="code" id="p1006code121"><pre class="shell" style="font-family:monospace;">proto udp</pre></td></tr></table></div>

<p>dev tun0 ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key<br />
/etc/openvpn/server.key dh /etc/openvpn/dh1024.pem duplicate-cn server 192.168.4.0<br />
255.255.255.0 client-config-dir /etc/openvpn/ccd comp-lzo user root group root<br />
persist-key persist-tun status /var/log/openvpn-status.log log /var/log/openvpn.log verb<br />
3 mute 20 ping 10 ping-restart 120 }}} Explicaremos cada una de la opciones del servidor<br />
OpenVPN:</p>
<table>
<tbody>
<tr>
<th>Parámetro</th>
<th>Descripción</th>
<td></td>
</tr>
<tr>
<td>proto udp</td>
<td>El servicio de OpenVPN utilizara protocolo UDP.</td>
<td></td>
</tr>
<tr>
<td>dev tun0</td>
<td>Interfaz virtual por la cual se crea el túnel.</td>
<td></td>
</tr>
<tr>
<td>ca /etc/openvpn/ca.crt</td>
<td>Especifica la ruta en donde se localiza el certificado de<br />
		autenticación.</td>
<td></td>
</tr>
<tr>
<td>cert /etc/openvpn/server.crt</td>
<td>Especifica la ruta en donde se localiza el certificado de<br />
		servidor.</td>
<td></td>
</tr>
<tr>
<td>key /etc/openvpn/server.key</td>
<td>Especifica la ruta en donde se localiza la llave de<br />
		autenticación.</td>
<td></td>
</tr>
<tr>
<td>dh /etc/openvpn/dh1024.pem</td>
<td>Especifica la ruta en cual contiene el formato de Diffie<br />
		Hellman.</td>
<td></td>
</tr>
<tr>
<td>server 192.168.4.0 255.255.255.0</td>
<td>Segmento de red VPN, la primera IP del segmento queda reservada<br />
		para el servidor OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>client-config-dir /etc/openvpn/ccd</td>
<td>Este parametro manda a llamar a archivo dentro de esta ruta para<br />
		asignar IP Estáticas de la Red VPN.</td>
<td></td>
</tr>
<tr>
<td>comp-lzo</td>
<td>Comprimir dentro de la red virtual con lzo.</td>
<td></td>
</tr>
<tr>
<td>user root/group root</td>
<td></td>
<td></td>
</tr>
<tr>
<td>persist-key</td>
<td>Esta opción soluciona el problema por llaves que persisten a través<br />
		de los reajustes SIGUSR1.</td>
<td></td>
</tr>
<tr>
<td>persist-tun</td>
<td>Permite que no se cierre y se vuelvan abrir los dispositivos<br />
		TAP/TUN.</td>
<td></td>
</tr>
<tr>
<td>status /var/log/openvpn-status.log</td>
<td>Estado actual del servicio OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>log /var/log/openvpn.log</td>
<td>La bitácoras de los Logs del servicio OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>verb 3</td>
<td>Método del verbose Moderado.</td>
<td></td>
</tr>
<tr>
<td>mute 20</td>
<td>Calla mas 10 mensaje iguales.</td>
<td></td>
</tr>
<tr>
<td>ping 10</td>
<td>Ping cada 10 segundos al servidor OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>ping-restart 120</td>
<td>Reinicia ping cada 120 segundos.</td>
<td></td>
</tr>
</tbody>
</table>
<p>Con esto ya podremos podremos iniciar nuestro servicio de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006122"><td class="code" id="p1006code122"><pre class="shell" style="font-family:monospace;">[root@test ~]# /etc/init.d/openvpn start</pre></td></tr></table></div>

<p>Como podemos comprobar que ya existe nuestro servicio de OpenVPN, solamente<br />
ejecutando el comando ifconfig y la interfaz de VPN.</p>

<div class="wp_codebox"><table><tr id="p1006123"><td class="code" id="p1006code123"><pre class="shell" style="font-family:monospace;">[root@test ~]# ifconfig tun0</pre></td></tr></table></div>

<p>tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00 inet<br />
addr:192.168.4.1 P-t-P:192.168.4.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP<br />
MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX<br />
packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0<br />
(0.0 b) TX bytes:0 (0.0 b) }}}</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Client+Road+Warrior">
Client Road Warrior<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Client+Road+Warrior"></a></h4>
<p>Para poder agregar clientes dentro de nuestra red VPN, tendremos que crear su<br />
certificado y llave por cada uno de los usuario que se conecte. Se recomienda<br />
poner en los certificados el nombre de la persona para tener mayor control de<br />
los usuarios conectados. Estos certificados se crean la siguiente ruta<br />
/etc/openvpn/easy-rsa/, por lo cual tendremos que acceder a esa ruta, ya estando<br />
ahi solamente tendremos que ejecutar el siguiente comando para que nos cree el<br />
certificado y la llave para el usuario a conectarse.</p>

<div class="wp_codebox"><table><tr id="p1006124"><td class="code" id="p1006code124"><pre class="shell" style="font-family:monospace;">[root@test easy-rsa]# sh build-key ascariote</pre></td></tr></table></div>

<p>Generating a 1024 bit RSA private key &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.++++++<br />
&#8230;&#8230;&#8230;&#8230;&#8230;.++++++ writing new private key to &#8216;ascariote.key&#8217; &#8212;&#8211; You are about to<br />
be asked to enter information that will be incorporated into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a DN. There are<br />
quite a few fields but you can leave some blank For some fields there will be a default<br />
value, If you enter &#8216;.&#8217;, the field will be left blank. &#8212;&#8211; Country Name (2 letter code)<br />
[MX]: State or Province Name (full name) [DF]: Locality Name (eg, city) [MEXICO]:<br />
Organization Name (eg, company) [FACTOR SA DE CV]: Organizational Unit Name (eg, section)<br />
[]:LPT Common Name (eg, your name or your server&#8217;s hostname) [ascariote]: Name<br />
[]:ascariote Email Address [administrador@factor.com.mx]: Please enter the following<br />
&#8216;extra&#8217; attributes to be sent with your certificate request A challenge password []: An<br />
optional company name []: Using configuration from /etc/openvpn/easy-rsa/openssl.cnf<br />
Check that the request matches the signature Signature ok The Subject&#8217;s Distinguished<br />
Name is as follows countryName :PRINTABLE:&#8217;MX&#8217; stateOrProvinceName :PRINTABLE:&#8217;DF&#8217;<br />
localityName :PRINTABLE:&#8217;MEXICO&#8217; organizationName :PRINTABLE:&#8217;FACTOR SA DE CV&#8217;<br />
organizationalUnitName:PRINTABLE:&#8217;LPT&#8217; commonName :PRINTABLE:&#8217;ascariote&#8217; name<br />
:PRINTABLE:&#8217;ascariote&#8217; emailAddress :IA5STRING:&#8217;administrador@factor.com.mx&#8217; Certificate<br />
is to be certified until Aug 23 21:36:12 2019 GMT (3650 days) Sign the certificate?<br />
[y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with<br />
1 new entries Data Base Updated [root@test easy-rsa]#}}} Con esto ya habremos que creado<br />
los archivos necesarios para los clientes y todos estos archivos se encuentra almacenados<br />
en /etc/openvpn/easy-rsa/keys/, entramos en esa ruta y verificamos que están nuestros<br />
archivos con el nombre del usuario a conectarse, en nuestro caso el usuario se llama<br />
ascariote. Para que un cliente pueda conectarse se necesitan los siguientes archivos:</p>
<ul>
<li>ca.crt</li>
<li>ascariote.</li>
</ul>
<p>Por recomendacion cuando nosotros creamos mas usuario todo se queda dentro de<br />
esta carpeta sin ordenar pero te recomiendo tener a los usuarios separados. Esto<br />
lo podemos arreglar de la siguiente manera. Creamos una carpeta en donde se<br />
depositaran todos los clientes de la VPN Road Warrior.</p>

<div class="wp_codebox"><table><tr id="p1006125"><td class="code" id="p1006code125"><pre class="shell" style="font-family:monospace;">[root@test keys]# mkdir /etc/openvpn/clientes/</pre></td></tr></table></div>

<p>Ahora solamente creamos la carpeta por cada usuario.</p>

<div class="wp_codebox"><table><tr id="p1006126"><td class="code" id="p1006code126"><pre class="shell" style="font-family:monospace;">[root@test keys]# mkdir /etc/openvpn/clientes/ascariote</pre></td></tr></table></div>

<p>Copiamos los archivos de configuración del usuario y el certificado del<br />
autenticación.</p>

<div class="wp_codebox"><table><tr id="p1006127"><td class="code" id="p1006code127"><pre class="shell" style="font-family:monospace;">[root@test keys]# cp ca.crt ascariote.* /etc/openvpn/clientes/ascariote/</pre></td></tr></table></div>

<p><strong>NOTA:</strong> Con esto ya tendremos los archivos de configuración de los<br />
clientes y el certificado de autenticación respaldo ya que cuando hacemos limpieza de<br />
variables en OpenVPN son borrados todos los archivos de configuración de los clientes y<br />
servidor en el directorio /etc/openvpn/easy-rsa/keys/.</p>
<h5 id="section-Servidor+Virtual+Private+Network+(VPN)-Clientes+GNU/Linux">
Clientes GNU/Linux<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+GNU/Linux"></a></h5>
<p>En este tipo de configuración solamente se instala OpenVPN en las<br />
distribuciones GNU/Linux, indicaremos como instalar esta aplicación en las<br />
conocidas como debian, ubuntu, CentOS, Fedora. Distribuciones como debian/ubuntu<br />
y sus derivados solamente tendremos que instalar el servicio de la siguiente<br />
manera.</p>

<div class="wp_codebox"><table><tr id="p1006128"><td class="code" id="p1006code128"><pre class="shell" style="font-family:monospace;">ascariote:~# apt-get install openvpn</pre></td></tr></table></div>

<p>Distribuciones como RHEL/CentOs/Fedora y sus derivados solamente tendremos que<br />
instalar el servicio de la siguiente manera, pero antes de todo en CentOS/RHEL entremos<br />
que agregar el repositorio de DAG Wieers para poder tener el servicio.</p>

<div class="wp_codebox"><table><tr id="p1006129"><td class="code" id="p1006code129"><pre class="shell" style="font-family:monospace;">[root@moa ~]# yum install openvpn</pre></td></tr></table></div>

<p>Para otra distribuciones existe un tar.gz el cual contiene el código fuente para<br />
ser compilado e instalado en su distribución, lo pueden descargar desde la siguiente<br />
liga. http://openvpn.net/index.php/open-source/downloads.html Con esto ya tendremos<br />
instalado nuestro cliente en nuestra distribución ahora lo que tenemos que hacer con el<br />
servidor es ir a /etc/openvpn/clientes, en el cual se encontraran las carpetas de los<br />
usuarios permitidos en la VPN entramos alguna de las carpetas y veremos que solo falta el<br />
archivo el archivo de configuracion para el cliente VPN. Debemos crear el archivo de<br />
configuración para los clientes de la VPN.</p>

<div class="wp_codebox"><table><tr id="p1006130"><td class="code" id="p1006code130"><pre class="shell" style="font-family:monospace;">[root@test ~]# vim /etc/openvpn/clientes/ascariote.conf</pre></td></tr></table></div>

<p>En el cual contiene los siguientes parámetros.</p>

<div class="wp_codebox"><table><tr id="p1006131"><td class="code" id="p1006code131"><pre class="shell" style="font-family:monospace;">client</pre></td></tr></table></div>

<p>remote test.ascanet.com.mx port 1194 proto udp dev tun ca /etc/openvpn/ca.crt cert<br />
/etc/openvpn/ascariote.crt key /etc/openvpn/ascariote.key comp-lzo log<br />
/var/log/openvpn.log verb 3 mute 20 ping 10 ping-restart 120 persist-key persist-tun}}}<br />
Explicaremos cada una de la opciones del cliente OpenVPN:</p>
<table>
<tbody>
<tr>
<th>Parámetro</th>
<th>Descripción</th>
<td></td>
</tr>
<tr>
<td>Client</td>
<td>Indica que va hacer cliente de la red VPN.</td>
<td></td>
</tr>
<tr>
<td>remote test.ascanet.com.mx</td>
<td>El nombre o IP del servidor OpenVPN, el cual controla los accesos a<br />
		la misma.</td>
<td></td>
</tr>
<tr>
<td>Port 1194</td>
<td>Puerto de escucha del servicio OpenVPN en el servidor.</td>
<td></td>
</tr>
<tr>
<td>proto udp</td>
<td>Protocolo utilizado en red VPN</td>
<td></td>
</tr>
<tr>
<td>dev tun</td>
<td>Interfaz virtual con el cual se conecta a la red VPN.</td>
<td></td>
</tr>
<tr>
<td>ca /etc/openvpn/ca.crt</td>
<td>Especifica la ruta en donde se localiza el certificado de<br />
		autenticación, este certificado es del servidor OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>cert /etc/openvpn/ascariote.crt</td>
<td>Especifica la ruta en donde se localiza el certificado del<br />
		cliente</td>
<td></td>
</tr>
<tr>
<td>key /etc/openvpn/ascariote.key</td>
<td>Especifica la ruta en donde se localiza la llave de autenticación<br />
		del cliente.</td>
<td></td>
</tr>
<tr>
<td>comp-lzo</td>
<td>Comprimir dentro de la red virtual con lzo.</td>
<td></td>
</tr>
<tr>
<td>log /var/log/openvpn.log</td>
<td>La bitácoras de los Logs del servicio OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>verb 3</td>
<td>Método del verbose Moderado.</td>
<td></td>
</tr>
<tr>
<td>Mute 20</td>
<td>Calla mas 20 mensaje iguales.</td>
<td></td>
</tr>
<tr>
<td>ping 10</td>
<td>Ping cada 10 segundos al servidor OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>ping-restart 120</td>
<td>Reinicia ping cada 120 segundos.</td>
<td></td>
</tr>
<tr>
<td>Persist-key</td>
<td>Esta opción soluciona el problema por llaves que persisten a través<br />
		de los reajustes SIGUSR1.</td>
<td></td>
</tr>
<tr>
<td>persist-tun</td>
<td>Permite que no se cierre y se vuelvan abrir los dispositivos<br />
		TAP/TUN.</td>
<td></td>
</tr>
</tbody>
</table>
<p>Con esto solamente tendremos que crear el archivo comprimido y mandarlo por<br />
via ssh, ftp, http el archivo.</p>

<div class="wp_codebox"><table><tr id="p1006132"><td class="code" id="p1006code132"><pre class="shell" style="font-family:monospace;">[root@test clientes]# tar cvfz ascariote.tar.gz ascariote/</pre></td></tr></table></div>

<p>En el cliente ya teniendo el archivo comprimido solamente tendremos que<br />
descomprimirlo.</p>

<div class="wp_codebox"><table><tr id="p1006133"><td class="code" id="p1006code133"><pre class="shell" style="font-family:monospace;">ascariote:Desktop# tar xvfz  ascariote.tar.gz</pre></td></tr></table></div>

<p>Entramos a la carpeta y movemos todos los archivos a /etc/openvpn/</p>

<div class="wp_codebox"><table><tr id="p1006134"><td class="code" id="p1006code134"><pre class="shell" style="font-family:monospace;">ascariote:ascariote# cp * /etc/openvpn/</pre></td></tr></table></div>

<p>Iniciamos el servicio para conectarnos a la VPN.</p>

<div class="wp_codebox"><table><tr id="p1006135"><td class="code" id="p1006code135"><pre class="shell" style="font-family:monospace;">ascariote:ascariote# /etc/init.d/openvpn restart</pre></td></tr></table></div>

<p>Verificamos que tengamos levantada la interfaz virtual que se usa para conexión<br />
VPN.</p>

<div class="wp_codebox"><table><tr id="p1006136"><td class="code" id="p1006code136"><pre class="shell" style="font-family:monospace;">ascariote:ascariote# ifconfig tun0</pre></td></tr></table></div>

<p>tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00 inet<br />
addr:192.168.4.6 P-t-P:192.168.4.5 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP<br />
MULTICAST MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX<br />
packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:52<br />
(52.0 B) TX bytes:84 (84.0 B) }}} Con esto ya sabremos que tenemos conexión a la VPN.</p>
<h5 id="section-Servidor+Virtual+Private+Network+(VPN)-Clientes+Windows">
Clientes Windows<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Clientes+Windows"></a></h5>
<p>Para estos sistema operativos solamente tendremos que descargar el cliente en<br />
formato exe, su instalación es muy sencilla y rápida. Lo podremos descargar<br />
desde el siguiente link. http://openvpn.net/index.php/open-source/downloads.html<br />
Ahora en el servidor tendremos que crear el archivo de configuración del cliente<br />
para windows. En nuestro caso el usuario se llama GuindowsLPT, entramos a la<br />
ruta en donde se encuentran los clientes.</p>

<div class="wp_codebox"><table><tr id="p1006137"><td class="code" id="p1006code137"><pre class="shell" style="font-family:monospace;">[root@test GuindowsLPT]# vim GuindowsLPT.ovpn</pre></td></tr></table></div>

<p>En el cual deberá contener los siguientes parámetros.</p>

<div class="wp_codebox"><table><tr id="p1006138"><td class="code" id="p1006code138"><pre class="shell" style="font-family:monospace;">client</pre></td></tr></table></div>

<p>remote test.ascanet.com.mx port 1194 proto udp dev tun ca &#8220;ca.crt&#8221; cert<br />
&#8220;GuindowsLPT.crt&#8221; key &#8220;GuindowsLPT.key&#8221; persist-key persist-tun comp-lzo verb 3 mute 20<br />
ping 10 ping-restart 120}}} Convertimos el fichero a formato dos de Windows.</p>

<div class="wp_codebox"><table><tr id="p1006139"><td class="code" id="p1006code139"><pre class="shell" style="font-family:monospace;">[root@test GuindowsLPT]# unix2dos GuindowsLPT.ovpn GuindowsLPT.ovpn</pre></td></tr></table></div>

<p>Solo falta comprimir la carpeta para que se enviada al cliente windows.</p>

<div class="wp_codebox"><table><tr id="p1006140"><td class="code" id="p1006code140"><pre class="shell" style="font-family:monospace;">[root@test clientes]# zip  GuindowsLPT.zip GuindowsLPT/*</pre></td></tr></table></div>

<p>Sera cuestión de enviar el archivo de configuración del cliente y su llave de<br />
autenticación para poder hacer la conexión, ya seria enviarlo vía correo, Samba, FTP o un<br />
apache. Ya teniendo los archivos de configuración y llave solamente tendremos que<br />
moverlos a la siguiente ruta C:\Archivos de programas\OpenVPN\config. Para poder iniciar<br />
el cliente OpenVPN solamente tenemos que ejecutar el icono que se encuentra en la barra<br />
de tarea en la parte derecha se encontrara un icono muy parecido al de red en windows<br />
pero en color rojo, solo le damos click derecho en sobre el y tendremos las opciones que<br />
podremos utilizar. Una forma de comprobar que ya tenemos asignada nuestra IP es<br />
ejecutando el comando ipconfig en el interprete de comandos.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexión.">
Comprobando Conexión.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexi%C3%B3n."></a></h4>
<p>La forma mas sencilla de saber que ya funciona nuestra red VPN es mandar<br />
paquetes ICMP a algunos de los clientes que estén dentro de la red virtual.</p>

<div class="wp_codebox"><table><tr id="p1006141"><td class="code" id="p1006code141"><pre class="shell" style="font-family:monospace;">ascariote:~# ping -c 5 192.168.4.10</pre></td></tr></table></div>

<p>PING 192.168.4.10 (192.168.4.10) 56(84) bytes of data. 64 bytes from 192.168.4.10:<br />
icmp_seq=1 ttl=127 time=39.9 ms 64 bytes from 192.168.4.10: icmp_seq=2 ttl=127 time=37.4<br />
ms 64 bytes from 192.168.4.10: icmp_seq=3 ttl=127 time=38.6 ms 64 bytes from<br />
192.168.4.10: icmp_seq=4 ttl=127 time=89.1 ms 64 bytes from 192.168.4.10: icmp_seq=5<br />
ttl=127 time=110 ms &#8212; 192.168.4.10 ping statistics &#8212; 5 packets transmitted, 5<br />
received, 0% packet loss, time 4017ms rtt min/avg/max/mdev = 37.435/63.124/110.489/30.710<br />
ms ascariote:# }}} Como también podemos hacer la comprobación hacia el servidor o otro<br />
cliente que se encuentre en la red VPN desde Windows. Si tuviéramos algún otro servicio<br />
dentro del servidor/cliente VPN, un Servidor FTP, Servidor Web, etc, ya podremos utilizar<br />
sus recursos desde la VPN.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Asignar+IP+Estáticas+Road+Warrior.">
Asignar IP Estáticas Road Warrior.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Asignar+IP+Est%C3%A1ticas+Road+Warrior."></a></h4>
<p>En este tipo de configuración nosotros podremos asignar una IP estática al<br />
cliente de la red VPN para que no se este cambiando cada vez que se intente<br />
conectar. Para esto tendremos que crear el siguiente directorio ccd dentro de<br />
/etc/openvpn en el servidor OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006142"><td class="code" id="p1006code142"><pre class="shell" style="font-family:monospace;">[root@test clientes]# mkdir /etc/openvpn/ccd</pre></td></tr></table></div>

<p>Entramos a ese directorio y crearemos archivos de configuración por cada cliente<br />
que deseemos que tenga una IP Estática. Cuando creamos el archivo de configuración por<br />
cada cliente, debemos crear con el nombre del usuario tal como se conecta a la VPN en mi<br />
caso tengo el usuario ascariote, entonces creare el archivo ascariote dentro<br />
/etc/openvpn/ccd.</p>

<div class="wp_codebox"><table><tr id="p1006143"><td class="code" id="p1006code143"><pre class="shell" style="font-family:monospace;">[root@test ccd]# vim ascariote</pre></td></tr></table></div>

<p>En nuestro caso esta es una configuración para clientes GNU/Linux/BSD y otros.</p>

<div class="wp_codebox"><table><tr id="p1006144"><td class="code" id="p1006code144"><pre class="shell" style="font-family:monospace;">ifconfig-push 192.168.4.30 192.168.4.1</pre></td></tr></table></div>

<p>En caso de los clientes fueran windows, tendríamos que configurarlo de la siguiente<br />
manera.</p>

<div class="wp_codebox"><table><tr id="p1006145"><td class="code" id="p1006code145"><pre class="shell" style="font-family:monospace;">ifconfig-push 192.168.4.49 192.168.4.50</pre></td></tr></table></div>

<p>En windows siempre se ocupa dos IP para que puedamos asignar una IP estática<br />
siempre empezando con la IP impar. Con esto solamente tendremos que reiniciar el servicio<br />
de OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006146"><td class="code" id="p1006code146"><pre class="shell" style="font-family:monospace;">[root@test ccd]# /etc/init.d/openvpn restart</pre></td></tr></table></div>

<p>Solo queda iniciar el cliente para que ya se le sea asignada su IP estática.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Road+Warrior.">
Diagrama Road Warrior.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Road+Warrior."></a></h4>
<p>Esta es la forma en que se podría ilustrar una configuración RoadWarrior de<br />
OpenVPN, teniendo las siguientes características. Figura 2.5: Los equipos<br />
clientes y servidor pueden estar en lugar distantes. Los equipos están<br />
conectados directamente a Intenet. En el servidor tiene configurado el OpenVPN<br />
creando una interfaz virtual llamada tun0 que por medio de esta se creara el<br />
túnel VPN. Los clientes se conectan al servidor por medio del túnel VPN pero<br />
autenticados por certificados y llaves de autenticación. Los clientes también<br />
puede ser dispositivos móviles que se conectaran a la red VPN. Solo se pueden<br />
conectar clientes que estén permitidos. Pueden compartir recursos entre cliente<br />
a cliente como tambien al servidor. Pero su salida de paquetes siempre va hacer<br />
enviada por la conexión de internet.</p>
<h3 id="section-Servidor+Virtual+Private+Network+(VPN)-Net+To+Net">Net To<br />
Net<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Net+To+Net"></a></h3>
<p>Es una configuración muy ocupada en las empresas que tienen varias sucursales<br />
en lugares físicamente apartados geográficamente. Este métodos nos sirve para<br />
unir varias redes y puedan compartir información entre todos los clientes de<br />
todas las redes conectadas de una forma transparente. Solamente se requiere un<br />
servidor y clientes que permitan la conexión de a la red virtual.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Server+Net+to+Net">Server<br />
Net to Net<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Server+Net+to+Net"></a></h4>
<p>En este configuraremos dentro del tunel VPN la union de 3 redes de la<br />
siguiente manera:</p>
<table>
<tbody>
<tr>
<th>UBICACION</th>
<th>DOMINIO</th>
<th>RED FISICA</th>
<th>RED VIRTUAL</th>
<td></td>
</tr>
<tr>
<td>MEXICO</td>
<td>test.ascanet.com.mx</td>
<td>192.168.1.0/24</td>
<td>10.0.1.1/10.0.2.1</td>
<td></td>
</tr>
<tr>
<td>OAXACA</td>
<td>ascariote.dynalias.net</td>
<td>192.168.2.0/24</td>
<td>10.0.2.2</td>
</tr>
<tr>
<td>VERACRUZ</td>
<td>belzebu.dynalias.net</td>
<td>192.168.3.0/24</td>
<td>10.0.3.2</td>
<td></td>
</tr>
</tbody>
</table>
<p>Para poder unir a estas 3 redes en el servidor tendremos que crear 2 llaves<br />
en las cuales conecte a la sucursales de Mexico y Veracruz, las cuales reacremos<br />
de la siguiente manera:</p>

<div class="wp_codebox"><table><tr id="p1006147"><td class="code" id="p1006code147"><pre class="shell" style="font-family:monospace;">[root@test openvpn]# openvpn --genkey --secret mex-oax.txt</pre></td></tr></table></div>

<p>[root@test openvpn]# openvpn &#8211;genkey &#8211;secret mex-ver.txt}}} Ya teniendo las<br />
llaves solamente tendremos que crear dos archivos de configuración del servidor para que<br />
pueda controlar las 2 redes. Primero comenzaremos con la conexión de México y Oaxaca.</p>

<div class="wp_codebox"><table><tr id="p1006148"><td class="code" id="p1006code148"><pre class="shell" style="font-family:monospace;">remote ascariote.dynalias.net</pre></td></tr></table></div>

<p>float port 1194 dev tun0 persist-tun ifconfig 10.0.1.1 10.0.1.2 comp-lzo ping 15<br />
ping-restart 120 verb 3 secret /etc/openvpn/mex-oax.txt persist-key route 192.168.2.0<br />
255.255.255.0 chroot /var/empty log /var/log/openvpn.log}}} Si queremos que OpenVPN tenga<br />
varias conexión al servidor solamente tendremos que cambiar el puerto de escucha del otro<br />
segmento de red. Configuraremos la conexión de México a Veracruz.</p>

<div class="wp_codebox"><table><tr id="p1006149"><td class="code" id="p1006code149"><pre class="shell" style="font-family:monospace;">remote belzebu.dynalias.net</pre></td></tr></table></div>

<p>float port 1195 dev tun1 persist-tun ifconfig 10.0.2.1 10.0.2.2 comp-lzo ping 15<br />
ping-restart 120 verb 3 secret /etc/openvpn/mex-ver.txt persist-key route 192.168.3.0<br />
255.255.255.0 chroot /var/empty log /var/log/openvpn.log}}} Explicaremos cada una de la<br />
opciones del cliente OpenVPN:</p>
<table>
<tbody>
<tr>
<th>Parámetro</th>
<th>Descripción</th>
<td></td>
</tr>
<tr>
<td>remote ascariote.dynalias.net</td>
<td>IPS o Dominios a los cuales se tendrá conexión al servicio<br />
		OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>float</td>
<td>Por si acaso que los clientes son de IP dinámicas.</td>
<td></td>
</tr>
<tr>
<td>port 1194/1195</td>
<td>Puertos de escucha de los 2 servicios de OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>proto udp</td>
<td>Protocolo utilizado en red VPN</td>
<td></td>
</tr>
<tr>
<td>dev tun1/tun2</td>
<td>Interfaz virtual con el cual se conecta a la red VPN, pero<br />
		indicando que red escucha.</td>
<td></td>
</tr>
<tr>
<td>persist-tun</td>
<td>Permite que no se cierre y se vuelvan abrir los dispositivos<br />
		TAP/TUN.</td>
<td></td>
</tr>
<tr>
<td>ifconfig 10.0.1.1 10.0.1.2<br />
		ifconfig 10.0.2.1 10.0.2.2</td>
<td>IP especificadas que usaran como el servidor y clientes en los<br />
		segmentos de red diferentes.</td>
<td></td>
</tr>
<tr>
<td>comp-lzo</td>
<td>Comprimir dentro de la red virtual con lzo.</td>
<td></td>
</tr>
<tr>
<td>ping 15</td>
<td>Ping cada 15 segundos al servidor OpenVPN.</td>
<td></td>
</tr>
<tr>
<td>ping-restart 120</td>
<td>Reinicia ping cada 120 segundos</td>
<td></td>
</tr>
<tr>
<td>verb 3</td>
<td>Método del verbose Moderado.</td>
<td></td>
</tr>
<tr>
<td>secret /etc/openvpn/mex-oax.txt<br />
		secret /etc/openvpn/mex-ver.txt</td>
<td>Manda a llamar la llave para conexión de red VPN.</td>
<td></td>
</tr>
<tr>
<td>persist-key</td>
<td>Esta opción soluciona el problema por llaves que persisten a través<br />
		de los reajustes SIGUSR1.</td>
<td></td>
</tr>
<tr>
<td>route 192.168.2.0 255.255.255.0<br />
		route 192.168.3.0 255.255.255.0</td>
<td>Establecemos que haya ruteo dentro de la red física a<br />
		conectarnos</td>
<td></td>
</tr>
<tr>
<td>chroot /var/empty</td>
<td>Por seguridad se activa un enjaulamiento</td>
<td></td>
</tr>
<tr>
<td>log /var/log/openvpn-mex-oax.log<br />
		log /var/log/openvpn-mex-oax.log</td>
<td>Bitácora del servicio OpenVPN en cada segmento de red.</td>
<td></td>
</tr>
</tbody>
</table>
<p>Iniciamos la configuración de nuestro OpenVPN</p>

<div class="wp_codebox"><table><tr id="p1006150"><td class="code" id="p1006code150"><pre class="shell" style="font-family:monospace;">[root@test openvpn]# /etc/init.d/openvpn start</pre></td></tr></table></div>

<p>Verificamos que tengamos la interfaz tun0/tun1 levantadas y configuradas.</p>

<div class="wp_codebox"><table><tr id="p1006151"><td class="code" id="p1006code151"><pre class="shell" style="font-family:monospace;">[root@test openvpn]# ifconfig tun0 &amp;amp;&amp;amp; ifconfig tun1</pre></td></tr></table></div>

<p>tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00 inet<br />
addr:10.0.1.1 P-t-P:10.0.1.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST<br />
MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0<br />
errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX<br />
bytes:0 (0.0 b) tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00 inet<br />
addr:10.0.2.1 P-t-P:10.0.2.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST<br />
MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0<br />
errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX<br />
bytes:0 (0.0 b) [root@test openvpn]# }}}</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Client+Net+To+Net.">
Client Net To Net.<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Client+Net+To+Net."></a></h4>
<p>Ahora configuramos los clientes para para que se puedan conectar a la red<br />
VPN, se recomienda poner como cliente servidores Linux o otro derivados.<br />
Comenzaremos con la configuración del Cliente Oaxaca a México.</p>

<div class="wp_codebox"><table><tr id="p1006152"><td class="code" id="p1006code152"><pre class="shell" style="font-family:monospace;">remote test.ascanet.com.mx</pre></td></tr></table></div>

<p>float port 1194 dev tun0 persist-tun ifconfig 10.0.1.2 10.0.1.1 comp-lzo ping 15<br />
ping-restart 120 verb 3 secret /etc/openvpn/plutarco.txt persist-key route 192.168.1.0<br />
255.255.255.0 log /var/log/openvpn.log }}} Ahora comenzaremos con la configuración del<br />
cliente Veracruz a México:</p>

<div class="wp_codebox"><table><tr id="p1006153"><td class="code" id="p1006code153"><pre class="shell" style="font-family:monospace;">remote test.ascanet.com.mx</pre></td></tr></table></div>

<p>float port 1195 dev tun0 persist-tun ifconfig 10.0.2.2 10.0.2.1 comp-lzo ping 15<br />
ping-restart 120 verb 3 secret /etc/openvpn/plutarco.txt persist-key route 192.168.1.0<br />
255.255.255.0 log /var/log/openvpn.log }}} Como podemos ver son los mismos parámetros que<br />
el servidor.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexión">
Comprobando Conexión<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Comprobando+Conexi%C3%B3n"></a></h4>
<p>La forma de comprobar esta conexión es hacer pings entre los segmentos red<br />
físicos. Comprobación de Oaxaca a México a una máquina cliente.</p>

<div class="wp_codebox"><table><tr id="p1006154"><td class="code" id="p1006code154"><pre class="shell" style="font-family:monospace;">ascariote:~# ping -c 5 192.168.1.10</pre></td></tr></table></div>

<p>PING 192.168.4.10 (192.168.1.10) 56(84) bytes of data. 64 bytes from 192.168.1.10:<br />
icmp_seq=1 ttl=127 time=39.9 ms 64 bytes from 192.168.1.10: icmp_seq=2 ttl=127 time=37.4<br />
ms 64 bytes from 192.168.1.10: icmp_seq=3 ttl=127 time=38.6 ms 64 bytes from<br />
192.168.1.10: icmp_seq=4 ttl=127 time=89.1 ms 64 bytes from 192.168.1.10: icmp_seq=5<br />
ttl=127 time=110 ms &#8212; 192.168.1.10 ping statistics &#8212; 5 packets transmitted, 5<br />
received, 0% packet loss, time 4017ms rtt min/avg/max/mdev = 37.435/63.124/110.489/30.710<br />
ms ascariote:# }}} Comprobación de México a Veracruz a una máquina cliente.</p>

<div class="wp_codebox"><table><tr id="p1006155"><td class="code" id="p1006code155"><pre class="shell" style="font-family:monospace;">ascariote:~# ping -c 5 192.168.3.211</pre></td></tr></table></div>

<p>PING 192.168.4.10 (192.168.1.10) 56(84) bytes of data. 64 bytes from 192.168.3.211:<br />
icmp_seq=1 ttl=127 time=39.9 ms 64 bytes from 192.168.3.211: icmp_seq=2 ttl=127 time=37.4<br />
ms 64 bytes from 192.168.3.211: icmp_seq=3 ttl=127 time=38.6 ms 64 bytes from<br />
192.168.3.211: icmp_seq=4 ttl=127 time=89.1 ms 64 bytes from 192.168.3.211: icmp_seq=5<br />
ttl=127 time=110 ms &#8212; 192.168.3.211 ping statistics &#8212; 5 packets transmitted, 5<br />
received, 0% packet loss, time 4017ms rtt min/avg/max/mdev = 37.435/63.124/110.489/30.710<br />
ms ascariote:# }}} Podemos hacer mas pruebas de ping entre las máquinas de las tres redes<br />
conectadas dentro de VPN, pero también ya podremos compartir recursos dentro de estas<br />
redes, como ejemplo: yo puedo estar en Veracruz y deseo imprimir en una impresora de<br />
México para que se entregue algún reporte en esta cuidad.</p>
<h4 id="section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Net+To+Net">
Diagrama Net To Net<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Diagrama+Net+To+Net"></a></h4>
<p>Esta es la forma en que se podría ilustrar una configuración Net To Net de<br />
OpenVPN, teniendo las siguientes características.</p>
<ul>
<li>Los equipos clientes y servidor pueden estar en lugar distantes.</li>
<li>Los equipos están conectados directamente a Intenet.</li>
<li>Pueden compartir recursos internos de cada red por medio del Túnel<br />
	VPN.</li>
<li>Las redes que se unen al Túnel VPN sienten que están dentro de una sola<br />
	red.</li>
</ul>
<h2 id="section-Servidor+Virtual+Private+Network+(VPN)-Firewall+OpenVPN">
Firewall OpenVPN<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Firewall+OpenVPN"></a></h2>
<p>Cuando usamos una VPN se recomienda configurar nuestro firewall para que<br />
termina las conexiones hacia el túnel. Aquí ya depende del administrador del<br />
sistema que tipo de firewall pueda usar, pero actualmente se siguen utilizando<br />
reglas de iptables. Comenzaremos a crear las reglas para nuestro firewall por<br />
medio de iptables. Aceptamos el trafico que entrada y salida por el protocolo<br />
UDP por el servicio OpenVPN.</p>

<div class="wp_codebox"><table><tr id="p1006156"><td class="code" id="p1006code156"><pre class="shell" style="font-family:monospace;">[root@test ~]# iptables -A INPUT -i ppp0 -p udp --dport 1194 -j ACCEPT 
[root@test ]# iptables -A OUTPUT -0 ppp0 -p udp --sport 1194 -j ACCEPT</pre></td></tr></table></div>

<p>En este<br />
caso la interfaz de escucha del servicio es ppp0 pero también puede ser eth0. Permitimos la conexión desde cualquier equipo por la interfaz tun.</p>

<div class="wp_codebox"><table><tr id="p1006157"><td class="code" id="p1006code157"><pre class="shell" style="font-family:monospace;">[root@test ~]# iptables -A INPUT -i tun+ -j ACCEPT
[root@test ]# iptables -A OUTPUT -o tun+ -j ACCEPT</pre></td></tr></table></div>

<p>Permitimos que los equipos de las otras redes accedaan a nuestra red..</p>

<div class="wp_codebox"><table><tr id="p1006158"><td class="code" id="p1006code158"><pre class="shell" style="font-family:monospace;">[root@test ~]# iptables -A FORWARD -i tun+ -j ACCEPT
[root@test ]# iptables -A FORWARD -o tun+ -j ACCEPT</pre></td></tr></table></div>

<p>Generamos el archivo de reglas del firewall.</p>

<div class="wp_codebox"><table><tr id="p1006159"><td class="code" id="p1006code159"><pre class="shell" style="font-family:monospace;">[root@test ~]# iptables-save &amp;gt; iptables</pre></td></tr></table></div>

<p>Movemos el archivo generado a /etc/sysconfig</p>

<div class="wp_codebox"><table><tr id="p1006160"><td class="code" id="p1006code160"><pre class="shell" style="font-family:monospace;">[root@test ~]# mv iptables /etc/sysconfig</pre></td></tr></table></div>

<p>Reiniciamos el servicio de firewall.</p>

<div class="wp_codebox"><table><tr id="p1006161"><td class="code" id="p1006code161"><pre class="shell" style="font-family:monospace;">[root@test sysconfig]# /etc/init.d/iptables restart 
Expurgar reglas del cortafuegos: [ OK ]
Configuración de cadenas a la política ACCEPT: filter [ OK ]
Descargando módulos iptables: [ OK ]
Aplicando reglas del cortafuegos iptables: [ OK ]
Cargando módulos iptables adicionales:ip_conntrack_netbios_[ OK ]
[root@test sysconfig]#</pre></td></tr></table></div>

<p>Con esto ya habremos creado el firewall para nuestro servicio de VPN.</p>
<h3 id="section-Servidor+Virtual+Private+Network+(VPN)-Verificando+la+configuración+del+Firewall">
Verificando la configuración del Firewall<a class="hashlink" href="#section-Servidor+Virtual+Private+Network+(VPN)-Verificando+la+configuraci%C3%B3n+del+Firewall"></a></h3>
<p>La forma mas sencilla y rápida para poder checar que realmente se aplicaron<br />
las reglas Iptables para nuestro firewall, tendremos que ejecutar el siguiente<br />
comando.</p>

<div class="wp_codebox"><table><tr id="p1006162"><td class="code" id="p1006code162"><pre class="shell" style="font-family:monospace;">[root@test ~]# iptables -nL | grep 1194 
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:1194
[root@test ]#</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/servidor-virtual-private-network-vpn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chuleta de comandos sobre screen</title>
		<link>http://miguelcarmona.com/notas-y-recortes/chuleta-de-comandos-sobre-screen</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/chuleta-de-comandos-sobre-screen#respond</comments>
		<pubDate>Wed, 22 Jan 2014 13:02:50 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=992</guid>
		<description><![CDATA[No hay mucho que decir sobre screen, pero para los que no lo conozcan, aquí tienen una buena introducción y funcionamiento: http://tuxpepino.wordpress.com/2007/05/24/%C2%BFconocias-screen/ Resumiendo: Crtl+a [ =&#62; Activamos el modo copia (que también permite hacer scroll). Esc para salir de este modo. Con &#8220;enter&#8221; empezamos a seleccionar texto para copiarlo y pulsamos &#8220;enter&#8221; de nuevo para [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-1001 aligncenter" src="http://miguelcarmona.com/wp-content/uploads/2014/01/screen-threeQuartersView-300x200.jpg" alt="screen" width="300" height="200" srcset="http://miguelcarmona.com/wp-content/uploads/2014/01/screen-threeQuartersView-300x200.jpg 300w, http://miguelcarmona.com/wp-content/uploads/2014/01/screen-threeQuartersView.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p style="text-align: left;">No hay mucho que decir sobre screen, pero para los que no lo conozcan, aquí tienen una buena introducción y funcionamiento: <a href="http://tuxpepino.wordpress.com/2007/05/24/%C2%BFconocias-screen/">http://tuxpepino.wordpress.com/2007/05/24/%C2%BFconocias-screen/</a> Resumiendo:</p>
<ul>
<li>Crtl+a [ =&gt; Activamos el modo copia (que también permite hacer scroll). Esc para salir de este modo. Con &#8220;enter&#8221; empezamos a seleccionar texto para copiarlo y pulsamos &#8220;enter&#8221; de nuevo para terminar la selección y pegar.</li>
<li>Crtl+a ] =&gt; Pegar texto copiado.</li>
<li>Crtl+a c =&gt; crear nueva consola. También se puede escribir screen.</li>
<li>Crtl+a &#8221; =&gt; Listado de consolas abiertas para seleccionar con los cursores.</li>
<li><strong>Crtl+a w =&gt; Listado de consolas abiertas.</strong></li>
<li>Crtl+a n =&gt; Siguiente consola.</li>
<li>Crtl+a p =&gt; Anterior consola.</li>
<li>Crtl+a &#8216;número&#8217; =&gt; Cambiar a la consola &#8216;número&#8217;.</li>
<li>Crtl+a A =&gt; Cambiar el nombre a la consola.</li>
<li><strong>Crtl+a d =&gt; Desligar una consola de una sesión.</strong></li>
<li><strong>screen -r =&gt; Recuperar una consola desligada en la sesión actual.</strong> Si hay varias, especificar a continuación el número identificador de la consola siendo la más reciente la que tenga el número más alto.</li>
<li>screen -dr =&gt; Desliga una única consola abierta en otra sesión y la recupera en la sesión actual. Si hay varias sesiones, se puede recuperar la que queramos indicando el número identificador a continuación.</li>
<li>Crtl+a / =&gt; Cierra todas las consolas y sale de screen.</li>
<li>Crtl+a ? =&gt; Listado de accesos rápidos de screen.</li>
</ul>
<p>Dividir la pantalla en varias sesiones (al estilo de konsole o yakuake):</p>
<ul>
<li>Crtl+a | =&gt; Dividir verticalmente.</li>
<li>Crtl+a S =&gt; Dividir horizontalmente.</li>
<li>Crtl+a Tab =&gt; Pasar a la siguiente división</li>
<li>Crtl+a c =&gt; Crear ventana en la división.</li>
<li>Crtl+a X =&gt; Cerrar una división</li>
</ul>
<p>Fuentes:</p>
<p><a title="http://systemadmin.es/2015/02/screen-dividir-la-pantalla-para-tener-multiples-sesiones" href="http://systemadmin.es/2015/02/screen-dividir-la-pantalla-para-tener-multiples-sesiones">http://systemadmin.es/2015/02/screen-dividir-la-pantalla-para-tener-multiples-sesiones</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/chuleta-de-comandos-sobre-screen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excluir servicios de Logwatch</title>
		<link>http://miguelcarmona.com/notas-y-recortes/excluir-servicios-de-logwatch</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/excluir-servicios-de-logwatch#respond</comments>
		<pubDate>Sat, 07 Sep 2013 17:29:48 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=971</guid>
		<description><![CDATA[Logwatch es un sistema de análisis de logs bastante interesante para estar &#8220;al día&#8221; sin tener que acceder a cada servidor. Básicamente se ejecuta mediante cron diariamente; extrae los datos más interesantes de los logs de cada servicio y los remite por email a la cuenta de root del mismo sistema. Para excluir algún servicio [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a title="Logwatch" href="http://www.logwatch.org">Logwatch</a> es un sistema de análisis de logs bastante interesante para estar &#8220;al día&#8221; sin tener que acceder a cada servidor.</p>
<p>Básicamente se ejecuta mediante cron diariamente; extrae los datos más interesantes de los logs de cada servicio y los remite por email a la cuenta de root del mismo sistema.</p>
<p>Para excluir algún servicio como dovecot por ejemplo, bastará con añadir la exclusión al archivo de configuración. Dicho archivo, en debian no se crea a la instalación por lo que bastaría con crear el archivo /etc/logwatch/conf/logwatch.conf</p>
<p>Una vez creado, sólo nos queda añadir:</p>

<div class="wp_codebox"><table><tr id="p971165"><td class="code" id="p971code165"><pre class="bash" style="font-family:monospace;">Service = <span style="color: #ff0000;">&quot;-dovecot&quot;</span></pre></td></tr></table></div>

<p>Para comprobarlo, bastaría con ejecutar el script desde cron:</p>

<div class="wp_codebox"><table><tr id="p971166"><td class="code" id="p971code166"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>cron.daily<span style="color: #000000; font-weight: bold;">/</span>00logwatch</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/excluir-servicios-de-logwatch/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ejecuta un comando a la hora que quieras con AT</title>
		<link>http://miguelcarmona.com/notas-y-recortes/ejecuta-un-comando-a-la-hora-que-quieras-con-at</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/ejecuta-un-comando-a-la-hora-que-quieras-con-at#respond</comments>
		<pubDate>Mon, 19 Nov 2012 17:13:24 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=937</guid>
		<description><![CDATA[¿Cómo funciona AT? Pues muy sencillo, la forma básica sería escribir en el terminal : $ at 15:37 Y debe salirnos algo como esto: warning: commands will be executed using /bin/sh at&#62; Posteriormente escribimos el comando a ejecutar a esa hora, por ejemplo: at&#62; killall console Luego salimos de AT tecleando Ctrl+D. En resumen se verá algo como esto: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>¿Cómo funciona <strong>AT</strong>? Pues muy sencillo, la forma básica sería escribir en el terminal :</p>

<div class="wp_codebox"><table><tr id="p937175"><td class="code" id="p937code175"><pre class="bash" style="font-family:monospace;">$ at <span style="color: #000000;">15</span>:<span style="color: #000000;">37</span></pre></td></tr></table></div>

<p>Y debe salirnos algo como esto:</p>

<div class="wp_codebox"><table><tr id="p937176"><td class="code" id="p937code176"><pre class="bash" style="font-family:monospace;">warning: commands will be executed using <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">sh</span>
at<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>Posteriormente escribimos el comando a ejecutar a esa hora, por ejemplo:</p>

<div class="wp_codebox"><table><tr id="p937177"><td class="code" id="p937code177"><pre class="bash" style="font-family:monospace;">at<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">killall</span> console</pre></td></tr></table></div>

<p><span id="more-937"></span><br />
Luego salimos de <strong>AT</strong> tecleando <strong>Ctrl+D</strong>. En resumen se verá algo como esto:</p>
<p><center><a href="http://miguelcarmona.com/wp-content/uploads/2012/11/at_terminal-600x363.png"><img class="aligncenter size-medium wp-image-950" alt="terminal" src="http://miguelcarmona.com/wp-content/uploads/2012/11/at_terminal-600x363-300x181.png" width="300" height="181" srcset="http://miguelcarmona.com/wp-content/uploads/2012/11/at_terminal-600x363-300x181.png 300w, http://miguelcarmona.com/wp-content/uploads/2012/11/at_terminal-600x363.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></center>Si se fijan en la imagen, cuando terminamos AT nos entrega el número del proceso que ejecutamos:</p>

<div class="wp_codebox"><table><tr id="p937178"><td class="code" id="p937code178"><pre class="bash" style="font-family:monospace;">job <span style="color: #000000; font-weight: bold;">&lt;</span>strong<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000;">3</span><span style="color: #000000; font-weight: bold;">&lt;/</span>strong<span style="color: #000000; font-weight: bold;">&gt;</span> at Tue Oct  <span style="color: #000000;">2</span> <span style="color: #000000;">15</span>:<span style="color: #000000;">45</span>:00 <span style="color: #000000;">2012</span></pre></td></tr></table></div>

<p>En este caso es el número 3. Cuando tenemos varios proceso ejecutados con <strong>AT</strong>, podemos consultarlos con el comando:</p>

<div class="wp_codebox"><table><tr id="p937179"><td class="code" id="p937code179"><pre class="bash" style="font-family:monospace;">$ atq</pre></td></tr></table></div>

<p>Cuando sepamos el proceso que queremos matar, solo tenemos que teclear:</p>

<div class="wp_codebox"><table><tr id="p937180"><td class="code" id="p937code180"><pre class="bash" style="font-family:monospace;">$ atrm <span style="color: #666666; font-style: italic;">#</span></pre></td></tr></table></div>

<p>Por lo tanto, si quiero matar el proceso del ejemplo, solo tengo que poner:</p>

<div class="wp_codebox"><table><tr id="p937181"><td class="code" id="p937code181"><pre class="bash" style="font-family:monospace;">$ atrm <span style="color: #000000;">3</span></pre></td></tr></table></div>

<p>Listo</p>
<p>AT tiene otras opciones, como por ejemplo la opción de enviarnos un correo cuando ejecute la tarea. Estas opciones las pueden ver tecleando en consola:</p>

<div class="wp_codebox"><table><tr id="p937182"><td class="code" id="p937code182"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">man</span> at</pre></td></tr></table></div>

<p>vía: <a href="http://blog.desdelinux.net/ejecuta-un-comando-a-la-hora-que-quieras-con-at/" target="_blank">blog.desdelinux.net/ejecuta-un-comando-a-la-hora-que-quieras-con-at/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/ejecuta-un-comando-a-la-hora-que-quieras-con-at/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sincronizar contenido a través de FTP</title>
		<link>http://miguelcarmona.com/notas-y-recortes/sincronizar-contenido-a-traves-de-ftp</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/sincronizar-contenido-a-traves-de-ftp#respond</comments>
		<pubDate>Wed, 10 Oct 2012 18:16:33 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=927</guid>
		<description><![CDATA[Normalmente para la sincronización en GNU/Linux se suele utilizar rsync por su facilidad y principalmente por su eficacia. Se puede utilizar a través de otros protocolos (como ssh por ejemplo) y permite una gran flexibilidad. Para hacer una sincronización entre 2 rutas (por ejemplo para realizar un update de alguna aplicación en nuestro hosting compartido [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Normalmente para la sincronización en GNU/Linux se suele utilizar rsync por su facilidad y principalmente por su eficacia. Se puede utilizar a través de otros protocolos (como ssh por ejemplo) y permite una gran flexibilidad.</p>
<p>Para hacer una sincronización entre 2 rutas (por ejemplo para realizar un update de alguna aplicación en nuestro hosting compartido económico o una sincronización para posteriormente realizar un backup en local), podemos utilizar el siguiente script basado en lftp:<span id="more-927"></span></p>

<div class="wp_codebox"><table><tr id="p927184"><td class="code" id="p927code184"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #007800;">HOST</span>=<span style="color: #ff0000;">&quot;your.ftp.host.dom&quot;</span>
<span style="color: #007800;">USER</span>=<span style="color: #ff0000;">&quot;username&quot;</span>
<span style="color: #007800;">PASS</span>=<span style="color: #ff0000;">&quot;password&quot;</span>
<span style="color: #007800;">LCD</span>=<span style="color: #ff0000;">&quot;/path/of/your/local/dir&quot;</span>
<span style="color: #007800;">RCD</span>=<span style="color: #ff0000;">&quot;/path/of/your/remote/dir&quot;</span>
lftp <span style="color: #660033;">-c</span> <span style="color: #ff0000;">&quot;set ftp:list-options -a;
open ftp://<span style="color: #007800;">$USER</span>:<span style="color: #007800;">$PASS</span>@<span style="color: #007800;">$HOST</span>;
lcd <span style="color: #007800;">$LCD</span>;
cd <span style="color: #007800;">$RCD</span>;
mirror --reverse <span style="color: #000099; font-weight: bold;">\
</span>	--delete <span style="color: #000099; font-weight: bold;">\
</span>	--verbose <span style="color: #000099; font-weight: bold;">\
</span>	--exclude-glob a-dir-to-exclude/ <span style="color: #000099; font-weight: bold;">\
</span>	--exclude-glob a-file-to-exclude <span style="color: #000099; font-weight: bold;">\
</span>	--exclude-glob a-file-group-to-exclude* <span style="color: #000099; font-weight: bold;">\
</span>	--exclude-glob other-files-to-exclude&quot;</span></pre></td></tr></table></div>

<p>No creo que haya que explicar mucho la verdad.</p>
<p>Agradecimientos a su autor en: <a title="http://serverfault.com/a/106365" href="http://serverfault.com/a/106365" target="_blank">http://serverfault.com/a/106365</a></p>
<p>También tenemos un proyecto que pinta bastante bien (y en mantenimiento y desarrollo) llamado FTPSync. Se trata de un script en perl. Más en <a href="https://confluence.clazzes.org/display/FTPSYNC/FTPSync+Home">https://confluence.clazzes.org/display/FTPSYNC/FTPSync+Home</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/sincronizar-contenido-a-traves-de-ftp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviar mensajes entre las terminales, y/o usuarios conectados por SSH</title>
		<link>http://miguelcarmona.com/notas-y-recortes/enviar-mensajes-entre-las-terminales-yo-usuarios-conectados-por-ssh</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/enviar-mensajes-entre-las-terminales-yo-usuarios-conectados-por-ssh#comments</comments>
		<pubDate>Tue, 02 Oct 2012 17:51:35 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=915</guid>
		<description><![CDATA[En algún que otro día he necesitado enviarle un mensaje, notificación o aviso a los usuarios que están conectados por SSH a un servidor, por ejemplo; avisando que el servidor dentro de 5 minutos se reiniciará… o algo así. En ese momento me he visto en el dilema, ¿cómo hacer que ellos sepan esto de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>En algún que otro día he necesitado enviarle un mensaje, notificación o aviso a los usuarios que están conectados por SSH a un servidor, por ejemplo; avisando que el servidor dentro de 5 minutos se reiniciará… o algo así.</p>
<p>En ese momento me he visto en el dilema, ¿cómo hacer que ellos sepan esto de forma inmediata? … mediante email demorará, y depende de que todos y cada uno de los usuarios lea el email, por mensajería instantánea (IM) no es factible, pues no siempre todos están online, en fin… todo un problemilla</p>
<p>Y un buen día llegó la solución … comando <strong>wall</strong></p>
<p>Una línea tan simple como:<span id="more-915"></span></p>

<div class="wp_codebox"><table><tr id="p915188"><td class="code" id="p915code188"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;El servidor será reiniciado en los próximos 5mins, guarden sus trabajos.&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wall</span></pre></td></tr></table></div>

<p>Y listo! … esto enviará ese mensaje a TODOS los usuarios que estén conectados por SSH al servidor, pero… no solo eso. Suponiendo que es un ordenador y no un servidor (o sea, que tiene entorno gráfico), veremos también el mensaje en la terminal que tengamos abierta, así como en el área de notificación:</p>
<p><img class="aligncenter size-full wp-image-919" title="mensaje de notificacion" src="/wp-content/uploads/2012/10/mensaje-notificacion.jpg" alt="" width="321" height="178" srcset="http://miguelcarmona.com/wp-content/uploads/2012/10/mensaje-notificacion.jpg 321w, http://miguelcarmona.com/wp-content/uploads/2012/10/mensaje-notificacion-300x166.jpg 300w" sizes="(max-width: 321px) 100vw, 321px" /></p>
<p><img title="mensaje-terminal" src="/wp-content/uploads/2012/10/mensaje-terminal.jpg" alt="" width="543" height="424" /></p>
<p>Pero…<strong> ¿qué hacer si deseo enviar un mensaje a solo una terminal o sesión SSH?</strong></p>
<p>En ese caso debemos conocer qué sesión es con la que deseamos comunicarnos. Para ello usamos lo que el mismo sistema nos brinda.</p>
<p><strong>1.</strong> Primero debemos saber a qué terminal deseamos mandar el mensaje, para ello escribimos en una terminal : <strong>w</strong> (<em>sí… solo la letra w</em>). Nos aparecerá lo siguiente, y con esa información veremos a qué terminal deseamos contactar:</p>
<p><img title="terminal-w" src="/wp-content/uploads/2012/10/terminal-w-300x215.jpg" alt="" width="300" height="215" /></p>
<p>En este ejemplo, deseo enviar un mensaje al <strong>tty2</strong> (el primero que ven).</p>
<p><strong>2.</strong> Ahora pasamos al comando:</p>

<div class="wp_codebox"><table><tr id="p915189"><td class="code" id="p915code189"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Esto es un mensaje de prueba&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>tty2</pre></td></tr></table></div>

<p>Y esto bastará para lograr lo que deseamos, en la TTY2 aparecerá ese texto.</p>
<p>Si en vez de enviarlo ahí, deseamos enviarlo a pts/2 … simplemente:</p>

<div class="wp_codebox"><table><tr id="p915190"><td class="code" id="p915code190"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Esto es un mensaje de prueba&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>pts<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2</span></pre></td></tr></table></div>

<p>vía: <a href="http://blog.desdelinux.net/enviar-mensajes-entre-las-terminales-yo-usuarios-conectados-por-ssh/">http://blog.desdelinux.net/enviar-mensajes-entre-las-terminales-yo-usuarios-conectados-por-ssh/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/enviar-mensajes-entre-las-terminales-yo-usuarios-conectados-por-ssh/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿Cómo usar el comando dig? (ejemplos)</title>
		<link>http://miguelcarmona.com/notas-y-recortes/como-usar-el-comando-dig-ejemplos</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/como-usar-el-comando-dig-ejemplos#respond</comments>
		<pubDate>Tue, 02 Oct 2012 17:43:05 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=903</guid>
		<description><![CDATA[El comando unix dig (domain information groper), con el permiso de nslookup, es una de las mejores opciones a la hora de hacer troubleshooting o debug de problemas DNS. Vamos a ver unos cuantos ejemplos de algunas las posibilidades que nos ofrece. Como siempre toda esta información la podéis ampliar en la página man del comando o la ayuda: $ man dig [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>El comando unix <strong>dig (domain information groper)</strong>, con el permiso de <strong>nslookup</strong>, es una de las mejores opciones a la hora de hacer <strong>troubleshooting</strong> o <strong>debug</strong> de problemas <strong>DNS</strong>. Vamos a ver unos cuantos ejemplos de algunas las posibilidades que nos ofrece. Como siempre toda esta información la podéis ampliar en la página man del comando o la ayuda:</p>
<pre>$ man dig
$ dig -h</pre>
<p><strong>Nota</strong><em>: he suprimido salida no relevante de los comandos para reducir el tamaño del artículo.</em></p>
<p><strong>Ejecución sin argumentos</strong></p>
<p>Cuando ejecutamos el comando dig sin argumentos se realiza una consulta de los NS (Name Servers) raíz o root servers “.”. Cara al troubleshooting o debug no suele ser de mucha utilidad:<span id="more-903"></span></p>

<div class="wp_codebox"><table><tr id="p903199"><td class="code" id="p903code199"><pre class="bash" style="font-family:monospace;">$ dig
; DiG 9.8.1-P1 
<span style="color: #000000; font-weight: bold;">;;</span> global options: +cmd
<span style="color: #000000; font-weight: bold;">;;</span> Got answer:
<span style="color: #000000; font-weight: bold;">;;</span> <span style="color: #660033;">-HEADER-</span> opcode: QUERY, status: NOERROR, <span style="color: #c20cb9; font-weight: bold;">id</span>: <span style="color: #000000;">55735</span>
<span style="color: #000000; font-weight: bold;">;;</span> flags: qr rd ra; QUERY: <span style="color: #000000;">1</span>, ANSWER: <span style="color: #000000;">13</span>, AUTHORITY: <span style="color: #000000;">0</span>, ADDITIONAL: <span style="color: #000000;">14</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> QUESTION SECTION:
;. IN NS
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> ANSWER SECTION:
.			<span style="color: #000000;">494084</span>	IN	NS	e.root-servers.net.
.			<span style="color: #000000;">494084</span>	IN	NS	a.root-servers.net.
.			<span style="color: #000000;">494084</span>	IN	NS	b.root-servers.net.
.			<span style="color: #000000;">494084</span>	IN	NS	g.root-servers.net.
.			<span style="color: #000000;">494084</span>	IN	NS	h.root-servers.net.
.			<span style="color: #000000;">494084</span>	IN	NS	i.root-servers.net.
...
...
<span style="color: #000000; font-weight: bold;">;;</span> ADDITIONAL SECTION:
j.root-servers.net. <span style="color: #000000;">575975</span> IN A 192.58.128.30
m.root-servers.net. <span style="color: #000000;">428374</span> IN A 202.12.27.33
...
...
<span style="color: #000000; font-weight: bold;">;;</span> Query <span style="color: #000000; font-weight: bold;">time</span>: <span style="color: #000000;">40</span> msec</pre></td></tr></table></div>

<p><strong>Dominio como argumento</strong></p>
<p>La forma más común y simple de ejecutar dig. En este caso pasamos como argumento el dominio a consultar. Cuando no se especifica nada se consulta siempre el <strong>registro A</strong> del dominio. Al no especificar tampoco los servidores <strong>DNS</strong> contra los que hacer la consulta se utilizan los <strong>especificados en nuestra conexión</strong>(<a title="Hacer que /etc/resolv.conf utilice el DNS secundario o balancee carga" href="http://rm-rf.es/hacer-que-etcresolv-conf-utilice-el-dns-secundario-o-balancee-carga/">/etc/resolv.conf</a>). Debemos prestar especial importancia a la sección <strong>ANSWER SECTION</strong>, ya que muestra el resultado de nuestra consulta:</p>

<div class="wp_codebox"><table><tr id="p903200"><td class="code" id="p903code200"><pre class="bash" style="font-family:monospace;">$ dig rm-rf.es
&nbsp;
; DiG 9.8.1-P1 rm-rf.es
<span style="color: #000000; font-weight: bold;">;;</span> global options: +cmd
<span style="color: #000000; font-weight: bold;">;;</span> Got answer:
<span style="color: #000000; font-weight: bold;">;;</span> <span style="color: #660033;">-HEADER-</span> opcode: QUERY, status: NOERROR, <span style="color: #c20cb9; font-weight: bold;">id</span>: <span style="color: #000000;">10364</span>
<span style="color: #000000; font-weight: bold;">;;</span> flags: qr rd ra; QUERY: <span style="color: #000000;">1</span>, ANSWER: <span style="color: #000000;">1</span>, AUTHORITY: <span style="color: #000000;">0</span>, ADDITIONAL: <span style="color: #000000;">0</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> QUESTION SECTION:
;rm-rf.es. IN A
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> ANSWER SECTION:
rm-rf.es. <span style="color: #000000;">13104</span> IN A 93.93.112.55
<span style="color: #000000; font-weight: bold;">;;</span> Query <span style="color: #000000; font-weight: bold;">time</span>: <span style="color: #000000;">39</span> msec
<span style="color: #000000; font-weight: bold;">;;</span> SERVER: 127.0.0.1<span style="color: #666666; font-style: italic;">#53(127.0.0.1)</span>
...</pre></td></tr></table></div>

<p><strong>Dominio como argumento y usando un name server específico</strong></p>
<p>El comando anterior usaba el <strong>DNS local especificado en /etc/resolv.conf (127.0.0.1)</strong> para solicitar el registro A del dominio, en este caso vamos a hacer la consulta contra un<strong> NS externo</strong>, el de google por ejemplo (8.8.8.8). Se indica con la IP/nombre del servidor precedida de @. Se puede ver en la sección final como se especifica el servidor que utilizamos para la query (negrita). La respuesta debería ser la misma que los servidores autoritativos del dominio, en caso contrario podría haber envenenamiento DNS, DNS spoofing…:</p>

<div class="wp_codebox"><table><tr id="p903201"><td class="code" id="p903code201"><pre class="bash" style="font-family:monospace;">$ dig <span style="color: #000000; font-weight: bold;">@</span>8.8.8.8 rm-rf.es
; DiG 9.8.1-P1 <span style="color: #000000; font-weight: bold;">@</span>8.8.8.8 rm-rf.es
; <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span> server found<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">;;</span> global options: +cmd
<span style="color: #000000; font-weight: bold;">;;</span> Got answer:
<span style="color: #000000; font-weight: bold;">;;</span> <span style="color: #660033;">-HEADER-</span> opcode: QUERY, status: NOERROR, <span style="color: #c20cb9; font-weight: bold;">id</span>: <span style="color: #000000;">29315</span>
<span style="color: #000000; font-weight: bold;">;;</span> flags: qr rd ra; QUERY: <span style="color: #000000;">1</span>, ANSWER: <span style="color: #000000;">1</span>, AUTHORITY: <span style="color: #000000;">0</span>, ADDITIONAL: <span style="color: #000000;">0</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> QUESTION SECTION:
;rm-rf.es. IN A
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> ANSWER SECTION:
rm-rf.es. <span style="color: #000000;">4315</span> IN A 93.93.112.55
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> Query <span style="color: #000000; font-weight: bold;">time</span>: <span style="color: #000000;">64</span> msec
<span style="color: #000000; font-weight: bold;">;;</span> SERVER: 8.8.8.8<span style="color: #666666; font-style: italic;">#53(8.8.8.8) ...</span></pre></td></tr></table></div>

<p><strong>Especificar el registro (A, NS, MX, CNAME…) a consultar</strong></p>
<p>Como decía antes, por defecto se consulta el registro A del dominio, pero podemos <strong>especificar el tipo de registro que queramos</strong> (ANY, NS, A, MX, SIG,SOA…):</p>

<div class="wp_codebox"><table><tr id="p903202"><td class="code" id="p903code202"><pre class="bash" style="font-family:monospace;">$ dig MX <span style="color: #000000; font-weight: bold;">@</span>8.8.8.8 rm-rf.es 
; DiG 9.8.1-P1 MX <span style="color: #000000; font-weight: bold;">@</span>8.8.8.8 rm-rf.es
; <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span> server found<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">;;</span> global options: +cmd
<span style="color: #000000; font-weight: bold;">;;</span> Got answer:
<span style="color: #000000; font-weight: bold;">;;</span> <span style="color: #660033;">-HEADER-</span> opcode: QUERY, status: NOERROR, <span style="color: #c20cb9; font-weight: bold;">id</span>: <span style="color: #000000;">43941</span>
<span style="color: #000000; font-weight: bold;">;;</span> flags: qr rd ra; QUERY: <span style="color: #000000;">1</span>, ANSWER: <span style="color: #000000;">1</span>, AUTHORITY: <span style="color: #000000;">0</span>, ADDITIONAL: <span style="color: #000000;">0</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> QUESTION SECTION:
;rm-rf.es. IN MX
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> ANSWER SECTION:
rm-rf.es. <span style="color: #000000;">14400</span> IN MX <span style="color: #000000;">10</span> rm-rf.es.
<span style="color: #000000; font-weight: bold;">;;</span> Query <span style="color: #000000; font-weight: bold;">time</span>: <span style="color: #000000;">105</span> msec
<span style="color: #000000; font-weight: bold;">;;</span> SERVER: 8.8.8.8<span style="color: #666666; font-style: italic;">#53(8.8.8.8)</span>
<span style="color: #000000; font-weight: bold;">;;</span> WHEN: Mon Sep <span style="color: #000000;">10</span> <span style="color: #000000;">23</span>:06:<span style="color: #000000;">25</span> <span style="color: #000000;">2012</span>
<span style="color: #000000; font-weight: bold;">;;</span> MSG SIZE rcvd: <span style="color: #000000;">42</span></pre></td></tr></table></div>

<p><strong>Consultar todos los registros de la zona DNS</strong> En lugar de especificar el tipo de registro a mostrar (A, MX, CNAME, AAAA…) podemos decir directamente que consulte todos los que se sirven en la zona DNS del dominio con el parámetero <strong>ANY</strong>:</p>

<div class="wp_codebox"><table><tr id="p903203"><td class="code" id="p903code203"><pre class="bash" style="font-family:monospace;">$ dig ANY google.com
; DiG 9.8.1-P1 <span style="color: #000000; font-weight: bold;">&amp;</span>lt;<span style="color: #000000; font-weight: bold;">&amp;</span>lt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; ANY google.com
<span style="color: #000000; font-weight: bold;">;;</span> global options: +cmd
<span style="color: #000000; font-weight: bold;">;;</span> Got answer:
<span style="color: #000000; font-weight: bold;">;;</span> <span style="color: #660033;">-HEADER-</span> opcode: QUERY, status: NOERROR, <span style="color: #c20cb9; font-weight: bold;">id</span>: <span style="color: #000000;">13347</span>
<span style="color: #000000; font-weight: bold;">;;</span> flags: qr rd ra; QUERY: <span style="color: #000000;">1</span>, ANSWER: <span style="color: #000000;">22</span>, AUTHORITY: <span style="color: #000000;">0</span>, ADDITIONAL: <span style="color: #000000;">0</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> QUESTION SECTION:
;google.com. IN ANY
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> ANSWER SECTION:
google.com. <span style="color: #000000;">2778</span> IN TXT <span style="color: #ff0000;">&quot;v=spf1 include:_netblocks.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all&quot;</span>
google.com. <span style="color: #000000;">258</span> IN A 173.194.34.225
google.com. <span style="color: #000000;">258</span> IN A 173.194.34.230
google.com. <span style="color: #000000;">258</span> IN A 173.194.34.224
...
...
google.com. <span style="color: #000000;">258</span> IN A 173.194.34.229
google.com. <span style="color: #000000;">32168</span> IN NS ns4.google.com.
google.com. <span style="color: #000000;">32168</span> IN NS ns1.google.com.
google.com. <span style="color: #000000;">32168</span> IN NS ns3.google.com.
google.com. <span style="color: #000000;">32168</span> IN NS ns2.google.com.
google.com. <span style="color: #000000;">56</span> IN AAAA 2a00:<span style="color: #000000;">1450</span>:<span style="color: #000000;">4003</span>:<span style="color: #000000;">802</span>::<span style="color: #000000;">1007</span>
google.com. <span style="color: #000000;">326</span> IN MX <span style="color: #000000;">20</span> alt1.aspmx.l.google.com.
google.com. <span style="color: #000000;">326</span> IN MX <span style="color: #000000;">30</span> alt2.aspmx.l.google.com.
google.com. <span style="color: #000000;">326</span> IN MX <span style="color: #000000;">50</span> alt4.aspmx.l.google.com.
google.com. <span style="color: #000000;">326</span> IN MX <span style="color: #000000;">40</span> alt3.aspmx.l.google.com.
google.com. <span style="color: #000000;">326</span> IN MX <span style="color: #000000;">10</span> aspmx.l.google.com.
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> Query <span style="color: #000000; font-weight: bold;">time</span>: <span style="color: #000000;">43</span> msec
<span style="color: #000000; font-weight: bold;">;;</span> SERVER: 127.0.0.1<span style="color: #666666; font-style: italic;">#53(127.0.0.1)</span></pre></td></tr></table></div>

<p><strong>Hacer debug con el parámetro trace</strong></p>
<p>El parámetro “<strong>+trace</strong>” es muy útil para hacer debug ante problemas de resolución DNS ya que permite ver la<strong>traza y saltos de la petición hasta que llega al servidor autoritativo</strong> que ofrece la respuesta del registro:</p>

<div class="wp_codebox"><table><tr id="p903204"><td class="code" id="p903code204"><pre class="bash" style="font-family:monospace;">$ dig +trace rm-rf.es
; DiG 9.8.1-P1 +trace rm-rf.es
<span style="color: #000000; font-weight: bold;">;;</span> global options: +cmd
.			<span style="color: #000000;">103105</span>	IN	NS	f.root-servers.net.
.			<span style="color: #000000;">103105</span>	IN	NS	g.root-servers.net.
.			<span style="color: #000000;">103105</span>	IN	NS	h.root-servers.net.
...
...
.			<span style="color: #000000;">103105</span>	IN	NS	e.root-servers.net.
<span style="color: #000000; font-weight: bold;">;;</span> Received <span style="color: #000000;">500</span> bytes from 127.0.0.1<span style="color: #666666; font-style: italic;">#53(127.0.0.1) in 523 ms</span>
&nbsp;
es.			<span style="color: #000000;">172800</span>	IN	NS	a.nic.es.
es.			<span style="color: #000000;">172800</span>	IN	NS	f.nic.es.
es.			<span style="color: #000000;">172800</span>	IN	NS	ns1.cesca.es.
es.			<span style="color: #000000;">172800</span>	IN	NS	ns3.nic.fr.
es.			<span style="color: #000000;">172800</span>	IN	NS	ns15.communitydns.net.
es.			<span style="color: #000000;">172800</span>	IN	NS	ns-ext.nic.cl.
es.			<span style="color: #000000;">172800</span>	IN	NS	sns-pb.isc.org.
<span style="color: #000000; font-weight: bold;">;;</span> Received <span style="color: #000000;">454</span> bytes from 192.203.230.10<span style="color: #666666; font-style: italic;">#53(192.203.230.10) in 490 ms</span>
&nbsp;
rm-rf.es.		<span style="color: #000000;">86400</span>	IN	NS	dns2.sistema-dns.com.
rm-rf.es.		<span style="color: #000000;">86400</span>	IN	NS	dns1.sistema-dns.com.
<span style="color: #000000; font-weight: bold;">;;</span> Received <span style="color: #000000;">79</span> bytes from 84.88.0.3<span style="color: #666666; font-style: italic;">#53(84.88.0.3) in 145 ms</span>
&nbsp;
rm-rf.es.		<span style="color: #000000;">14400</span>	IN	A	93.93.112.55
rm-rf.es.		<span style="color: #000000;">14400</span>	IN	NS	dns2.sistema-dns.com.
rm-rf.es.		<span style="color: #000000;">14400</span>	IN	NS	dns1.sistema-dns.com.
<span style="color: #000000; font-weight: bold;">;;</span> Received <span style="color: #000000;">127</span> bytes from 93.93.118.80<span style="color: #666666; font-style: italic;">#53(93.93.118.80) in 47 ms</span></pre></td></tr></table></div>

<p><strong>Resolución inversa (IP -&gt; nombre)</strong></p>
<p>Para realizar consultas de <strong>reverse DNS</strong> tenemos el parámetro -x:</p>

<div class="wp_codebox"><table><tr id="p903205"><td class="code" id="p903code205"><pre class="bash" style="font-family:monospace;">$ dig <span style="color: #660033;">-x</span> 8.8.8.8 
; DiG 9.8.1-P1  <span style="color: #660033;">-x</span> 8.8.8.8
<span style="color: #000000; font-weight: bold;">;;</span> global options: +cmd
<span style="color: #000000; font-weight: bold;">;;</span> Got answer:
<span style="color: #000000; font-weight: bold;">;;</span> <span style="color: #660033;">-HEADER-</span> opcode: QUERY, status: NOERROR, <span style="color: #c20cb9; font-weight: bold;">id</span>: <span style="color: #000000;">51972</span>
<span style="color: #000000; font-weight: bold;">;;</span> flags: qr rd ra; QUERY: <span style="color: #000000;">1</span>, ANSWER: <span style="color: #000000;">1</span>, AUTHORITY: <span style="color: #000000;">0</span>, ADDITIONAL: <span style="color: #000000;">0</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> QUESTION SECTION:
;8.8.8.8.in-addr.arpa. IN PTR
&nbsp;
<span style="color: #000000; font-weight: bold;">;;</span> ANSWER SECTION:
8.8.8.8.in-addr.arpa. <span style="color: #000000;">70159</span> IN PTR google-public-dns-a.google.com.
...</pre></td></tr></table></div>

<p><strong>Otras opciones de consulta</strong></p>
<p>Para ver el resto de opciones de consulta es mejor directamente revisar la página man, básicamente nos permiden indicar como se va a visualizar el resultado de la consulta (eliminar información secundaria por ejemplo con la opción +nocmd), establecer timeouts, especificar el uso de TCP o UDP, flags de consulta, etc. Todas llevan el signo + delante, y se resetean con añadiendo “no” después del “+”</p>

<div class="wp_codebox"><table><tr id="p903206"><td class="code" id="p903code206"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">man</span> dig
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>tcp
           Use <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">do</span> not use<span style="color: #7a0874; font-weight: bold;">&#93;</span> TCP when querying name servers. The default behavior is to use UDP unless an AXFR or IXFR query is requested,
           <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #c20cb9; font-weight: bold;">which</span> <span style="color: #000000; font-weight: bold;">case</span> a TCP connection is used.
&nbsp;
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>vc
           Use <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">do</span> not use<span style="color: #7a0874; font-weight: bold;">&#93;</span> TCP when querying name servers. This alternate syntax to +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>tcp is provided <span style="color: #000000; font-weight: bold;">for</span> backwards compatibility. The
           <span style="color: #ff0000;">&quot;vc&quot;</span> stands <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #ff0000;">&quot;virtual circuit&quot;</span>.
&nbsp;
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>ignore
           Ignore truncation <span style="color: #000000; font-weight: bold;">in</span> UDP responses instead of retrying with TCP. By default, TCP retries are performed.
&nbsp;
       +<span style="color: #007800;">domain</span>=somename
           Set the search list to contain the single domain somename, <span style="color: #c20cb9; font-weight: bold;">as</span> <span style="color: #000000; font-weight: bold;">if</span> specified <span style="color: #000000; font-weight: bold;">in</span> a domain directive <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>resolv.conf, and
           <span style="color: #7a0874; font-weight: bold;">enable</span> search list processing <span style="color: #c20cb9; font-weight: bold;">as</span> <span style="color: #000000; font-weight: bold;">if</span> the +search option were given.
&nbsp;
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>search
           Use <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">do</span> not use<span style="color: #7a0874; font-weight: bold;">&#93;</span> the search list defined by the searchlist or domain directive <span style="color: #000000; font-weight: bold;">in</span> resolv.conf <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">if</span> any<span style="color: #7a0874; font-weight: bold;">&#41;</span>. The search list is not
           used by default.
&nbsp;
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>showsearch
           Perform <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">do</span> not perform<span style="color: #7a0874; font-weight: bold;">&#93;</span> a search showing intermediate results.
&nbsp;
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>defname
           Deprecated, treated <span style="color: #c20cb9; font-weight: bold;">as</span> a synonym <span style="color: #000000; font-weight: bold;">for</span> +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>search
&nbsp;
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>aaonly
           Sets the <span style="color: #ff0000;">&quot;aa&quot;</span> flag <span style="color: #000000; font-weight: bold;">in</span> the query.
&nbsp;
       +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>aaflag
           A synonym <span style="color: #000000; font-weight: bold;">for</span> +<span style="color: #7a0874; font-weight: bold;">&#91;</span>no<span style="color: #7a0874; font-weight: bold;">&#93;</span>aaonly.
...
...
...
...</pre></td></tr></table></div>

<p>Con estos ejemplos e información ya podemos comenzar a hacer un buen uso del comando dig para resolver problemas relacionados con DNS.</p>
<p>vía: <a title="http://rm-rf.es/como-usar-el-comando-dig-ejemplos" href="http://rm-rf.es/como-usar-el-comando-dig-ejemplos">http://rm-rf.es/como-usar-el-comando-dig-ejemplos</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/como-usar-el-comando-dig-ejemplos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo usar el comando ip en Linux (ejemplos vs ifconfig)</title>
		<link>http://miguelcarmona.com/notas-y-recortes/como-usar-el-comando-ip-en-linux-ejemplos-vs-ifconfig</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/como-usar-el-comando-ip-en-linux-ejemplos-vs-ifconfig#respond</comments>
		<pubDate>Tue, 02 Oct 2012 17:26:58 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=898</guid>
		<description><![CDATA[El comando ip, que forma parte de la iproute2 suite parece ser que es el sustituto de ifconfig, pero de momento ifconfig sigue entre nosotros, y creo que hasta que no desaparezca no dejaremos de usarlo (por comodidad, vagancia o desconocimiento del nuevo). Vamos a ver algunos ejemplos de uso del comando ip para comenzar a familiarizarnos con él [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>El comando <strong>ip</strong>, que forma parte de la <strong>iproute2 suite</strong> parece ser que es el sustituto de <strong>ifconfig</strong>, pero de momento ifconfig sigue entre nosotros, y creo que hasta que no desaparezca no dejaremos de usarlo (por comodidad, vagancia o desconocimiento del nuevo).</p>
<p>Vamos a ver algunos ejemplos de uso del comando ip para comenzar a familiarizarnos con él y ver como realizariamos las tareas más comunes que hacemos con ifconfig.</p>
<h3>Ver interfaces de red y su configuración</h3>
<p>El comando <strong>ip addr list</strong> vendría a ser lo mismo que ejecutar <strong>ifconfig</strong>. Se puede ejecutar con el mismo resultado como <strong>ip address show</strong> o <strong>ip address list</strong>:<span id="more-898"></span></p>
<pre>~$ <strong>ip addr list</strong>
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::21b:24ff:fed5:1899/64 scope link 
       valid_lft forever preferred_lft forever
3: eth2:  mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::21a:73ff:fed1:6745/64 scope link 
       valid_lft forever preferred_lft forever</pre>
<p>También podemos usar el comando ip link show para ver la<strong> información en capa 2 (data link layer)</strong> de las interfaces de red del sistema:</p>
<pre>~$ <strong>ip link show</strong>
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
3: eth2: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff</pre>
<h3>Activar/desactivar interfaces de red</h3>
<p>Para habilitar o deshabilitar una interfaz de red seguiremos utilizando <strong>ip link</strong>:</p>
<pre>~# <strong>ip link set eth2 down</strong>
~# i<strong>p addr list eth2</strong>
3: eth2:  mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff

~# <strong>ip link set eth2 up</strong>
~# <strong>ip addr list eth2</strong>
3: eth2:  mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::21a:73ff:fed1:6745/64 scope link tentative 
       valid_lft forever preferred_lft forever</pre>
<p>Os he mostrado en el ejemplo como al levantar o tirar la interfaz desaparece la flag de UP en el <strong>ip addr list</strong>. En ifconfig lo hacíamos del siguiente modo:</p>
<pre>~# <strong>ifconfig eth2 down</strong>
~# <strong>ifconfig eth2 up</strong></pre>
<p>&nbsp;</p>
<h3>Cambiar características de la interfaz</h3>
<p>Con ip link también podemos realizar modificaciones en las características o flags de la interfaz, como por ejemplo configurar el <strong>modo promiscuo, multicast, arp, dynamic o allmulti</strong>. Se utilizan los valores <strong>on|off. </strong>En esta otra entrada vimos como hacerlo con ifconfig: <a title="Configurar tarjeta de red en modo promiscuo" href="http://rm-rf.es/configurar-tarjeta-de-red-en-modo-promiscuo/">configurar tarjeta de red en modo promiscuo</a>:</p>
<pre>~# <strong>ip link set dev eth0 promisc on</strong>
~# <strong>ip addr list eth0</strong>
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::21b:24ff:fed5:1899/64 scope link 
       valid_lft forever preferred_lft forever

~# <strong>ip link set dev eth0 promisc off</strong>
~# <strong>ip addr list eth0</strong>
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1b:24:d5:18:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::21b:24ff:fed5:1899/64 scope link 
       valid_lft forever preferred_lft forever</pre>
<h3>Configurar una IP para la interfaz</h3>
<p>Con <strong>ip addr add</strong> podemos especificar la IP, máscara (también en formato CIDR como vemos a continuación y la IP de broadcast:</p>
<pre>~# <strong>ip addr add 10.0.0.100/24 broadcast 10.0.0.255 dev eth2</strong>
~# <strong>ip addr list eth2</strong>
3: eth2:  mtu 1500 qdisc pfifo_fast state DORMANT qlen 1000
    link/ether 00:1a:73:d1:67:45 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global eth2
    inet6 fe80::21a:73ff:fed1:6745/64 scope link 
       valid_lft forever preferred_lft forever</pre>
<p>Y para eliminar la IP:</p>
<p>~# <strong>ip addr del 10.0.0.100/24 dev eth2</strong></p>
<p>También podemos crear alias en la interfaz:</p>
<pre>~# <strong>ip addr add 10.0.0.101/24 broadcast 10.0.0.255 dev eth2:1</strong></pre>
<h3>Cambiar la MTU de la interfaz</h3>
<pre>~# <strong>ip link set dev eth2 mtu 9000</strong></pre>
<h3>Ver la tabla de rutas</h3>
<pre>~# <strong>ip route show</strong>
default via 192.168.1.1 dev eth0  proto static 
169.254.0.0/16 dev eth0  scope link  metric 1000 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.128  metric 1</pre>
<h3>Ver la tabla de ARP Cache</h3>
<p>De todas las interfaces:</p>
<pre>~# <strong>ip neighbor show</strong>
192.168.1.1 dev eth0 lladdr 64:68:0c:6b:5f:7e REACHABLE</pre>
<p>De una interfaz concreta:</p>
<pre>~# <strong>ip neighbor show dev eth0</strong>
192.168.1.1 lladdr 64:68:0c:6b:5f:7e REACHABLE</pre>
<p>Esto es sólo una pequeña muestra de lo que ofrece el <strong>comando ip en GNU/Linux</strong> y la suite <strong>iproute2</strong> en general. Os recomiendo revisar la página man para profundizar en el tema.</p>
<pre>$ man ip</pre>
<div> vía: <a href="http://rm-rf.es/como-usar-el-comando-ip-en-linux-ejemplos-vs-ifconfig/">http://rm-rf.es/como-usar-el-comando-ip-en-linux-ejemplos-vs-ifconfig/</a></div>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/como-usar-el-comando-ip-en-linux-ejemplos-vs-ifconfig/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Query log de MySQL (general log)</title>
		<link>http://miguelcarmona.com/notas-y-recortes/query-log-de-mysql-general-log</link>
		<comments>http://miguelcarmona.com/notas-y-recortes/query-log-de-mysql-general-log#respond</comments>
		<pubDate>Tue, 02 Oct 2012 11:26:20 +0000</pubDate>
		<dc:creator><![CDATA[miguelcarmona]]></dc:creator>
				<category><![CDATA[Notas y recortes]]></category>

		<guid isPermaLink="false">http://miguelcarmona.com/?p=891</guid>
		<description><![CDATA[En MySQL podemos habilitar un log de queries ejecutadas en el servidor llamado “general log“. Aunque no es muy recomendable tenerlo habilitado normalmente, puede resultar útil en momentos puntuales. Vamos a ver su funcionamiento: Las variables que controlan el general log son las siguientes: general_log: Indicamos si queremos habilitar o no dicho log general_log_file: Indicamos el path del fichero dónde queremos [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>En <strong>MySQL</strong> podemos habilitar un <strong>log de queries ejecutadas en el servidor</strong> llamado “<strong>general log</strong>“. Aunque no es muy recomendable tenerlo habilitado normalmente, puede resultar útil en momentos puntuales. Vamos a ver su funcionamiento:</p>
<p>Las variables que controlan el <strong>general log</strong> son las siguientes:</p>
<ul>
<li><strong>general_log</strong>: Indicamos si queremos habilitar o no dicho log</li>
<li><strong>general_log_file</strong>: Indicamos el path del fichero dónde queremos el log</li>
</ul>
<p>Mediante <strong>SHOW VARIABLES</strong> podemos verlos:</p>
<pre>mysql&gt; show variables like 'general_log%';
+------------------+--------------------------+
| Variable_name    | Value                    |
+------------------+--------------------------+
| general_log      | OFF                      | 
| general_log_file | /var/log/mysql/query.log | 
+------------------+--------------------------+
2 rows in set (0.00 sec)</pre>
<p>También a partir de MySQL 5.1 tenemos que tener en cuenta el valor de “<strong>log_output</strong>“, ya que podemos indicar que en lugar de un fichero se guarde en una tabla:<span id="more-891"></span></p>
<pre>mysql&gt; show variables like 'log_out%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  | 
+---------------+-------+
1 row in set (0.00 sec)</pre>
<p>Mediante <strong>SET GLOBAL</strong> podemos <strong>habilitar el general log</strong>:</p>
<pre>mysql&gt; set global general_log=1;
Query OK, 0 rows affected (0.10 sec)</pre>
<p>En el fichero veremos como <strong>se guardan tanto las queries como las conexiones</strong>:</p>
<pre>100925 19:19:53	46223 Query	select version()
100925 19:19:57	46223 Quit	
<strong>100925 19:20:14 46224 Connect root@localhost on </strong>
		46224 Query	select @@version_comment limit 1
100925 19:20:16	46224 Query	select version()
<strong>100925 19:20:17 46224 Query select version() 46224 Query select version()</strong>
100925 19:20:18	46224 Quit</pre>
<p>Por otro lado, tenemos también la variable de sessión <strong>sql_log_off</strong>, la cual tenemos por defecto a <strong>OFF</strong> indicando que no deshabilita por defecto el log. Podemos ver su funcionamiento con la siguiente <strong>sesión de ejemplo</strong>:</p>
<pre>mysql&gt; select "sql_log_off en off";
+--------------------+
| sql_log_off en off |
+--------------------+
| sql_log_off en off |
+--------------------+
1 row in set (0.00 sec)

mysql&gt; set session sql_log_off=1;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; select "sql_log_off en on";
+-------------------+
| sql_log_off en on |
+-------------------+
| sql_log_off en on |
+-------------------+
1 row in set (0.00 sec)</pre>
<p>En el <strong>log</strong> quedaría:</p>
<pre>100925 19:21:41	46226 Query	select "sql_log_off en off"
100925 19:21:54	46226 Query	set session sql_log_off=1</pre>
<p>Por lo que <strong>veríamos que se deshabilita el log</strong>, pero no las queries que se ejecuten a posteriori. No resulta muy problemática, ya que esta variable únicamente se puede modificar si el usuario tiene el privilegio <strong>SUPER</strong>.</p>
<p>&nbsp;</p>
<p>vía: <a href="http://systemadmin.es/2012/09/query-log-de-mysql-general-log">http://systemadmin.es/2012/09/query-log-de-mysql-general-log</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miguelcarmona.com/notas-y-recortes/query-log-de-mysql-general-log/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
