Compartir Internet SQUID/NAT Entre Máquinas Virtuales Con VirtualBox
instalado SQUID, tiene dos interfaces, una que está con una red interna ...
Hola, buenas tardes. Así está mi problemita...
Tengo una máquina virtual que tiene instalado SQUID, tiene dos interfaces, una que está con una red interna para poder conectar otras dos máquinas virtuales, y la otra interfaz que está mediante NAT para poder recibir internet de la máquina física. La interfaz eth2 está conectada a la red interna con dirección 192.168.5.2, y la eth3 es la que está conectada a NAT que recibe una dirección de 10.0.2.15, mientras que la dirección de la interfaz WLAN de la máquina física es 172.72.102.112.
El caso es que quiero poder compartir internet a otras dos máquinas virtuales desde la máquina virtual con iptables, más aparte tener un proxy transparente(SQUID). Las iptables que ingreso en la máquina servidor(que es la virtual 192.168.5.2, que tiene instalado SQUID) son las siguientes:
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth30 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -L
iptables -L -t nat
Sin embargo, en la máquina servidor si tengo internet, dado que el NAT de la máquina física a la virtual está funcionando bien, pero el NAT de las iptables de la máquina virtual servidor a las otras máquinas virtuales clientes no funciona, dado que no tengo internet en las máquinas cliente como necesito tener, por lo que no sé si no están bien las iptables o que es? Realmente necesito ese proxy transparente...Estaré muy agradecido a quién me pueda/quiera ayudar...
- Inicie sesión o regístrese para enviar comentarios
- 589 lecturas


Saludos
te dejo la configuracion del squid y la reglas de iptables.
actualmente asi como esta funciona.
te dejo el squid.conf
visible_hostname proxy
http_port 3128 transparent
http_port 8080 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 32 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
minimum_object_size 0 KB
cache_dir aufs /var/spool/squid 900 16 256
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
emulate_httpd_log on
client_netmask 255.255.255.255
ftp_user darkfrog@gmail.com
dns_nameservers 192.168.2.1 192.168.3.1 200.33.148.217
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl dominios dstdomain "/etc/squid/dominios.txt"
acl denegadas url_regex "/etc/squid/denegadas.txt"
acl red1 src 192.168.2.0/255.255.255.0
acl red2 src 192.168.3.0/255.255.255.0
acl to_localhost dst 127.0.0.0/8
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny dominios
http_access deny denegadas
http_access allow red1
http_access allow red2
http_access deny all
http_reply_access allow all
icp_access allow all
cache_mgr darkfrog@gmail.com
cache_effective_group proxy
error_directory /etc/squid/erros
coredump_dir /var/spool/squid
estas reglas las agregue.
acl dominios dstdomain "/etc/squid/dominios.txt"
acl denegadas url_regex "/etc/squid/denegadas.txt"
acl red1 src 192.168.2.0/255.255.255.0
acl red2 src 192.168.3.0/255.255.255.0
y claro estas.
http_access deny dominios
http_access deny denegadas
http_access allow red1
http_access allow red2
dominios = dominios a los que no pueden entrar
denegadas = palabras denegadas.
=============== ip tables ============
declara en el squid el rango de la red, como en mi caso tengo red1 y red2
aqui las reglas de ipatables.
eth0 = red .2
eth1 = llega del router
eth2 = red .3
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
## Empezamos a filtrar
# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT
## Ahora con regla FORWARD filtramos el acceso de la red local
## al exterior. Como se explica antes, a los paquetes que no van dirigidos al
## propio firewall se les aplican reglas de FORWARD
# Aceptamos que vayan a puertos 80 red 2
iptables -A FORWARD -s 192.168.2.0/24 -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth0 -p tcp --dport 443 -j ACCEPT
#permitimos msn y irc a la red 2.0
iptables -A FORWARD -s 192.168.2.0/24 -i eth0 -p tcp --dport 6667 -j ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth0 -p tcp --dport 1863 -j ACCEPT
# Aceptamos que vayan a puertos 80 red 3
iptables -A FORWARD -s 192.168.3.0/24 -i eth2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.3.0/24 -i eth2 -p tcp --dport 443 -j ACCEPT
#permitimos msn y irc a la red 3.0
iptables -A FORWARD -s 192.168.3.0/24 -i eth2 -p tcp --dport 6667 -j ACCEPT
#iptables -A FORWARD -s 192.168.3.0/24 -i eth2 -p tcp --dport 1863 -j ACCEPT
# Aceptamos que consulten los DNS
iptables -A FORWARD -s 192.168.2.0/24 -i eth0 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth0 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.3.0/24 -i eth2 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.3.0/24 -i eth2 -p udp --dport 53 -j ACCEPT
#ssh
# A un diseñador le dejamos usar el SSH
iptables -A INPUT -s 192.168.2.20 -p tcp --dport 22 -j ACCEPT
# Y denegamos el resto.
iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -j DROP
iptables -A FORWARD -s 192.168.3.0/24 -i eth1 -j DROP
# Ahora hacemos enmascaramiento de la red local
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth1 -j MASQUERADE
# cualquier petición hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior,
# se re-direccionará hacia el puerto 8080 del servidor.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 8080
## Y ahora cerramos los accesos indeseados del exterior:
# Nota: 0.0.0.0/0 significa: cualquier red
# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP
# Denegar el trafico entre las redes.
iptables -A INPUT -s 192.168.2.0/24 -d 192.168.3.0/24 -j DROP
iptables -A INPUT -s 192.168.3.0/24 -d 192.168.2.0/24 -j DROP
iptables -A INPUT -s 192.168.2.0/24 -d 192.168.1.0/24 -j DROP
iptables -A INPUT -s 192.168.3.0/24 -d 192.168.1.0/24 -j DROP
Hola, muchas gracias por tu tiempo y tu atención...Ya hice la configuración que me pusiste tal cual, y mis clientes siguen sin tener internet...
Estoy seguro que tu configuración está bien, pero acaso no tendrá algo que ver que la red es virtual y el servidor recibe internet vía NAT de la máquina física al servidor virtual mediante VirtualBox?. una vez más, gracias
Tienes que configurar las conexiones de red en modo bridge.
En la web de Virtualbox tienes mucha información sobre cómo hacerlo y en este enlace tienes una estupenda guía de scs_calleros.
Si no te quieres complicar, también puedes utilizar Vmware Server que simplifica mucho esta tarea.
Salu2.
Una cosilla para los que no lo sepan, pues en dicha guia se indica la configuracion a traves de dhcp, pero se puede hacer perfectamente con ips estaticas, lo unico que tienes que tener cuidado es que tu tarjeta de red principal (supongamos que es eth0), pasa a ser br0, y tienes que tener arrancado el modulo correspondiente del virtual box, tengo que hablar con scs_calleros, para completar algo mas el articulo
Con otro ejemplo de configuracion de 2 máquinas virtuales en red entre ellas como si fuesen completamente independientes y que la máquina real sirva a modo de cortafuegos a las otras 2 es decir ambas máquinas virtuales estarian en red entre ellas y con la máquina real y ademas dispondrian de internet.
La seguridad es solo un estado mental.
Entre la satisfacción y la total decepción hay solo una acción.
Solo se que se todo lo que no se