因此,我尝试做的是让 Squid 代理在一台机器上运行,同时使用 VPN 连接。我希望所有通过 Squad 代理运行的流量都将通过 VPN 进行出站。即桌面 -> (Squid 代理 -> VPN)
目标是允许我的桌面选择性地通过 VPN 进行隧道传输。这样即时消息等不需要通过 VPN 运行的功能就可以通过我的正常流量。通常我会通过 SSH 代理,但目前被迫使用 VPN 进入办公室,而 Squid 代理似乎最符合我的需要。
编辑> 我意识到我忘了说明我遇到了什么问题。我已经设置了 Squid 并验证了它能正常工作,但是一旦我连接到 VPN。所有发往 Squid 的请求都会被接受,但 Squid 无法通过 VPN 发出请求。因此客户端最终只能待在那里。
答案1
我做了类似的事情。我用两件东西来做:
$ cat bin/openproxy
#!/bin/bash
ssh -C -o ServerAliveInterval=150 -L 3128:proxy:3128 gateway.company.com
然后在 Firefox 中,我使用 FoxyProxy 将 localhost:3128 作为 *.company.com 中机器的代理。
这几乎满足了我所需要的一切。
这就是你想做的事吗?
答案2
嗯,还需要一些额外的信息:
登录到您的 squid/vpn 框。打开 vpn。您能访问任何外部地址吗?您能访问 vpn 端点和 vpn 端点的网络吗?
这个 vpn 是什么类型的 (openvpn/pptp/etc)?
启用 VPN 之前和之后的路由表是什么样子的?在 Linux 中,您可以使用
/sbin/route -n
或ip route show
答案3
看起来像是路由问题。当您连接到 VPN 时,默认网关可能不会自动更改。
答案4
这可能比原始问题稍微复杂一些,但我正尝试使用 Squid 做同样的事情,我已经为 Transmission 流量设置了 VPN 隧道,但管理 Transmission 的 http UI 的管理流量由 Nginx 反向代理,以便同一 LAN 上的主机可以访问它。这是一种“拆分隧道”方法,因为我只希望某些应用程序使用隧道,而其他应用程序则不使用,因此我拥有 iptables 规则以及路由来促进这一点,方法是从 Transmission 使用的用户那里获取流量并将该流量路由到 VPN 虚拟 NIC tun1,但当 VPN 关闭时,出于安全预防措施,不会发送任何流量。
我想将相同的原理应用于同一主机上的 Squid 代理,但在这种情况下,添加 Squid 以相同方式运行的用户(代理)。我相信我可以从 Web 浏览器反向代理流量,这将代理流量转发到 Squid,Squid 除其他外还将通过 VPN 隧道转发流量。我不确定这将如何工作,但我有一些可能的方法。
有关我正在尝试的更多详细信息,请查看我的Reddit 帖子。我会更新这个答案(因为它实际上给你留下了更多的问题而不是答案),所以这对那些试图做同样事情的人来说实际上是有用的!