HAProxy - X-Client-IP ve X-Forwarded-For başlıklarında istemci ipi nasıl eklenir?


11

HAProxy sunucusuyla ilgili bir sorunum var. Başlıkta bir istemci IP'si iletmek istiyorum. Neredeyse yapıyordum, ama ilginç bir durum var ve anlayamıyorum. X-CLIENT-IP ve X-FORWARDED-FOR etiketlerinde başlıkta 2 yerde istemci IP'si yazmam gerekiyor.

Sorun şu: Kullandığımda

option http-server-close
option forwardfor

Hedef sunucuda X-FORWARDED-FOR = xxx.xxx.xxx.xxx (istemci ip) başlığında görüyorum, ancak x-client-ip başlığı yok.

Kullandığımda:

option forwardfor header X-Client-IP
option http-server-close

Hedef sunucuda X-CLIENT-IP = xxx.xxx.xxx (istemci IP) başlığını görüyorum ancak X-FORWARDED-FOR = xxx.xxx.xxx.xxx (HAProxy ip)

Hedef başlığında X-CLIENT-IP ve X-FORWARDED-FOR'un istemci IP değerine sahip olduğunu görmem gerekiyor.

Gibi yapılandırmaları karıştırmaya çalışıyorum

 option forwardfor
 option forwardfor header X-Client-IP
 option http-server-close

Etkisi yok. Herhangi bir modül de kuramıyorum. Hedef IIS'dir.

Herhangi bir fikir? :(

Yanıtlar:


13

Aşağıdaki gibi özel başlık ayarlamayı deneyebilirsiniz:

http-request set-header X-Client-IP %[src]

Veya, X-Forwarded-Header'dan bile kopyalayabilirsiniz, sözdiziminin şöyle bir şey olacağını düşünüyorum:

http-request set-header X-Client-IP req.hdr_ip([X-Forwarded-For])

İkinci seçenek bana x-client-ip = req.hdr_ip (% 5bX-Forwarded-For% 5d) başlığında ver, bu yüzden bir şeyler yanlış. Ama ilkini deneyeceğim.
KacproSo

İlk çözünürlük http-istek küme başlığı X-Client-IP% [src] mükemmel çalışıyor.
KacproSo

Son örnek yanlış, doğru kural: http-request set-header X-Client-IP% [req.hdr_ip (X-Forwarded-For)]
Rfraile

X-Client-IP ve X-Forwarded-For'un farklı amaçları vardır. X-Forwarded-For kopyalamak güvenli değildir, çünkü HAProxy istemci tarafından gönderilen değeri döndürebilir.
Der_Meister

5

Her ikisini de kullanmak istiyorsanız, ikincisini bir http-requestanahtar kelimeyle eklemeniz gerekir .

# add X-FORWARDED-FOR
option forwardfor
# add X-CLIENT-IP
http-request add-header X-CLIENT-IP %[src]

Set üstbilgisinin istemciden gönderilen kötü amaçlı üstbilgileri kaldırmak için daha iyi olduğunu düşünüyorum.
Der_Meister

@Der_Meister Haklı olabilirsiniz, ancak bunun bu soru veya cevapla nasıl bir ilgisi olduğunu görmüyorum. Ayrıntılı düşünmek ister misiniz?
GregL

1
X-Client-IP üstbilgisinin amacı, gelen bir üstbilgiden rastgele bir değer değil, bağlantının gerçek IP adresini arka uca anlatmaktır. Soruda bahsedilmedi, sadece gelecekteki okuyucuları uyarmak istiyorum.
Der_Meister

Yine, haklı olabilirsiniz, ancak bu örnekte, X-CLIENT-IPistemci tarafından değil, kaynak IP'sine dayalı HAProxy tarafından ayarlanıyor. Bu yorumları okuyucuların kafasını karıştırmamak için uygun olduğu sorular üzerine bırakmanızı öneririm .
GregL

add-headerX-CLIENT-IPistemci tarafından ayarlanmış olabilecekleri kaldırmaz . Bu nedenle @Der_Meister set-headeryerine kullanılmasını önerdi . Bunun set-headeryerine yanıtınızı düzenlemenizi öneririz .
pistache

0

KacproSo için çalışmayan yukarıdaki önerilen cevap sadece değeri ekleyerek okumalıydı &[...], bu yüzden bu iyi çalışmalı:

http-request set-header X-Client-IP %[req.hdr_ip([X-Forwarded-For])]

0

HAproxy 1.7 üzerinde çalışmak, X-Forwarded-For çevresindeki kare parantezler olmadan bu işi yapan doğru sözdizimidir.

   http-request set-header X-Client-IP %[req.hdr_ip(X-Forwarded-For)]

-2

Arka uç sunucularınıza mod_rpaf adlı bir modül yükleyebilirsiniz. Bu, X-FORWARDED-FOR IP'yi X-CLIENT-IP'ye kopyalar. Daha fazla bilgi için bkz: bu . Windows'ta benzer modüllere sahip olmalısınız, X-Forwarded-For ASAPI filtreleri gibi.


Herhangi bir modül
kuramaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.