2 votes

Varnish annule toutes les adresses IP sauf la dernière adresse x-forwarded-for... bug ?

En essayant de comprendre pourquoi notre installation de Varnish 4.1 (sur CentOS7 via le repo varnish-cache.org) ne suivait pas les règles vcl établies pour enregistrer l'adresse IP du client dans un en-tête X-Forwarded-For (voir : Varnish 4 enregistre le proxy/équilibreur de charge au lieu des adresses IP des clients. ) J'ai remarqué quelque chose d'étrange en regardant les fichiers varnishlog :

- Begin        req 9353447 rxreq
- Timestamp    Start: 1488771709.337974 0.000000 0.000000
- Timestamp    Req: 1488771709.337974 0.000000 0.000000
- ReqStart     172.25.20.65 19903
- ReqMethod    GET
- ReqURL       /about-us/
- ReqProtocol  HTTP/1.1
- ReqHeader    host: www.<notreallythishost>.com
- ReqHeader    Accept: */*
- ReqHeader    Accept-Encoding: gzip, deflate
- ReqHeader    Cache-Control: no-cache
- ReqHeader    From: bingbot(at)microsoft.com
- ReqHeader    Pragma: no-cache
- ReqHeader    User-Agent: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
- ReqHeader    X-Forwarded-For: 40.77.167.41
- ReqHeader    X-Forwarded-Port: 80
- ReqHeader    X-Forwarded-Proto: http
- ReqHeader    Connection: keep-alive
- ReqUnset     X-Forwarded-For: 40.77.167.41
- ReqHeader    X-Forwarded-For: 40.77.167.41, 172.25.20.65
- VCL_call     RECV
- ReqUnset     X-Forwarded-For: 40.77.167.41, 172.25.20.65
- ReqHeader    X-Forwarded-For: 172.25.20.65
- ReqUnset     Accept-Encoding: gzip, deflate
- ReqHeader    Accept-Encoding: gzip
- ReqUnset     User-Agent: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
- VCL_return   hash
- VCL_call     HASH
- VCL_return   lookup
- VCL_call     MISS
- VCL_return   fetch
- Link         bereq 9353449 fetch
- Timestamp    Fetch: 1488771709.338395 0.000421 0.000421
- RespProtocol HTTP/1.1

Cela explique parfaitement pourquoi nous n'avons jamais pu obtenir autre chose que l'adresse IP de l'équilibreur de charge enregistrée par varnishncsa, quelle que soit la technique d'enregistrement utilisée.

Il semble qu'au cours du traitement de la demande, il crée l'en-tête X-Forwarded-For en ajoutant l'adresse IP de l'équilibreur de charge AWS à l'en-tête, mais lorsque vc_call est appelé, il le déconstruit à nouveau et supprime l'adresse IP du client d'origine. Alors, comment faire pour garder le X-Forwarded-For intact et pourquoi Varnish déplace-t-il les IP du côté gauche au lieu de les ajouter à l'en-tête X-Forwarded-For comme il le devrait ? Bug ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X