How to get Rails Internal IP

67 views
Skip to first unread message

Toby Joy

unread,
Feb 13, 2016, 5:15:29 AM2/13/16
to rubyonra...@googlegroups.com
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

--
Posted via http://www.ruby-forum.com/.

Hassan Schroeder

unread,
Feb 13, 2016, 1:08:24 PM2/13/16
to rubyonrails-talk
On Sat, Feb 13, 2016 at 2:14 AM, Toby Joy <li...@ruby-forum.com> wrote:
> 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.

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.

--
Hassan Schroeder ------------------------ hassan.s...@gmail.com
http://about.me/hassanschroeder
twitter: @hassan
Consulting Availability : Silicon Valley or remote

Mike

unread,
Feb 14, 2016, 5:43:36 AM2/14/16
to Ruby on Rails: Talk
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

Matt Jones

unread,
Feb 15, 2016, 4:10:40 PM2/15/16
to Ruby on Rails: Talk


On Saturday, 13 February 2016 05:15:29 UTC-5, Ruby-Forum.com User wrote:
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.


`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

Toby Joy

unread,
Feb 23, 2016, 2:01:28 AM2/23/16
to rubyonra...@googlegroups.com
Thanks, and will try using cookies first.
Reply all
Reply to author
Forward
0 new messages