HAProxy - एक्स-क्लाइंट-आईपी और एक्स-फॉरवर्डेड-फॉर हेडर्स में क्लाइंट आईपी को कैसे जोड़ा जाए?


10

मुझे HAProxy सर्वर की समस्या है। मैं हेडर में एक क्लाइंट आईपी को अग्रेषित करना चाहता हूं मैंने इसे लगभग पूरा कर लिया है, लेकिन दिलचस्प मामला है और मैं इसका पता नहीं लगा सकता। मुझे हेडर में 2 स्थानों पर क्लाइंट-आईपी लिखना है, एक्स-क्लिंट-आईपी और एक्स-फॉरवर्ड-फॉर टैग में।

समस्या यह है: जब मैं उपयोग करता हूं

option http-server-close
option forwardfor

लक्ष्य सर्वर पर मैं हेडर X-FORWARDED-FOR = xxx.xxx.xxx.xxx (क्लाइंट आईपी) में देखता हूं, लेकिन कोई एक्स-क्लाइंट-आईपी हेडर नहीं है।

जब मैं उपयोग करता हूं:

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

लक्ष्य सर्वर पर मुझे हेडर X-CLIENT-IP = xxx.xxx.xxx (क्लाइंट IP) दिखाई देता है, लेकिन X-FORWARDED-FOR = xxx.xxx.xxx.xxx (HAProxy ip)

मुझे लक्ष्य हेडर पर देखने की जरूरत है जहां एक्स-क्लिंट-आईपी और एक्स-फॉरवर्डेड-फॉर में क्लाइंट आईपी का मूल्य है।

मैं विन्यास मिश्रण करने की कोशिश करता हूं

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

कोई प्रभाव नहीं। मैं किसी भी मॉड्यूल को स्थापित नहीं कर सकता। लक्ष्य IIS है।

कोई विचार? :(

जवाबों:


12

आप इस तरह से कस्टम हेडर स्थापित करने की कोशिश कर सकते हैं:

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

या, आप इसे एक्स-फॉरवर्ड-फॉर हेडर से भी कॉपी कर सकते हैं, मुझे लगता है कि सिंटैक्स कुछ इस तरह होगा:

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

दूसरा विकल्प मुझे हेडर x-client-ip = req.hdr_ip (% 5bX-Forwarded-For% 5d) में देता है, इसलिए कुछ गलत है। लेकिन मैं पहले एक कोशिश करूँगा।
KacproSo

पहला रिज़ॉल्यूशन http-request सेट-हेडर X-Client-IP% [src] सही काम करता है।
KacproSo

अंतिम उदाहरण गलत है, सही नियम है: http-request सेट-हेडर X-Client-IP% [req.hdr_ip (X-Forwarded-For)]
Rfraile

एक्स-क्लाइंट-आईपी और एक्स-फॉरवर्ड-के लिए अलग-अलग उद्देश्य हैं। X-Forwarded-For को कॉपी करना सुरक्षित नहीं है, क्योंकि HAProxy क्लाइंट द्वारा भेजे गए मूल्य को वापस कर सकता है।
डेर_मिस्टर

5

यदि आप दोनों का उपयोग करना चाहते हैं, तो आपको एक http-requestकीवर्ड के साथ दूसरा जोड़ना होगा ।

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

मुझे लगता है कि क्लाइंट से भेजे गए दुर्भावनापूर्ण हेडर को हटाने के लिए सेट-हेडर बेहतर है।
डेर_मिस्टर

@Der_Meister आप सही हो सकते हैं, लेकिन मैं नहीं देखता कि इस प्रश्न या उत्तर की कोई प्रासंगिकता कैसे है। विस्तृत करने के लिए परवाह?
ग्रेग सिप

1
एक्स-क्लाइंट-आईपी हेडर का उद्देश्य कनेक्शन के वास्तविक आईपी पते का बैकएंड बताना है, न कि किसी आने वाले हेडर से यादृच्छिक मान। यह सवाल में उल्लेख नहीं है, मैं सिर्फ भविष्य के पाठकों को चेतावनी देना चाहता हूं।
Der_Meister

फिर, आप सही हो सकते हैं, लेकिन इस उदाहरण में, X-CLIENT-IPक्लाइंट द्वारा सेट नहीं किया जा रहा है, बल्कि स्रोत आईपी पर आधारित HAProxy द्वारा किया जा रहा है। मैं सवाल पर इन टिप्पणियों छोड़ने जहां यह सुझाव देंगे है भ्रमित पाठकों के लिए प्रासंगिक इतनी के रूप में नहीं।
ग्रेग सिप

add-headerX-CLIENT-IPग्राहक द्वारा निर्धारित किया गया हो सकता है कि नहीं निकालता है । यही कारण है कि @Der_Meister के set-headerबजाय का उपयोग करने की सिफारिश की गई है । मैं सुझाव देता हूं कि set-headerइसके बजाय अपने उत्तर को संपादित करें ।
पिस्ताशे

0

ऊपर दिए गए सुझाए गए उत्तर, केवल जोड़ने के लिए मूल्य को पढ़ने के लिए आवश्यक नहीं है &[...], इसलिए यह ठीक काम करना चाहिए:

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

0

HAproxy 1.7 पर कोशिश करना यह सही सिंटैक्स है जो इस काम को बनाता है, एक्स-फॉरवर्ड-फॉर के आसपास वर्ग ब्रैकेट के बिना

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

-2

आप अपने बैकेंड सर्वर (ओं) पर mod_rpaf नामक एक मॉड्यूल स्थापित कर सकते हैं। यह X-FORWARDED-FOR IP को X-CLIENT-IP में कॉपी करता है। अधिक जानकारी के लिए इसे देखें । विंडोज पर आपके पास समान मॉड्यूल होना चाहिए, जैसे एक्स-फॉरवर्डेड-फॉर एएसएपीआई फिल्टर।


वह किसी भी मॉड्यूल को स्थापित नहीं कर सकता ..
न्यूट्रिनस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.