关于ip地址,以及代理服务器

现有这么一个功能:

背景:公司有一个网站只能内网访问,员工要在家办公只能通过vpn服务器;
功能:网站有个签到功能,能签到的前提是这个员工是在公司办公,在家办公不能签到。
实现:前端通过webrtc获取本机ip地址,通过接口传给后端,后端通过网段来判断是否在公司,来告诉前端是否能显示签到按钮。

我的疑问:

  1. 后端说不能通过请求头里的ip地址来判断是否在内网,那请求头里获取的IP地址是电脑的外网ip还是vpn服务器的ip?
  2. 前端拿到的是内网ip,而内网ip不是路由器分配的吗?那两个局域网下的主机ip地址不会重复吗?大多不都是192.168.xxx.xxx吗?后端是怎么判断的?还是说公司网络分配的ip地址有啥特别的?

我的网络基础知识不好,有描述不对的地方请见谅。

阅读 4.2k
3 个回答

一般来说 VPN 都是基于 TCP 的(比如 SOCKS5),这些协议比 HTTP(S) 更底层,没有所谓的 “请求头”;而且 VPN 不会改变客户端传输的 HTTP(S) 报文内容,“请求头里获取的 IP 地址” 就更无从谈起。

建议学习一下网络编程,理解一下这些协议各自有什么用途,就能理解服务器究竟是怎么取得客户端 IP 的了。


P.S. WebRTC 可以通过 STUN 获取其在子网下的 NAT 地址,跟你们内网的服务器不在一个子网网段内就可以被识别了。不过像你们这么应用的我倒是头一回见,因为其实这种做法并不可靠,只要知道你们内网网段是怎么划分的、子网掩码是多少,完全可以在外网用相同的配置弄出来“看起来没问题”的 IP 出来。

后端拿到的是vpn的地址,前端应该是拿不到你本地ip的,即使拿到了也没有用,它是内网ip没有意义。通过ip来判断打卡,我感觉不可行。

服务端通过header拿到的ip,如果是内网是电脑的ip,如果是外网则是外网ip/vpn ip。还有就是看服务器有没有前置均衡的配置,配置没设置好会均衡的ip。用这个判断准确性有一定的问题

WebRTC抓取本地ip,这个只需把家里的电脑ip设置成公司一样即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题