En el artículo anterior (http://enavas.blogspot.com/2012/02/hostapdfreeradius-en-debian.html) hablaba de sustituir la interfaz eth0 por wlan0 para dar servicio de acceso wifi. Esto está bien para un aula en el que se van a sustituir los terminales por portátiles. Pero, ¿y si lo que quiero es que el aula siga dando servicio a los terminales (en la interfaz eth0) pero también quiero que de servicio de acceso wifi al mismo tiempo (en la interfaz wlan0)?
Para conseguirlo, habría que hacer lo siguiente:
1) Fichero /etc/network/interfaces
Me aseguro de que ya tengo definido el interfaz wlan0 en el fichero /etc/network/interfaces:
1) Fichero /etc/network/interfaces
Me aseguro de que ya tengo definido el interfaz wlan0 en el fichero /etc/network/interfaces:
a22-pro:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo eth0 eth3 wlan0
iface lo inet loopback
iface eth3 inet dhcp
ifup eth3
post-up /usr/sbin/ethtool -s $IFACE wol g
post-down /usr/sbin/ethtool -s $IFACE wol g
iface eth0 inet static
address 192.168.0.254
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254
iface wlan0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.2542) Fichero /etc/default/dhcp3-server
Me aseguro de que dhcp3-server escucha en las dos interfaces: eth0 y wlan0:
a22-pro:~# cat /etc/default/dhcp3-server
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0 wlan0"
3) Fichero /etc/dhcp3/dhcpd.conf
Modifico el fichero de configuración del servidor dhcp y le añado al final las líneas que he resaltado en negrita:
a22-pro:~# cat /etc/dhcp3/dhcpd.conf
ldap-server "ldap";
ldap-port 389;
ldap-base-dn "dc=instituto,dc=extremadura,dc=es";
ldap-dhcp-server-cn "ldap";
ldap-debug-file "/var/log/dhcp-ldap-startup.log";
ldap-method dynamic;
ddns-update-style none;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.253;
option routers 192.168.1.254;
option broadcast-address 192.168.1.255;
option domain-name-servers 172.19.144.3;
option domain-name "valledeljerte3";
}
Con las líneas resaltadas en negrita defino la configuración de red que se va a asignar a las máquinas que se conecten vía wifi al servidor que estamos configurando como punto de acceso. Estas máquinas estarán en la red 192.168.1.X.
En cuanto a los terminales, se les seguirá asignando direcciones del rango 192.168.0.X, tal y como está definido en el servidor de ldap.
4) Tomamos como modelo el fichero /etc/init.d/enable-nat
Como en los servidores de terminales ya tenemos un fichero que activa nat para los clientes detrás de la interfaz eth0, lo copiamos y modificamos para hacer nat para los clientes que se conecten a través de wlan0:
a22-pro:~# cp /etc/init.d/enable-nat /etc/init.d/enable-nat-wifi
5) Fichero /etc/init.d/enable-nat-wifi
Modificamos el fichero enable-nat-wifi con los valores que se muestran en negrita. Este fichero activará el enmascaramiento de los paquetes que vengan de la red 192.168.1.X y vayan dirigidos a la interfaz eth3.
a22-pro:~# cat /etc/init.d/enable-nat-wifi
#! /bin/sh
### BEGIN INIT INFO
# Provides: enable-nat-wifi
# Required-Start: $remote_fs
# Should-Start: $network
# Required-Stop: $remote_fs
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Enabling NAT for clients behind wlan0
# Description: Enabling Network Address Translation for clients
# sitting in the thin client network behind wlan0
### END INIT INFO
IPTABLES=/sbin/iptables
NETWORK_TO_NAT=
OUTSIDE_IF=eth3
# Only enable by default if LTSP or lessdisks is installed
if [ -e /opt/ltsp -o -d /var/lib/lessdisks ] ; then
NETWORK_TO_NAT="192.168.1.0/24"
fi
if [ -f /etc/default/enable-nat-wifi ] ; then
. /etc/default/enable-nat-wifi
fi
# Bail out if no iptables binary or no configuration
[ -x ${IPTABLES} -a "$NETWORK_TO_NAT" ] || exit 0
do_status() {
$IPTABLES -L -t nat |grep -A3 POSTROUTING
}
is_enabled() {
if do_status | grep -q "$NETWORK_TO_NAT" ; then
true
else
false
fi
}
do_start() {
if is_enabled ; then
echo "NAT for clients on network $NETWORK_TO_NAT already enabled."
else
echo "Enabling NAT for clients on network $NETWORK_TO_NAT."
$IPTABLES -t nat -A POSTROUTING -s $NETWORK_TO_NAT -o $OUTSIDE_IF -j MASQUERADE
fi
# Enable IP-forwarding if it isn't enabled already.
if [ 0 = "`cat /proc/sys/net/ipv4/ip_forward`" ]; then
echo "Enabling IPv4 forwarding."
echo 1 > /proc/sys/net/ipv4/ip_forward
fi
do_status
}
do_stop() {
if is_enabled ; then
echo "Disabling NAT for clients on network $NETWORK_TO_NAT."
$IPTABLES -F -t nat
else
echo "NAT for clients on network $NETWORK_TO_NAT already disabled."
fi
do_status
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart|force-reload)
do_stop
do_start
;;
status)
do_status
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}"
exit 2
;;
esac
exit 0
6) Activar servicio enable-nat-wifi
Por último, pero no menos importante, activamos el servicio que acabamos de crear mediante insserv.
# insserv /etc/init.d/enable-nat-wifi
insserv leerá las cabeceras del archivo enable-nat-wifi y creará los enlaces necesarios para iniciar y parar el servicio en los niveles definidos en dichas cabeceras.
Naturalmente, reiniciaremos los servicios oportunos y habremos terminado.
2 comentarios:
y en esta configuración, llegaste a probar si AulaLinex o ControlAula detectaban los equipos conectados por la wifi?
Hola, Carlos:
Preparé esta configuración para dar servicio inalámbrico a profesores aprovechando los servidores LTSP en aulas de terminales, para lo que no necesitaba usar Aulalinex ni Controlaula.
Publicar un comentario en la entrada