我正在运行一个鱿鱼服务器。
我想限制我的用户使用他们的用户名来使用我的代理服务器。例如,我为名为 (user1) 的用户名定义了一个限制,例如,如果 3 个设备同时使用该用户名连接并使用代理服务器,则没有其他人可以使用该用户名连接到代理服务器,并且使用它直到三个用户之一停止使用代理。
我有什么办法可以做到这一点吗?
如果我的问题无法理解并且我解释的方式不够好,请提前原谅......
答案1
我认为鱿鱼不可能做到这一点。
您可以设置一个用户的最大 IP 地址数(请参阅max_user_ip
acl类型)但没有用于 http/proxy auth 的注销机制。
至少,没有一致或可靠的机制。有些浏览器很容易忘记身份验证凭据,但大多数浏览器不会……现在好像 http 身份验证并没有被广泛使用,每个人都使用某种登录页面和 cookie 进行身份验证。即使在 90 年代中期,http auth 在使用时也非常烦人,因为在任何人考虑或实现网站的用户会话管理以解决网络的无状态性质之前,它是唯一常用的选项。
即使可能,您也会遇到用户忘记或懒得注销,或者无法注销的问题,因为他们在台式机上登录,而现在却在远方的笔记本电脑或平板电脑上登录。
所以,没有注销按钮。
但是,有一个生存时间 (ttl) 设置验证 IP TTL- 这样当用户进行身份验证时,授权将在 X 秒内有效。
解决办法:设置max_user_ip
为3,且authenticate_ip_ttl
为3600秒左右(1小时)。这应该足够人们使用代理,而不会在主动使用设备进行浏览时不断受到身份验证请求的困扰,但也足够短,以至于他们在其他设备上的登录很快就会超时。
摘自squid.conf示例:
# acl aclname max_user_ip [-s] number
# # This will be matched when the user attempts to log in from more
# # than <number> different ip addresses. The authenticate_ip_ttl
# # parameter controls the timeout on the ip entries. [fast]
# # If -s is specified the limit is strict, denying browsing
# # from any further IP addresses until the ttl has expired. Without
# # -s Squid will just annoy the user by "randomly" denying requests.
# # (the counter is reset each time the limit is reached and a
# # request is denied)
# # NOTE: in acceleration mode or where there is mesh of child proxies,
# # clients may appear to come from multiple addresses if they are
# # going through proxy farms, so a limit of 1 may cause user problems.
# TAG: authenticate_ip_ttl
# If you use proxy authentication and the 'max_user_ip' ACL,
# this directive controls how long Squid remembers the IP
# addresses associated with each user. Use a small value
# (e.g., 60 seconds) if your users might change addresses
# quickly, as is the case with dialup. You might be safe
# using a larger value (e.g., 2 hours) in a corporate LAN
# environment with relatively static address assignments.
#Default:
# authenticate_ip_ttl 1 second