2010-04-12 82 views
5

Tôi cần có khả năng tìm địa chỉ IP của máy chủ mà trang hiện đang thực thi. Tôi có một số mã mà gọi một trang web của bên thứ ba và phải vượt qua một khóa cụ thể mà thay đổi tùy thuộc vào máy chủ đó là trên. Có một biến CGI hoặc một số cách trong ColdFusion để xác định địa chỉ IP của máy chủ lưu trữ là gì?Cách lấy địa chỉ IP của máy chủ ứng dụng

Trả lời

1

Cách an toàn nhất là sử dụng dịch vụ như WhatIsMyIP. Nếu máy chủ đứng sau NAT, thì hệ điều hành không có kiến ​​thức về địa chỉ IP bên ngoài.

Có nhiều câu hỏi trong SO về vấn đề này, xem ví dụ here.

4

Có hai lý do tại sao một chương trình không thể truy vấn các máy chủ nó đang chạy trên và xem những gì chỉ IP của nó là:

  1. Nó có thể có nhiều ip, và ngắn nhìn qua tất cả các loại dữ liệu hạt nhân cấu trúc bạn không thể biết được cái nào sẽ được sử dụng cho một kết nối gửi đi.

  2. Nó có thể kết nối với thế giới bên ngoài mặc dù tường lửa NAT hoặc một số loại proxy để thế giới bên ngoài sẽ thấy IP khác với bất kỳ IP nào được định cấu hình trên hộp của bạn.

Thực ra, có thể có nhiều hơn hai loại đó, nhưng đó là những thứ đã xảy ra với tôi.

Do đó, cách đơn giản nhất là kết nối với một hộp khác ở đâu đó bên ngoài mạng công ty của bạn và xem IP mà bạn nghĩ mình có. Tôi sử dụng một kịch bản CGI hai dòng chạy trên hộp colo của tôi để phát hiện IP của máy chủ gia đình của tôi hiện đang có (vì vậy tôi có thể phát hiện khi công ty cáp thay đổi nó).

5

Giống như bình luận khác đã vạch ra nếu bạn cần địa chỉ IP bên ngoài như các trang web của bên thứ ba nhìn thấy nó thì có thể bạn nên sử dụng các phương pháp tiếp cận bên ngoài mà họ đề xuất.

Tuy nhiên nếu các bên thứ ba là cho phép bạn truy cập vào một số hình thức đó là dựa trên một IP thực tế như Server thấy bản thân và không phải là IP khi họ nhìn thấy nó, bạn có thể sử dụng

<cfset cName = CreateObject("java", "java.net.InetAddress").getLocalHost().getHostAddress()> 

<cfdump var="#cName#"> 
2

Bạn có thể sử dụng CGI .LOCAL_ADDR để xác định địa chỉ IP của máy chủ của bạn (CFML tương đương với $ _SERVER của PHP ["SERVER_ADDR"]). Nó hoạt động trên IIS và Apache bằng cách sử dụng ColdFusion hoặc Railo, vì bạn không phải là một Proxy, không natting IP máy chủ của bạn và chỉ có một IP được gán cho máy chủ của bạn (không chắc chắn IP sẽ được hiển thị, nếu có nhiều hơn một).

0
<cfhttp url="http://www.whatismyip.com/" result="myresult" resolveurl="yes"> 
<cfoutput>#myresult.filecontent#</cfoutput> 
Các vấn đề liên quan