Hola, nos encontramos nuevamente, esta vez para entregarles una tercera versión (aquí la primera y la segunda)de un método para compartir nuestra la conexión de internet hacia otras máquinas o inclusive toda un LAN. Esta versión se destacará por su extrema simpleza, pero antes debemos asumir que…

  1. Estamos conectados a Internet.
  2. Tenemos una interfaz de red libre.
  3. Tenemos algún Linux con Gnome y NetworkManager 0.7 o mayor (a partir de Ubuntu 8.10 esto es posible)

Lo único que debemos hacer es crear una conexión nueva haciendo click derecho en el icono del Network Manager y seleccionar “Editar las conexiones…” en el menú contextual.

Con esto se nos desplegará la siguiente ventana…

En dicha ventana en la solapa “Cableada” damos click en el botón”Añadir”, para crear la nueva conexión encargada de brindar internet a la máquina o LAN deseadas.

.

.

..


.

Al momento de crear, necesitaremos ingresar un nombre de la conexión, el cual será indistinto, en este caso le puse “Compartida” y en la solapa de “Ajustes de IPv4” seleccionamos el método “Compartida con otros equipos”. Solo queda conectar las otras PCs y seleccionar la conexión haciendo click en el icono del Network Manager como muestra la imagen a continuación y seleccionar la conexión “Compartida”. Buen provecho.

.

Anuncios

En un post anterior escribimos un tutorial para compartir la conexión a internet mediante Firestarter,  ahora quisiera lograr lo mismo pero sin tener que instalar nada, solo con comandos en la consola.

Antes trataré de hacer una introducción para saber de que estamos hablando. Supongamos que tenemos contratada una conexión a internet, tenemos nuestra máquina con Ubuntu (supongo que con cualquier distribución debería funcionar) conectada directamente a internet y queremos darle el servicio a otras máquinas, con caulquier sistema operativo, que deberán conectada en red con esta, para ello necesitamos que nuestro Ubuntu realice las siguientes tareas

  1. Tenga configuradas dos interfaces, una conectada a internet y otra a la red interna (pueden ser dos interfaces físicas o solo una, con un alias).
  2. Habilitar NAT.
  3. Habilitar el ruteo de paquetes.

Luego en los clientes debemos configurar las interfaces de red con los siguiente datos

  1. Dirección IP y máscara de red.
  2. Dirección del gateway.
  3. Dirección servidor DNS.

Procedamos a configurar nuestro gateway de internet (Ubuntu).

  • Configuración de las interfaces

Antes que nada, listaremos las interfaces de red en el equipo que hará de gateway.

ifconfig

Nos arrojará algo así

eth0 Link encap:Ethernet  direcciónHW 00:08:54:d5:b6:15
dirección inet6: fe80::208:54ff:fed5:b615/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST  MTU:1500  Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:9
colisiones:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)
Interrupción:18 Dirección base: 0xa000

eth1 Link encap:Ethernet  direcciónHW 00:14:85:d1:56:f1
dirección inet6: fe80::214:85ff:fed1:56f1/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST  MTU:1500  Métrica:1
RX packets:213659 errors:0 dropped:0 overruns:0 frame:0
TX packets:86905 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:97185066 (97.1 MB)  TX bytes:35852528 (35.8 MB)
Interrupción:20 Dirección base: 0x8000

lo Link encap:Bucle local
inet dirección:127.0.0.1  Máscara:255.0.0.0
dirección inet6: ::1/128 Alcance:Anfitrión
ARRIBA LOOPBACK CORRIENDO  MTU:16436  Métrica:1
RX packets:280 errors:0 dropped:0 overruns:0 frame:0
TX packets:280 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:11104 (11.1 KB)  TX bytes:11104 (11.1 KB)

ppp0 Link encap:Protocolo punto a punto
inet dirección:201.234.173.139  P-t-P:201.234.173.3  Máscara:255.255.255.255
ARRIBA PUNTO A PUNTO CORRIENDO NOARP MULTICAST  MTU:1492  Métrica:1
RX packets:90905 errors:0 dropped:0 overruns:0 frame:0
TX packets:86416 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:3
RX bytes:84076601 (84.0 MB)  TX bytes:33574174 (33.5 MB)

En donde eth0, eth1, lo y ppp0 son las interfaces de red, en mi caso ppp0 es la que está conectada a internet y eth1 la que proveería de internet a las demás máquinas (red interna). Puede ser que este no sea el caso de todos, podría darse que eth0 sea la interfaz conectada a internet o eth1, todo dependerá con que tipo de conexión cuentes. Debo aclarar que eth0 y ppp0 es la misma interfaz física (placa de red), mientras que eth1 es otra placa de red. Como ppp0 ya está configurada solo deberemos configurar eth1 asignándole una dirección IP (de la red interna) y una máscara de red, todo eso con el siguiente comando:

sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0

Podemos ver que le hemos asignado la IP 192.168.0.1 con máscara 255.255.255.0, esa dirección deber pertenecer a la red donde estarán conectadas los clientes, de manera que estos deberán tener una dirección del tipo 192.168.0.X (2 < X < 254) con la misma máscara.

Si no contáramos con dos placas de red podemos crear un alias nuestra interfase eth0, eso lo hacemos con en siguiente comando

sudo ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0

  • Habilitando NAT

Lo haremos con 3 comandos, siempre respetando como hemos configurado nuestras interfaces. Para nuestro caso sería:

sudo iptables -A FORWARD -i ppp0 -o eth1 -s 192.168.0.0/24 -m state –state NEW -j ACCEPT
sudo iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE

  • Habilitando ruteo

Lo haremos con un simple comando

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

  • Configurando los clientes

Cada cliente deberá ser configurado con una direccion IP perteneciente a la red interna de la forma 192.168.0.X, con gateway (puerta de enlace) 192.168.0.1 y con el servidor DNS que nos proporcione nuestro proovedor. Si no lo sabemos, podemos conocerlo haciendo en la maquina conectada a internet:

cat /etc/resolv.conf

Dicho comando nos arrojará algo así

# Generated by NetworkManager
nameserver 201.234.173.3
nameserver 200.55.20.52

Donde esas dos direcciones son los servidores DNS.

Todos estos comandos deben ser reaplicados cada vez que se reinicie la PC, por eso no estaría de más crear un script como el siguiente que realice todo esto de una sola vez,

#Configuramos interfaz de la red interna

sudo ifconfig eth1 192.168.0.1 netmask 255.255.255.0

#Habilitamos NAT

iptables -A FORWARD -i ppp0 -o eth1 -s 192.168.100.0/24 -m state –state NEW -j ACCEPT

iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

iptables -A POSTROUTING -t nat -j MASQUERADE

#Habilitamos ruteo de paquetes

echo 1 > /proc/sys/net/ipv4/ip_forward

Guardamos como un archivo de texto en nuestro home con el nombre “compartir” y lo ejecutamos de la siguiente manera.

sudo sh compartir

Espero te funcione. Saludos.


Apache es uno de los servidores web más utilizados en el mundo, en este post explicaré como compilar nuestro servidor desde su código fuente para poder ejecutar este con permisos de root, de esta manera podremos ejecutar comandos que requieran permisos de root a través del servidor web utilizando por ejemplo scripts CGI que nos permitiesen tocar la configuración de la red convirtiendo nuestro equipo en un router con un entorno web. Pero esto es posible si Apache tiene permisos especiales que no son “comunes” y por lo tanto hay que compilarlo de una forma particular.

Comencemos.

  1. Descargamos el código fuente de Apache 1.3.41.
  2. Lo descomprimimos en nuestra carpeta personal
  3. Mediante una terminal nos posicionamos en la carpeta recién extraída
  4. Y con estas tres lineas lo compilaremos y lo instalaremos

$ ./configure –prefix=ruta_de_instalación
$ make
$ make install

Debemos asegurarnos que tengamos permisos para escribir en ruta_de_instalación (ej /home/usuario/webserver) y de esta forma ya tendremos nuestro servidor web listo para ser configurado y levantado, aunque todavía resta darle permisos de root a nuestro servidor. Para ello debemos compilar el ejecutable que da arranque a nuestro servidor (httpd) nuevamente de la siguiente forma.

Nos dirigirnos a la carpeta /src que se encuentra en el código fuente que descomprimimos hace un momento y editamos el archivo Configuration y en la linea donde aparece

EXTRA_CFLAGS=

agregamos la linea

-DBIG_SECURITY_HOLE

(esa linea es premonitoria, ¿no?)

Quedando de la siguiente manera

EXTRA_CFLAGS=-DBIG_SECURITY_HOLE

Ahora, estando en la carpeta /src del código fuente descargado, y desde una terminal, ejecutamos

$ ./Configure
$ make

Estos comandos compilaran un ejecutable httpd ubicado en /src (en la carpeta del código fuente) el cual tendrá la particularidad de ejecutar apache en modo root.
Luego, debemos editar el archivo httpd.conf ubicado en /ruta_de_instalacion/conf/ en el cambiaremos las lineas

User nobody
Group no group

por

User root
Group root

Luego debemos copiar el ejecutable httpd generado antes a la carpeta “ruta_de_instalacion”, una vez allí, ejecutamos

$ sudo /ruta_de_instalacion/./httpd -f /ruta_de_instalacion/conf/httpd.conf

Y de esta manera estaremos sirviendo paginas web como root.

CUIDADO! De esta manera podríamos dar fácil acceso a personas no gratas, hagan esto bajo su propio riesgo.

Pasando por Infoworld me encuentro con un interesante artículo en el que comparan las versiones betas recién estrenadas de los últimos navegadores de Micro$oft (Internet Explorer 8 Beta 2) y Google (Chrome Beta 1). Aquí les extraigo algunas conclusiones.

  • IE8 consume más memoria RAM que Windows XP (Si!, más que todo el sistema operativo) pero Chrome no se queda atrás.
  • Ambos exploradores utilizan la isolación de pestañas para evitar que una de las páginas visitadas nos cuelgue toda la sesión.
  • Ambos tienen altísimos requerimientos de hardware.
  • Se nota una mejora en la velocidad respecto a navegadores anteriores.
  • JavaScript en Chrome corre mucho más rápido
  • En comparación, Chrome es más simple que IE8.

Veamos una comparación de consumos de memoria, (valores promedio y pico).

Comparacione en el consumo de memoria

Comparaciones en el consumo de memoria

A la hora de gestionar los hilos de ejecución (trhead) vemos que IE8 se “destaca”.

Seguramente pronto sabremos mucho más, pero es seguro que todavía se pueden mejorar algunas cosas.

Mas info

exoblog

infoworld

El hardware en general en las distribuciones GNU/Linux actuales suele funcionar “out of the box”, esto quiere decir que nuestro hard funcionará sin que tengamos que instalar ningún driver ya que este, seguramente, o estará en el kernel o incluido en la misma distribución. Lo podemos ver con las placas de red ethernet, los adaptadores bluetooth, los chipsets de las placas madres, placas de sonido, impresoras y demás dispositivos para los cuales solo tendremos que enchufarlos y saldrán funcionando sin instalar nada.

Pero el caso de las placas de red inalámbricas es un poquito distinto, muchas, no funcionan out of the box, y es necesario renegar un poco más.

Aquí es donde entra a jugar NDISwrapper, se trata de un programa que permite utilizar los drivers para Windows de las tarjetas de red wifi para que estas funcionen en GNU/Linux y en otros sistemas operativos.

Veamos como proseguimos, antes que nada, tenemos que asegurarnos que nuestra placa efectivamente no está funcionando, para esto, vamos a un terminal y tecleamos

iwconfig

Con este comando se listará los dispositivos de red que tenemos instalados y si en todos aparece “no wireless extensions.” tenemos que ponernos a trabajar y debemos identificar cual es el modelo de placa wifi que tenemos, para esto, en la terminal escribimos:

lspci

Comando con el cual se nos listarán los dispositivos conectados al bus PCI entre ellos nuestra bendita placa. En caso de que la nuestra sea USB, debemos ejecutar este comando

lsusb

En ambos casos nuestra placa aparecerá listada de la siguiente manera. (Ejemplo)

05:01.0 Ethernet controller: Marvell Technology Group Ltd. 88w8335 [Libertas] 802.11b/g Wireless (rev 43)

Una vez que la hemos identificado, nos dirigimos (con una conexión a internet :)) a la base de datos de los desarrolladores de NDISwrapper para ver si nuestra placa está soportada. Además, ahí nos brindarán una pequeña ayuda sobre donde conseguir el driver y algunas cositas más que nos pueden ser de utilidad.

Una vez que encontramos que nuestra placa está soportada, debemos instalarnos NDISwrapper, en el caso de Ubuntu, Debian en general.

sudo aptitude install ndiswrapper-common ndiswrapper-modules-1.9 ndiswrapper-utils-1.9

Luego conseguimos el driver para Windows de nuestra placa, el cual puede provenir de distintos orígenes, pero debería ser un archivo con extensión inf. Posicionamos el archivo en nuestro directorio personal y tipeamos

sudo ndiswrapper -i nombre_del_driver.inf

Luego para saber si se instaló correctamente hacemos

sudo ndiswrapper -l

Si todo anda bien, cargamos el módulo y el driver

sudo depmod -a

sudo modprobe ndiswrapper

sudo ndiswrapper -m


Y por último debemos editar un archivo de texto para que NDISwrapper se cargue cuando iniciamos el sistema

sudo gedit /etc/modules

Y en la ultima linea agregamos ndiswrapper

Éxitos.

Hoy, queridos amigos, aprenderemos a compartir nuestra conexión a internet. Para esto necesitaremos que nuestra PC con Ubuntu esté directamente conectada a internet, puede ser a través de un servicio adsl, una LAN u otros. Además necesitaremos que esta PC tenga dos placas de red.

Además necesitaremos instalar Firestarter y un servidor DHCP (no es indispensable) con este comando.

sudo apt-get install firestarter dhcp3-server

Ahora un poquito de teoría. En los sistemas GNU/Linux las placas de red se las llaman ethX donde X es un número que identifica a cada placa por separado, en nuestro caso tendremos dos, la eth0 que utilizaremos para conectarnos a internet y la eth1 que utilizaremos de Gateway para proveer de internet a otra máquina o incluso a una LAN entera. Procedemos entonces a configurar nuestras interfases, suponiendo que ya estamos conectados a internet a través de la eth0 no debemos tocar la configuración de esta interfase, por lo que solo deberíamos configurar la eth1, para esto debemos crear una red LAN privada asignandolé una IP a eth1 con este comando:

sudo ifconfig eth1 192.168.1.1 netmask 255.255.255.0

O desde Sistema > Administración > Red

De esa manera estamos creando la red 192.168.1.0 privada y clase C, las máquinas que “colguemos” deberán tener IP del estilo 192.168.1.Y, donde  2 < Y < 254, pero como en este ejemplo utilizaremos un servidor DHCP que asignará las IPs automáticamente no deberemos preocuparnos demasiado por esto.

Veamos ahora como compartir la conexión, vamos al menú Aplicaciones > Internet > Firestarter. Allí nos pedirá la contraseña de root, la escribimos y le damos enter y se nos desplegara un asistente para configurar nuestro firewall.

Bienvenida al asistente de Firestarter.
Bienvenida al asistente de Firestarter.

Hacemos click en Adelante.

Configuracion de la interfase conectada a internet.
Configuración de la interfase conectada a internet.

En el segundo paso deberemos indicar cual de las interfases está conectada a internet, ya habíamos predefinido que sería la eth0, en caso de tener una conexión pppoe (generalmente adsl) seleccionaremos el dispositivo pppo0, además debemos tildar la opción “Iniciar el cortafuegos al conectarse al exterior”, la opción “Dirección IP asignada vía DHCP” dependerá de nuestro servicio de internet, si tenemos adsl seguramente deberemos tildarla.

Configuración de la interfase LAN (eth1)
Configuración de la interfase LAN (eth1)

En esta instancia debemos tildar la casilla de “Activar la compartición de la conexión a internet”. Y en el “Dispositivo de red de área local” seleccionamos el eth1.

Aqui guardamos la configuracion e iniciamos el firewall

En esta última etapa tildamos la opción de “Iniciar el cortafuegos ahora” y le damos Guardar.

Una ves iniciado nos dirigimos a Editar > Preferencias > Configuraciones de red. Ahí activamos el servidor DHCP para la red local con una configuración nueva con que asigne desde la IP 192.168.1.2 hasta la 192.168.1.254 por ejemplo. Ya deberíamos tener nuestra compartida nuestra conexión a internet, solo debemos configurar los clientes. Para ello tenemos que hacer que estos tomen la dirección de red automaticamente (DHCP), esto dependerá del sistema operativo de nuestros clientes.

  • Posibles problemas

Si en algún momento nos aparece un cartel que dice algo como este

Debemos editar un archivo de texto con este comando

sudo gedit /etc/firestarter/firestarter.sh

y buscamos la siguiente linea.

MASK=`/sbin/ifconfig $IF | grep Mas | cut -d : -f 4`

y la reemplazamos por esta

MASK=`/sbin/ifconfig $IF | grep Más | cut -d : -f 4`

Y a esta

INMASK=`/sbin/ifconfig $INIF | grep Mas | cut -d : -f 4`

por esta

INMASK=`/sbin/ifconfig $INIF | grep Más | cut -d : -f 4`