Ahora configuraremos proxy transparente pero para poder comenzar previamente tenemos que configurar las tarjetas de red y el DHCP.
para configurar las tarjetas de red editar el archivo /etc/network/interfaces para que quede de la siguiente manera
auto lo eth0 eth1
iface lo inet loopback
#Configuracion para interfaz con red eth0 con internet
allow-hotplug eth0
iface eth0 inet static
address 172.16.2.111
netmask 255.255.255.0
gateway 172.16.2.1
network 172.16.2.0
broadcast 172.16.2.255
dns-nameservers 8.8.8.8 #esto también se puede configurar en /etc/resolv.conf
#Configuracion para interfaz eth1 con red lan interna privada
allow-hotplug eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
Ahora instalamos y configuramos el servidor DHCP que nos servira para proporcionar ips automaticos a las pc’s de la red lan
# aptitude install isc-dhcp-server
Configuramos el servicio de DHCP para que este disponible en la red interna y acepte las conexiones en dicha red, en este caso es la interfaz eth1, esto se configura en el archivo /etc/default/isc-dhcp-server
INTERFACES="eth1"
Ahora tenemos que modificar algunas lineas el archivo /etc/dhcpd.conf para especificar rango de ips y tiempo que se le proporcionara el ip a la maquina cliente
option domain-name "example.org";
option domain-name-servers 8.8.8.8, 4.4.4.4;
default-lease-time 600;
max-lease-time 7200;
#SubNet red lan.
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.101 192.168.2.199;
#option domain-name-servers 8.8.8.8; #similar a la parte superior
#option domain-name "example.org"; #similar a la parte superior
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
#default-lease-time 86400; #similar a la parte superior
#max-lease-time 172800; #similar a la parte superior
}
Con el servidor DHCP se puede asignar un ip especifica a una determinada mac-address, estas direcciones fijas no deben estar en la gama de las direcciones reservadas para la distribución dinámica.
host desktop {
hardware ethernet 01:23:45:67:89:10;
fixed-address 192.168.2.2;
}
host laptop {
hardware ethernet 01:23:45:67:89:11;
fixed-address 192.168.2.3;
}
Reiniciar el servicio de dhcp:
# /etc/init.d/isc-dhcp-server restart
Ahora el ultimo paso instalación y configuración de squid, procedemos a la instalacion con el siguiente comando
# aptitude install squid
Ahora vamos a hacer unos cambios en el fichero de configuración de squid (/etc/squid/squid.conf). Primero localizamos la línea con el puerto de entrada de squid (por defecto http_port 3128) y añadimos el parámetro transparente. Debe de quedarnos algo así:
http_port 3128 transparent
A continuación de esto, y en el mismo fichero, añadimos las siguientes líneas:
acl redlan src 192.168.2.0/24
http_access allow redlan
Ahora sólo nos queda configurar la máquina como router y direccionar el tráfico web (puerto 80) que recibe por el interfaz interno (eth1) al puerto 3128 que es el que usa squid. Esto lo hacemos gracias a IPtables (que vienen instaladas en Debian por defecto) el script que se detalla a continuación, se debe configurar para que se ejecute de forma automática.
#!/bin/sh
# squid server IP
SQUID_SERVER="192.168.2.1"
# Interface connected to Internet
INTERNET="eth0"
# Interface connected to LAN
LAN_IN="eth1"
# Squid port
SQUID_PORT="3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
Para guarde el anterior script nos creamos la carpeta /etc/iptables-script y dentro de ahi colocamos el script con el nombre de proxy.sh, de damos permisos de ejecución:
# chmod +x /etc/iptables-script/proxy.sh
Y le indicamos al SO que ejecute dicho script al iniciar el sistema para esto editamos el archivo /etc/rc.local, y antes de exit colocamos la siguiente linea:
sh /etc/iptables-script/proxy.sh
Tengo la duda si en la parte INTERFACES=»eth0″ talves pudiera ser INTERFACES=»eth1″, de hecho dices que deber ser la tarjeta de red eth1. Se muy poco de estos temas asi que me genera confilto que en una parte del texto pongas que es la interface eth1 y abajo aparezca INTERFACES=»eth0″.
Yo me confundi pero ya esta arreglado gracias por la correccion es como tu dices INTERFACES=»eth1″ por que esa es la red que estoy designando para la red interna
Buenos días, lo primero, enorme manual.
Lo segundo, te comento mi configuración a ver si es correcto.
Router 192.168.2.1
Proxy Server 192.168.2.2
En este caso es para configurar un wifi para un bar. El wifi lo tendría que ofrecer el router no? Y configurando en vez de eth1, wlan0, tambien saldrían los clientes a internet no??
Muy buen tuto, esta tarde lo probaré, tiene muy buena pinta, si funciona me has salvado la vida!!
y como te fue te funciono bien?
al momento de reiniciar mi servicio # /etc/init.d/isc-dhcp-server restart me marca este error:
[FAIL] Stopping ISC DHCP server: dhcpd failed!
[FAIL] Starting ISC DHCP server: dhcpd[….] check syslog for diagnostics. … failed!
failed!
Alguna Solución?
interesante , ahora el problema es como bloquear las conecciones https de facebook y algunas mas…. gracias