有没有办法让一台路由器连接多台设备并使用不同的 HTTP 代理?例如,一台连接了 10 台设备的路由器需要让每台设备连接到不同的代理。如果您好奇我为什么不直接在机器上设置代理,那么代理无法在机器上设置。我对路由器不熟悉,所以请用外行人能理解的术语来讲。
barlop 的注释
纠正了他的问题,指出 HTTP 代理,这才是他的意思,而不仅仅是代理,这有点含糊不清。
答案1
不,你不能,而且这听起来也是一个非常糟糕的设计选择。
代理管理从设备到服务(通常是 Web 服务)的连接,但如果设备本身没有设置代理,设备将不知道该去哪里,那么设备将只尝试标准连接,而您的代理必须在传输过程中捕获来自设备的尝试连接。这通常称为透明代理。
但是,所有这些拦截仍然需要在同一个地方(路由器)进行捕获,并使用相同的规则来匹配连接类型。您不能将多个代理服务绑定到同一个服务规则,因为没有硬件知道您要运行哪一个。您没有为每个设备配备一个路由器,您只有一个路由器,因此您只有一个代理服务。
您可能应该重新检查您正在尝试解决的任何问题,看看是否有其他方式来查看或重新表述它。研究路由器和代理通常也可能有帮助。根据您的情况,可能可以配置单个代理以对不同的客户端设备应用不同的策略,但我对此类服务不够熟悉,无法说明如何做到这一点。
答案2
我想说的第一点是:永远不要要求别人“帮我做一些奇怪的事情,但只能说我的语言”。在提出要求之前,你总是必须学习他们的语言。所以你没有其他选择,只能让自己更熟悉所有这些路由器的东西,或者付钱给已经熟悉并可以为你做这项工作的人。
因此,您需要一个能够将数据包重定向到代理的路由器;大多数(如果不是全部) SOHO 路由器都无法做到这一点。此外,您应该能够输入任意防火墙规则,而不仅仅是单个复选框“执行透明代理”。这可能是运行某些 Linux 发行版的传统 PC,或某些 Cisco 路由器,或类似的东西。任何能够完成您的任务的路由器都会有一个命令行界面,并且 CLI 将是主要的和推荐的,甚至是配置它的唯一方法。
您需要在某个地方运行这些代理。例如,这可能是运行某些代理软件的 10 个独立实例的同一台传统 PC(在一个系统中运行 10 个独立代理不是一件容易的事),或者带有代理的 10 个虚拟机(或 OS 容器),这可能更容易,但需要更多资源。我经常使用 Squid 进行代理,它可以进行透明代理,我更喜欢 LXC 容器,但我不确定 LXC 环境是否足够,这需要调查。
确定如何识别您的设备。这可能是 IP 地址,或者如果您的路由器和这些设备之间没有其他路由器,则可能是 MAC 地址。
当您完成所有决定后,您可以返回这里并询问如何配置您选择的内容。