关于ip地址,以及代理服务器
现有这么一个功能:
背景:公司有一个网站只能内网访问,员工要在家办公只能通过vpn服务器;
功能:网站有个签到功能,能签到的前提是这个员工是在公司办公,在家办公不能签到。
实现:前端通过webrtc获取本机ip地址,通过接口传给后端,后端通过网段来判断是否在公司,来告诉前端是否能显示签到按钮。
我的疑问:
- 后端说不能通过请求头里的ip地址来判断是否在内网,那请求头里获取的IP地址是电脑的外网ip还是vpn服务器的ip?
- 前端拿到的是内网ip,而内网ip不是路由器分配的吗?那两个局域网下的主机ip地址不会重复吗?大多不都是192.168.xxx.xxx吗?后端是怎么判断的?还是说公司网络分配的ip地址有啥特别的?
我的网络基础知识不好,有描述不对的地方请见谅。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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设置成公司一样即可