Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Redes Proxy PDF
Redes Proxy PDF
Puesta en marcha de un
servidor Proxy
Arquitectura de Sistemas y Aplicaciones Distribuidas – U.L.P.G.C.
Índice
Introducción a Squid...........................................................................................2
Obtención e Instalación de Squid....................................................................... 4
Configuración básica......................................................................................... 5
Ejemplo de configuración básica........................................................................ 8
Configuración avanzada......................................................................................9
Ejemplo de configuración avanzada................................................................. 11
Objetivos........................................................................................................11
Archivo de configuración.............................................................................. 11
Ejemplos de acceso....................................................................................... 12
Desde la interfaz interna........................................................................... 12
Desde la interfaz externa.......................................................................... 14
Comprobación del funcionamiento de los hermanos y padre....................... 14
Hermano .es.............................................................................................. 14
Hermano .com........................................................................................... 16
Configuración de un Navegador Web Gráfico para que use el Proxy.............. 19
1
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Introducción a Squid
Los scripts ejecutables cgi-bin no son cacheados, las páginas que indican
en las cabeceras peridos de caducidad son tenidos en cuenta, y es posible
especificar con reglas extra que se debe y que no se debe cachear, y para
cuanto tiempo.
2
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
3
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Squid es el servidor caché más utilizado, por lo que suele estar incluido
en las distintas distribuciones de Linux que nos podemos encontrar,
especialmente las orientadas a servidores.
./configure
make
make install
Esto instalará Squid en “/usr/local/squid”. Si quiere ver las opciones
disponibles para la instalación de Squid, ejecute:
./configure –help
En la instalación de Fedora Core 3, por defecto, el Squid se instala en
“/usr/sbin/squid” y sus archivos de configuración en “/etc/squid/”.
1 Fedora Core: http://fedora.redhat.com/
2 Squid Web Proxy Cache: http://www.squid-cache.org/
4
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Configuración básica
cache_mgr [usuario]
cache_effective_user [usuario]
cache_effective_group [grupo]
5
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Especifica qué ips pueden usar el servicio de Squid y cuales no. Esta
regla puede duplicarse cuantas veces se quiera para especifcar la lista entera
de permisos. Ejemplo:
# clases
acl red6 src 172.16.6.0/255.255.255.0
acl redes src 172.16.0.0/255.255.0.0
# permisos
http_access allow red6
http_access deny redes
Este ejemplo clasifica las redes del ejemplo del parámetro anterior, sin
embargo no se ve claramente su utilidad al ser una red pequeña.
6
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
recomendable si la caché está dentro de la red y por tanto es más rápido que
preguntarle al servidor original. El host es la máquina a la que le
preguntaremos o nos preguntará. El tipo puede ser “parent”, “sibling” o
“multicast”. Para especificar varios servidores, simplemente se duplica la
línea.
7
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
A continuación hemos creado un servicio de caché con Squid tal que sólo
los ordenadores de la red local sean los que puedan acceder hacia afuera.
# Lista de acceso
acl red6 src 172.16.6.0/255.255.255.0
acl red6ext src 172.16.1.6/255.255.255.255
acl red2 src 172.16.1.2/255.255.255.255
acl redes src 172.16.0.0/255.255.0.0
acl all src 0.0.0.0/0.0.0.0
acl loopback src 127.0.0.1/255.255.255.0
8
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Configuración avanzada
cache_access_log [ruta/archivo]
Permite especificar para qué dominios hay que o para que dominios no
hay que preguntarle a otro caché. El cache-host debe estar especificado
previamente mediante la opción cache_peer.
udp_incoming_address [ip]
udp_outgoing_address [ip]
9
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
mandará (outgoing) paquetes ICP, que son los usados para preguntar. Si
especificamos “0.0.0.0” para “udp_incoming_address”, Squid escuchará por
todas las interfaces de red disponibles. Si especificamos “255.255.255.255”
para “upd_outgoing_address”, que es el valor por defecto, Squid mandará
paquetes ICP sólo por la interfaz especificada en “udp_incoming_address”.
10
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Objetivos
– Tamaño de caché de disco de 50 MB
– Realizar el logging de las solicitudes de los clientes
– 1 Padre
– 1 hermano sólo para .com
– 1 hermano sólo para .es
– Permitir solicitudes de clientes sólo de la interfaz de la red interna
– Permitir solicitar conexiones con servidores y cachés vecinos por la
interfaz externa
– Prohibir las siguientes direcciones:
– Playboy.com
– Playgirl.com
– Sólo permitimos a nosotros, nuestra red local y a la pasarela de red2 el
acceso al proxy
Archivo de configuración
# Caché situada en /var/spool/squid cuyo sistema de archivos
# es ufs, ocupa 50 MB y tiene esta cache 7 subdirectorios en el primer nivel
# y 100 en el segundo nivel.
cache_dir ufs /var/spool/squid 50 7 100
11
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Ejemplos de acceso
A continuación mostramos ejemplos de acceso desde varias estaciones.
12
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
PREF=ID=3faa49a75a2d03a5:LD=es:TM=1113931620:LM=1113931620:S=
m-qXtjcXXtJAwwua;
expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.es
Server: GWS/2.1
Date: Tue, 19 Apr 2005 17:27:00 GMT
X-Cache: MISS from pasarela12.redes.dis.ulpgc.es
Proxy-Connection: close
...
Sin embargo, si intentamos acceder tanto a www.playboy.com como
www.playgirl.com no podemos:
13
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Content-Length: 1065
Expires: Tue, 19 Apr 2005 17:29:34 GMT
X-Squid-Error: ERR_ACCESS_DENIED 0
X-Cache: MISS from pasarela12.redes.dis.ulpgc.es
Proxy-Connection: close
...
Hermano .es
1 0.000000 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 87
2 0.000031 172.16.1.6 220.254.20.164 ICP Opcode: ICP_QUERY (1), Req Nr: 87
4 0.065083 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 87
24 0.186011 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 88
25 0.186056 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 88
26 0.186243 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 88
47 0.253495 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 88
49 0.257163 172.16.1.6 220.254.20.164 ICP Opcode: ICP_QUERY (1), Req Nr: 89
14
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
15
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
185 1.901951 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 100
186 1.902068 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 100
188 1.949582 193.146.95.50 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 98
190 1.954109 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 99
191 1.968175 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 100
221 2.242718 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 96
224 2.244791 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 97
229 2.264353 172.16.1.6 220.254.20.164 ICP Opcode: ICP_QUERY (1), Req Nr: 101
230 2.264383 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 101
231 2.330102 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 101
236 2.624775 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 102
237 2.624805 172.16.1.6 220.254.20.164 ICP Opcode: ICP_QUERY (1), Req Nr: 102
238 2.679557 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 98
239 2.683286 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 99
240 2.691326 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 100
241 2.692708 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 102
249 3.073764 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 101
Hermano .com
1 0.000000 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 103
2 0.000032 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 103
3 0.000770 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 103
4 0.069223 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 103
18 0.981715 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 104
19 0.981754 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 104
20 0.981913 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 104
21 1.049196 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 104
55 1.637087 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 105
56 1.637118 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 105
57 1.637274 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 105
62 1.709727 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 105
66 1.831129 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 106
67 1.831171 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 106
68 1.831361 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 106
70 1.904041 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 106
75 2.029253 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 107
76 2.029292 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 107
77 2.029446 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 107
78 2.031097 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 108
79 2.031136 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 108
80 2.031207 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 108
16
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
81 2.041328 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 109
82 2.041370 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 109
83 2.041520 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 109
84 2.043736 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 110
85 2.043775 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 110
86 2.043843 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 110
87 2.094220 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 107
89 2.095506 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 108
91 2.107428 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 109
93 2.108426 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 110
105 2.206639 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 111
106 2.206677 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 111
107 2.206830 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 111
112 2.243211 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 112
113 2.243255 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 112
114 2.243438 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 112
115 2.273939 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 111
119 2.297607 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 113
120 2.297649 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 113
121 2.297805 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 113
122 2.311048 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 112
125 2.366368 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 113
129 2.398897 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 114
130 2.398939 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 114
131 2.399087 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 114
133 2.421558 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 115
134 2.421600 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 115
135 2.421774 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 115
139 2.464199 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 114
143 2.476763 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 116
144 2.476805 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 116
145 2.476956 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 116
146 2.486737 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 115
149 2.544076 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 116
154 2.575494 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 117
155 2.575534 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 117
156 2.575684 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 117
158 2.595991 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 118
159 2.596035 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 118
160 2.596198 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 118
163 2.643123 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 117
167 2.654189 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 119
17
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
168 2.654231 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 119
169 2.654431 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 119
170 2.662018 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 118
174 2.695564 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 120
175 2.695601 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 120
176 2.695748 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 120
178 2.719482 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 119
183 2.753764 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 121
184 2.753806 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 121
185 2.753986 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 121
186 2.761255 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 120
189 2.773491 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 122
190 2.773531 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 122
191 2.773689 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 122
194 2.820352 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 121
198 2.833751 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 123
199 2.833785 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 123
200 2.833941 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 123
201 2.838678 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 122
204 2.871813 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 124
205 2.871855 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 124
206 2.872030 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 124
208 2.898910 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 123
213 2.933488 172.16.1.6 220.254.20.164 ICP Opcode: ICP_QUERY (1), Req Nr: 125
214 2.933528 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 125
215 2.933549 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 125
216 2.933718 172.16.1.10 172.16.1.6 ICP Opcode: ICP_HIT (2), Req Nr: 125
220 2.939842 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 124
243 3.003337 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 125
248 3.514946 172.16.1.6 172.16.1.10 ICP Opcode: ICP_QUERY (1), Req Nr: 126
249 3.514979 172.16.1.6 193.146.95.50 ICP Opcode: ICP_QUERY (1), Req Nr: 126
250 3.515118 172.16.1.10 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 126
252 3.584440 193.146.95.50 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 126
255 3.904472 220.254.20.164 172.16.1.6 ICP Opcode: ICP_MISS (3), Req Nr: 125
18
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
Para configura el navegador web para que haga uso de nuestro proxy,
que en este caso se trata del Firefox, seguiremos los siguientes pasos:
1. Ir a Edit-->Preferences.
19
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
2. Ir a Connection Settings
20
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
21
Práctica 6: Puesta en marcha de un servidor proxy David Jesús Horat Flotats
Arquitectura de Sistemas y Aplicaciones Distribuidas Enrique Fernández Perdomo
22