जब मैं AWS में नया था, तो मुझे एक दस्तावेज़ पर डिजिटल हस्ताक्षर करने के कार्य पर काम करते समय एक दिलचस्प चुनौती का सामना करना पड़ा, जिसके लिए ई-हस्ताक्षर के हिस्से के रूप में ग्राहक के आईपी की आवश्यकता थी। प्रारंभ में, जब कार्यान्वयन पहली बार पूरी तरह से काम करने लगा तो मैं रोमांचित हो गया। हालाँकि, मेरा उत्साह अल्पकालिक था। परीक्षण के दौरान, मैंने देखा कि एक ही आईपी पता वापस आ रहा था, तब भी जब मैंने विभिन्न मशीनों से एप्लिकेशन एक्सेस किया था। तब मुझे एहसास हुआ कि जो आईपी एड्रेस मुझे प्राप्त हो रहा था वह वास्तविक क्लाइंट आईपी नहीं था बल्कि लोड बैलेंसर का आईपी था।
इस खोज ने मुझे जांच और सीखने की राह पर आगे बढ़ाया। मुझे यह समझने के लिए गहराई से जाना पड़ा कि क्या हो रहा था और वास्तविक क्लाइंट आईपी कैसे प्राप्त किया जाए। इस ब्लॉग में, मैं अपना अनुभव साझा करूंगा और एडब्ल्यूएस लैम्ब्डा और पायथन का उपयोग करके इसे कैसे प्राप्त किया जाए, इस पर एक व्यापक मार्गदर्शिका प्रदान करूंगा, यह सुनिश्चित करते हुए कि आप एप्लिकेशन लोड बैलेंसर (एएलबी) का उपयोग करते समय क्लाइंट के आईपी पते को सटीक रूप से कैप्चर कर सकते हैं।
जब कोई ग्राहक एएलबी के माध्यम से आपके आवेदन के लिए अनुरोध करता है, तो लोड बैलेंसर एक मध्यस्थ के रूप में कार्य करता है। नतीजतन, आपका एप्लिकेशन जो आईपी पता देखता है वह एएलबी का है, क्लाइंट का नहीं। इसे संबोधित करने के लिए, ALB क्लाइंट के IP को X-Forwarded-For HTTP हेडर में शामिल करता है। यदि अनुरोध कई प्रॉक्सी से होकर गुजरा है तो इस हेडर में कई आईपी पते हो सकते हैं।
यहां बताया गया है कि हमें क्या संभालना है:
क्लाइंट आईपी निकालें: एक्स-फॉरवर्डेड-फॉर हेडर को पुनः प्राप्त करें और पार्स करें।
एकाधिक आईपी संभालें: सुनिश्चित करें कि कई प्रॉक्सी शामिल होने पर भी हमें सही क्लाइंट आईपी मिले।
संभावित सुरक्षा जोखिमों के कारण एक्स-फॉरवर्डेड-फॉर हेडर का उपयोग सावधानी से किया जाना चाहिए। प्रविष्टियों को केवल तभी भरोसेमंद माना जा सकता है जब उन्हें ऐसे सिस्टम द्वारा जोड़ा जाए जो नेटवर्क के भीतर उचित रूप से सुरक्षित हो। यह सुनिश्चित करता है कि क्लाइंट आईपी के साथ छेड़छाड़ नहीं की गई है और वे विश्वसनीय हैं।
एडब्ल्यूएस लैम्ब्डा एक सर्वर रहित कंप्यूट सेवा है जो आपको सर्वर का प्रावधान या प्रबंधन किए बिना कोड चलाने की सुविधा देती है। पाइथॉन, अपनी सरलता और पठनीयता के साथ, लैम्ब्डा फ़ंक्शन के भीतर इस कार्य को संभालने के लिए एक उत्कृष्ट विकल्प है।
AWS लैम्ब्डा फ़ंक्शन: मुख्य फ़ंक्शन जो आने वाले अनुरोधों को संसाधित करता है।
एप्लिकेशन लोड बैलेंसर (एएलबी): लोड बैलेंसर जो लैम्ब्डा फ़ंक्शन के लिए अनुरोध अग्रेषित करता है।
सबसे पहले, सुनिश्चित करें कि आपका लैम्ब्डा फ़ंक्शन एक एएलबी के साथ स्थापित और एकीकृत है। यदि आवश्यक हो तो AWS की आधिकारिक मार्गदर्शिका का पालन करें: एप्लिकेशन लोड बैलेंसर के लिए लक्ष्य के रूप में लैम्ब्डा फ़ंक्शंस का उपयोग करना।
आइए लैम्ब्डा फ़ंक्शन के लिए पायथन कोड में गोता लगाएँ। यह फ़ंक्शन X-Forwarded-For हेडर से क्लाइंट का IP पता निकालेगा।
import json def lambda_handler(event, context): # Extract the 'X-Forwarded-For' header x_forwarded_for = event['headers'].get('x-forwarded-for') if x_forwarded_for: # The first IP in the list is the client's IP client_ip = x_forwarded_for.split(',')[0] else: # Fallback if header is not present client_ip = event['requestContext']['identity']['sourceIp'] # Log the client IP print(f"Client IP: {client_ip}") # Respond with the client IP return { 'statusCode': 200, 'body': json.dumps({'client_ip': client_ip}) }
हेडर निकालें: आने वाले अनुरोध से एक्स-फॉरवर्डेड-फॉर हेडर पुनर्प्राप्त करें।
हेडर को पार्स करें: पहला आईपी लें, जो क्लाइंट के मूल आईपी का प्रतिनिधित्व करता है।
फ़ॉलबैक तंत्र: यदि हेडर मौजूद नहीं है तो अनुरोध संदर्भ से स्रोत आईपी का उपयोग करें।
लॉगिंग और प्रतिक्रिया: लॉग इन करें और सत्यापन के लिए ग्राहक का आईपी लौटाएं।
अनुरोध:
{ "headers": { "x-forwarded-for": "203.0.113.195, 70.41.3.18, 150.172.238.178" }, "requestContext": { "identity": { "sourceIp": "70.41.3.18" } } }
प्रतिक्रिया:
{ "client_ip": "203.0.113.195" }
एएलबी के पीछे एडब्ल्यूएस लैम्ब्डा फ़ंक्शन में वास्तविक क्लाइंट आईपी की पहचान करने के लिए एक्स-फॉरवर्डेड-फॉर हेडर को सावधानीपूर्वक संभालने की आवश्यकता होती है। यह दृष्टिकोण सटीक आईपी लॉगिंग सुनिश्चित करता है और उपयोगकर्ता इंटरैक्शन को वैयक्तिकृत और सुरक्षित करने के लिए एप्लिकेशन की क्षमता को बढ़ाता है।
एडब्ल्यूएस एएलबी दस्तावेज़ीकरण:
एडब्ल्यूएस लैम्ब्डा में पायथन:
HTTP हेडर की व्याख्या
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3