How to get Rails Internal IP

I am using a Rails 4 application, when in production mode i am getting same IP address for all the members of the same organisation. The requirement is to get different IP address for each member so as to uniquely identify each system.

request.remote_ip request.env['HTTP_X_REAL_IP'] request.env["HTTP_X_FORWARDED_FOR"]

All these fetches me the same IP for each system. How can i uniquely identify each system? Please help.

Thanks and Regards, Toby

What does the "same IP address" belong to?

What app server are you using? Do you have a proxy in front of it (e.g. nginx, Apache httpd)? If so, show the relevant configuration.

If this is an application on the Internet, it is perfectly possible that you will see one IP, an most organisations traffic is natted these days

I guess you could use some form of JavaScript trickery to retrieve information from the browser instance but not sure how accurate it would be

Depends on your use case I guess, but why not set a cookie for each visitor and check that way

remote_ip is calculated from the other two (and a few additional headers). The calculation may sometimes misunderstand the network topology, so if you’re getting an IP that’s part of your infrastructure (load balancers / proxies / etc) for every client it may be worth looking into.

Otherwise, your options are very limited. One of the purposes of organization-level NAT is to avoid leaking internal addresses / machine identities to the outside (for security). I’ve read of a way to use the Javascript WebRTC API to get the client’s LAN address, but I wouldn’t recommend depending on that for anything like licensing or authorization since any data coming from JS is trivially spoofable.

I’d recommend that you push back on whoever / whatever is imposing this requirement to figure out what the intent is. You may need to find an alternative way to achieve that goal.

–Matt Jones

Thanks, and will try using cookies first.