TL; DR Ese proxy no permite la tunelización. Y usted tiene un servidor de seguridad que analiza las solicitudes HTTP, lo que probablemente no permita el túnel HTTP. Estás bastante limitado a GET y POST.
Ya que puede resolver el DNS, una VPN IPsec en el puerto 53 puede ser una buena alternativa.
proxy PHP no es un proxy general estándar. En otras palabras, no sigue los estándares de proxy (generales) (HTTP CONNECT o SOCKS), simplemente es un proxy HTTP para las solicitudes GET y POST. No se trata de un proxy HTTP completo que implementa HTTP CONNECT, lo que permitiría la conexión de túneles y la omisión de un firewall.
En el código proxy proxy usa CURL, más exactamente curl_exec
, de la siguiente manera:
$result = @curl_exec($ch);
// there must have been an error if at this point
if(!$result){
$error = sprintf('(%d) %s', curl_errno($ch), curl_error($ch));
throw new \Exception($error);
}
// we have output waiting in the buffer?
$this->response->setContent($this->output_buffer);
// saves memory I would assume?
$this->output_buffer = null;
Incluso si envía un HTTP CONNECT, el proxy le devolverá la respuesta y cerrará la conexión, que no es así como funciona HTTP CONNECT.
Eso no quiere decir que CURL no pueda funcionar con HTTP CONNECT, puede hacerlo, pero no a través de PHP curl_exec
.
Todo lo dicho. Tiene un servidor de seguridad con estado que analiza los encabezados HTTP (ya que solo permite /admin/
solamente). Dudo mucho que el firewall le permita enviar un HTTP CONNECT en primer lugar. En otras palabras, si el firewall rechaza esto (observe el error tipográfico):
GET /typo-in-amdin/somehting HTTP/1.1
Entonces no creo que lo permita:
CONNECT /admin/somewhere HTTP/1.1
Ya que fallaría en la misma coincidencia de expresiones regulares. Y como su servidor de seguridad solo permite HTTP a través de (y lo analiza), no puede usar otros protocolos, por ejemplo. VPN en posrt 80.
Nota extra (más optimista)
Una cosa que me sorprende es que puedes resolver DNS. Por lo tanto, el firewall debe permitir paquetes UDP en el puerto 53.
Y, a menos que esté utilizando un servidor DNS interno (y, por lo tanto, la resolución del DNS no pasa por el firewall), puede sortear la limitación del encabezado HTTP ejecutando una VPN en modo udp (IPsec) y "conectar" a puerto 53. Eso canalizará su tráfico y mirará al firewall como solicitudes y respuestas de DNS.