2012-06-05 32 views
7

Tengo un dispositivo que necesita conectarse a un servicio de internet en tcp: 80 pero la red no tiene acceso directo a internet. Así que estoy usando un proxy Squid para resolver esto.proxy squid - cómo permitir tcp connect - obtener TCP_DENIAL/400 con ERR_INVALID_DOMAIN

El dispositivo me permite ingresar proxyserver, puerto, nombre de usuario y contraseña.

Me di cuenta de que el dispositivo usa http CONNECT en lugar de http GET (que funciona bien con mi navegador).

Cuando el dispositivo intenta conectarse, se obtiene un error HTTP 400. El access.log calamar me da sólo esto:

1338885433.033  0 172.22.140.129 TCP_DENIED/400 1728 CONNECT :0 - NONE/- text/html 

Así que capturaron los paquetes para ver realmente lo que está pasando en:

Solicitud de dispositivo:

 
CONNECT mydomain.com:0 HTTP/1.0 
User-agent: Sequencer/5.5.0.5539 

respuesta de calamar:

HTTP/1.0 400 Bad Request 
squid/2.7.STABLE9 
X-Squid-Error: ERR_INVALID_URL 0 
close 

Mi squid.conf:

 
auth_param basic program /usr/lib/squid/pam_auth 
auth_param basic children 5 
auth_param basic realm Squid proxy-caching web server 
auth_param basic credentialsttl 2 hours 
auth_param basic casesensitive off 

acl all src all 
acl manager proto cache_object 
acl localhost src 127.0.0.1/32 
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 

acl localnet src 10.0.0.0/8  # RFC1918 possible internal network 
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network 
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network 

acl SSL_ports port 443   # https 
acl SSL_ports port 563   # snews 
acl SSL_ports port 873   # rsync 

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 Safe_ports port 631   # cups 
acl Safe_ports port 873   # rsync 
acl Safe_ports port 901   # SWAT 

acl purge method PURGE 
acl CONNECT method CONNECT 
acl checkpw proxy_auth REQUIRED 

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 allow CONNECT 
http_access allow localnet 
http_access allow localhost 
http_access allow checkpw all 
http_access deny all 

icp_access allow localnet 
icp_access deny all 

http_port 3128 

hierarchy_stoplist cgi-bin ? 

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

debug_options ALL,1 33,2 28,9 

refresh_pattern ^ftp:   1440 20%  10080 
refresh_pattern ^gopher:  1440 0%  1440 
refresh_pattern -i (/cgi-bin/|\?) 0  0%  0 
refresh_pattern (Release|Packages(.gz)*)$  0  20%  2880 
refresh_pattern .    0  20%  4320 

acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9] 

upgrade_http0.9 deny shoutcast 

acl apache rep_header Server ^Apache 

broken_vary_encoding allow apache 

extension_methods REPORT MERGE MKACTIVITY CHECKOUT 

hosts_file /etc/hosts 

forwarded_for off 

coredump_dir /var/spool/squid 

¿Hay alguna solución para deshacerse de la ERR_INVALID_URL? ¿No entendí mal el concepto del proxy Squid o la solicitud del dispositivo no es válida?

Háganme saber si necesita alguna otra información.

Gracias de antemano, Christian.

+1

Hay dos opciones, o la aplicación tiene un error y está enviando el puerto 0 o ha reemplazado el puerto para ocultar información y ha elegido el puerto no válido :) –

Respuesta

1

Lo he solucionado con la ayuda del producto del dispositivo.

Me mostraron una forma de habilitar una vista de depuración más detallada del proceso de conexión del proxy.

Había una línea en el archivo de registro "No se puede conectar a retransmitir 0.0.0.0"

lo que he comprobado la configuración del servidor DNS del dispositivo, un hubo un error tipográfico. Eso es.

10

me resolvieron el mismo error comentando desde el squid.conf defecto:

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

Por defecto Squid está configurado para no permitir que conectan con los puertos que no son SSL. Si desea realizar la prueba sin SSL, puede desactivar esto comentando la línea anterior.

+0

Ya lo hice, todavía no funciona (I odio el calamar). –

Cuestiones relacionadas