I collect statistics on IP addresses from where users visit my site and I have noticed what there are only two IP addresses presented, 172.16.16.1 and 172.16.16.248. The property I use to determine IP address is
Request.UserHostAddress
What could be a reason of IP address information losing? All the users are from around the world, so they cann't be behind only two proxies.
Building on tomfannings answer...
This looks like the work of a reverse proxy. When you use a reverse proxy, the client connects to the proxy, which itself opens a new connection to your server. Since ASP.NET uses the infos of the incoming connection to fill the user address, you get the address of the reverse proxy.
If you are indeed in this configuration, you'll need help from the reverse proxy to get the right information. Most reverse proxies offer the possibility to add a header to the HTTP request, with the real IP address of the client. Check the documentation of your proxy.
Request.ServerVariables("REMOTE_ADDR") isn't work. this problem is because ur server is probably behind some proxy.(or connected to internet via some network) or your router settings are set as NAT (Network Address Translation) this technique doesnt pass ip to server. in such situations u can't get IP address using Asp.net however Java Provide applet using which u can get IP Address in any case.
( for Netscape, Mozilla and Firefox only, and Java must be enabled)
Building on Dave Anderson's answer, here is a snippet that takes into account a chain of reverse proxies.
I assume you are behind a NAT/Reverse Proxy so I think you have to use:
Most likely 172.16.0.0/12 is your privat LAN where 172.16.16.248 is your own address and 172.16.16.1 the address of your router/proxy.
The two addresses you've listed there are from one of the ranges defined as being private. (see here for description)
It sounds more like you're picking up the internal address of your own firewall(s)?