Linux Centralizar acceso a actualizaciones para varias distros

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Amigos, necesito que me ayuden a buscar la mejor solución para el siguiente problema:

Actualmente tenemos varias máquinas virtuales con RedHat, CentOS y Oracle Linux, y por ahí algunas con Suse y Debian. Además, tenemos varias versiones de cada sistema operativo.

Por defecto, ningún servidor tiene acceso a internet. Si alguna requiere acceso para actualizaciones le damos el permiso al repositorio correspondiente mediante una regla en el firewall. El problema es que, aparte de ser un proceso burocrático, quedamos con demasiadas reglas.
Me pasó que migré un servidor de RedHat a Centos y tuve que hacer la pedida para darle permiso a los repos de Centos.

¿Es posible contar con un servidor "pivote" que tenga TOOODOS los accesos a TOODOS los repos necesarios (RedHat, CentOS, y que los otros servidores se contacten con ese server pivote para pedirle acceso limitado a internet? Así, me evito tener que pedir acceso a los repos para cada server nuevo que se cree.

O también puede ser que ese servidor "pivote" sea una especie de repositorio local de varias distris y versiones, pero que tenga sólo las últimas versiones de los paquetes.
O mejor aún, que localmente no almacene ningún paquete: derive la pedida a los repositorios oficiales en internet.

Bueno, esa es la idea. Se me ocurre que es un problema recurrente y ya debe existir una solución que implantar. Les agradecería que me orienten, plis.
 

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
los repos no son nada más que un montón de paquetes en un directorio y un par de index, puedes sincronizar los repos oficiales (con rsync, todo los días si quieres) a un disco local y en el dns en la vista interna cambias las ips de los repos oficiales por el repo local, si te da paja hacer lo de los dns, puedes crear un archivo de config de repo para cada distro que apunte a tu servidor de repos.

la única paja son los repos que no son de acceso público, como el de rhel o de sles, pero puedes acceder a ellos desde una maquina con las licencias válidas y hacer lo mismo.
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
Oye, y será mucho leseo tener un Squid al que SI le des acceso a internet, y cuando algun server necesite acceso a internet (para bajar nuevos paquetes)
configurar el squid dentro del yum.conf (o del apt, depende del gusto) y listo? :zippy
Así te evitas estar bajando TOOOODOS los repositorios de TOOOODAS las versiones de TOOOOODOS los sistemas operativos que manejas. Y sólo te preocupas de subir el servicio de Squid (o de prender el servidor de proxy) cuando necesites instalar algo y voilá :zippyte
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
Oye, y será mucho leseo tener un Squid al que SI le des acceso a internet, y cuando algun server necesite acceso a internet (para bajar nuevos paquetes)
configurar el squid dentro del yum.conf (o del apt, depende del gusto) y listo? :zippy
Así te evitas estar bajando TOOOODOS los repositorios de TOOOODAS las versiones de TOOOOODOS los sistemas operativos que manejas. Y sólo te preocupas de subir el servicio de Squid (o de prender el servidor de proxy) cuando necesites instalar algo y voilá :zippyte
Sirve sólo para los repos libres

Enviado desde mi HTC_M10h mediante Tapatalk
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Gracias, parei que squid es la mano. Voy a intentar hacer un servicio para todos los servidores de todas las distros. Si me resulta y queda bien hacemos una guía.
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
Gracias, parei que squid es la mano. Voy a intentar hacer un servicio para todos los servidores de todas las distros. Si me resulta y queda bien hacemos una guía.
Basta con usar un fierro viejo (o una vm minúscula) y chantarle squid :yao

Enviado desde mi MotoE2 mediante Tapatalk
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Ya cabros. 20 minutos y configuré un Centos 7 con squid a partir de una lista blanca. Por lo menos para un servidor con Oracle Linux funciona. Mañana voy a probar Centos y RedHat.

Básicamente fue un centos 7 en instalación mínima y acceso a internet, instalar el squid, agregar un archivo de texto con la lista de los sitios permitodos (*.centos.org, *.oracle.com, *.redhat.com) y listo.
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Update.

El Squid es el mejor invento de la humanidad, empatando con la rueda. Una máquina virtual cagona con centos 7 y 2 gb de ram le da acceso a actualizaciones a los Centos, oracle linux y hasta Windows 2012. Luego cuando tenga tiempo voy a poner los parámetros que utilicé: es sencillísimo, me demoré pocazo en tenerlo andando.
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
Update.

El Squid es el mejor invento de la humanidad, empatando con la rueda. Una máquina virtual cagona con centos 7 y 2 gb de ram le da acceso a actualizaciones a los Centos, oracle linux y hasta Windows 2012. Luego cuando tenga tiempo voy a poner los parámetros que utilicé: es sencillísimo, me demoré pocazo en tenerlo andando.
Te lo dije :zippyte
 
Upvote 0

Harima

Pegao al tarro
Se incorporó
15 Mayo 2008
Mensajes
3.958
Update.

El Squid es el mejor invento de la humanidad, empatando con la rueda. Una máquina virtual cagona con centos 7 y 2 gb de ram le da acceso a actualizaciones a los Centos, oracle linux y hasta Windows 2012. Luego cuando tenga tiempo voy a poner los parámetros que utilicé: es sencillísimo, me demoré pocazo en tenerlo andando.
Lo instalaste solo para el trafico o le pusiste que guardara los paquetes en caché??
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Es super sencillo.

- Instala Centos 7 en su versión mínima.


- Darle acceso a internet (tiene que llegar a las distros que le indiques).


- Instalar squid.

Código:
      # yum install squid


- Agregar parámetros al archivo de configuracion /etc/squid/squid.conf

Código:
http_port 8080

cache_mem 400 MB
maximum_object_size 1024 MB
maximum_object_size_in_memory 1024 KB

access_log /var/log/squid/access.log squid

# Size should be about 60% of your free space
cache_dir ufs /var/spool/squid 15000 16 256


acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network  Configura tu intranet. 
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

# Archivo txt con los dominios permitidos. 
acl whitelist dstdomain "/etc/squid/permitidos.txt"  

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager whitelist
http_access deny manager

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 3128

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid

#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320


- Crea el archivo /etc/squid/permitidos.txt con los accesos necesarios a las distros. Este es el contenido de mi archivo:

Código:
*.centos.org
*.oracle.com
*.dell.com
*.redhat.com

# Mirrors chilenos de Centos
*.gtdinternet.com
*.utfsm.cl

# Mirrors para hora
*.iana.org

# Windows Update
*.microsoft.com
*.windowsupdate.com
*.windows.com


- Configurar squid para que levante al inicio y luego subir el servicio

Código:
   # systemctl enable squid
   # systemctl start squid


- Puedes configurar el firewall del servidor squid para que deje entrar los requerimientos o derechamente deshabilitarlos, si es que confias en el resto de los equipos que se van a conectar. No olvides deshabilitar selinux.


- En el servidor destino agregar esta línea en el archivo /etc/yum.conf

Código:
proxy=http://host_squid:3128

y listo.



¿Alguien sabe como configurar la caché para que retenga 5 GB y 2 meses?

Gracias
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
Deja la partición en 5 GB nomas po :zippyte

Código:
cache_dir ufs /var/spool/squid 5000 16 256
 
Upvote 0
Subir