วิธีรับ IP ของผู้เยี่ยมชมบนเครื่องโหลดบาลานซ์โดยใช้ asp.net

เรามีเซิร์ฟเวอร์ปรับสมดุลการโหลดสองตัว โดยที่เราได้โฮสต์แอปพลิเคชัน asp.net 3.5 ไว้ในขณะนี้ เรากำลังใช้คำขอ userhostaddress เพื่อรับ IP ของผู้เยี่ยมชม แต่มันให้ Load Balancer IP แทนที่จะเป็น IP จริง ใครสามารถมีรหัสสำหรับสิ่งนี้


person Jalpesh Vadgama    schedule 25.03.2010    source แหล่งที่มา


คำตอบ (3)


ปัญหานั้นเกี่ยวข้องกับการที่ "โหลดบาลานเซอร์" ทำหน้าที่เป็นพร็อกซีมากกว่า คุณใช้โหลดบาลานเซอร์ประเภทใด ฉันรู้ว่าเซิร์ฟเวอร์ Microsoft ISA มีการตั้งค่าให้ส่งที่อยู่ IP ของผู้ใช้ดั้งเดิมผ่านไปยังเว็บเซิร์ฟเวอร์

มิฉะนั้นคุณจะต้องเขียนเพจเพื่อดัมพ์ตัวแปรเซิร์ฟเวอร์และดูว่ามีการเพิ่มตัวแปรเซิร์ฟเวอร์เพิ่มเติมที่ให้ที่อยู่ IP ไคลเอนต์จริงแก่คุณหรือไม่

person David McEwing    schedule 25.03.2010
comment
ฉันจะทำสิ่งนั้นกับเพจได้อย่างไร? เราได้ตรวจสอบตัวแปรทั้งหมดแล้ว แต่ไม่มี IP จริงอยู่ที่นั่น - person Jalpesh Vadgama; 31.03.2010
comment
นี่คือหน้า ASP.NET ธรรมดาที่ทิ้งตัวแปรเซิร์ฟเวอร์ทั้งหมด: weblogs.asp.net/owscott/viewing-all-server-variables-for-a-site แต่คุณยังสามารถเปิดการติดตามใน ASP.NET เพื่อแสดงสิ่งต่าง ๆ มากมายเช่นนั้นบนหน้าใดก็ได้ msdn.microsoft.com/en-us/library/94c55d08.aspx - person Matthew Lock; 24.11.2014

ฉันคิดว่าคุณต้องค้นหาไม่เพียง แต่สำหรับ HTTP_X_FORWARDED_FOR เท่านั้น แต่สำหรับทั้งหมดนั้น ขึ้นอยู่กับว่าโหลดบาลานซ์ของคุณใช้อะไร

Context.Request.ServerVariables[CheckAllBelowList]

"HTTP_X_COMING_FROM",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_VIA",
"HTTP_COMING_FROM",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_FROM",
"HTTP_PROXY_CONNECTION",
"HTTP_CLIENT_IP",
"CLIENT_IP",
"FORWARDED",

การส่งคืนหนึ่งในนั้นคือ Ip ที่แท้จริงของไคลเอนต์ของคุณ ยกเว้นว่าเป็นพร็อกซีอื่น ฉันยังต้องเรียนรู้ว่าบางคนสามารถรับสิ่งนี้ได้อย่างไร เพื่อค้นหาผู้ใช้ที่อยู่หลังพร็อกซี 2-3 ตัว...

ท่านใดทราบเรื่องอื่นกรุณาบอกด้วยนะครับ

person Aristos    schedule 25.03.2010

ขึ้นอยู่กับเซิร์ฟเวอร์การปรับสมดุลโหลด IP ของลูกค้าสามารถ/ควรถูกเขียนไปที่:

Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

แต่ระวังหากผู้ใช้อยู่หลังพร็อกซีด้วย ค่าอาจเป็นไคลเอ็นต์ดั้งเดิมของพร็อกซีแทนที่จะเป็นไคลเอ็นต์ของโหลดบาลานเซอร์ (ซึ่งในกรณีนี้คือ IP พร็อกซี) ฉันไม่แน่ใจว่าพฤติกรรมใดที่เป็น "ปกติ"

หวังว่าจะช่วยนะอเล็กซ์

person Alex Duggleby    schedule 25.03.2010