请教各位,能否将 openVPN 中的流量,再利用二级代理转发?

2014-11-03 09:12:53 +08:00
 kkgogo
现状:
windows服务器(A)上安装openVPN服务端。
客户端(B、C、D)均可利用openVPN客户端连接A来访问网络。
A、B、C、D均处于同一局域网。

问题:
目前有两条http代理,例如xxx.xxx.xxx.xxx:8888(电信)、yyy.yyy.yyy.yyy:9999(教育网),我想把控制权交给A,人工在A中配置或切换上述的两个http代理。从而最终实现:BCD的使用者不用关心如何切换代理,只需要通过openVPN连接到A,就可以利用这两个http代理。

真心请教各位技术达人,本人这方面小白,周末已经研究两天未果。
7888 次点击
所在节点    问与答
19 条回复
aru
2014-11-03 09:22:02 +08:00
不能
aru
2014-11-03 09:23:48 +08:00
但是你可以在A中设立一个代理,根据需要将上层代理设为电信或教育网,B/C/D设为A上的代理即可
kkgogo
2014-11-03 09:39:04 +08:00
@aru 谢谢回复,这个我也研究过了,例如A上安装ccproxy,利用里面的二级代理功能可以实现。但BCD只能通过openVPN与A连接后,才能上网,这个是前提……头疼啊。再次感谢兄弟回复
aru
2014-11-03 13:06:05 +08:00
@kkgogo 似乎不冲突呀
vpn连接后,输入A的vpn ip,和ccproxy的端口,可以么?
zk8802
2014-11-03 13:22:57 +08:00
OpenVPN 是支持 socks 代理的。
kkgogo
2014-11-03 13:33:47 +08:00
@aru 不理解,从哪里输入?
kkgogo
2014-11-03 13:35:30 +08:00
@zk8802 感谢回复,我不知道从哪里设置二级代理,不是用socks连接openVPN,是连接VPN后,客户机都使用VPN服务端设置的http或socks代理
aru
2014-11-03 14:11:11 +08:00
在客户端浏览器的代理设置里面输入,主机: A的vpn ip(非A的内网IP), 端口 ccproxy的端口
kkgogo
2014-11-03 14:29:37 +08:00
@aru 不行的,如果按照你的说法,我直接将xxx、yyy的地址给到BCD就可以了。根本不需要A。这个是有前提的,前提就是BCD只能通过openVPN或其它VPN连接方式,才能上网。
zk8802
2014-11-03 14:40:03 +08:00
我觉得 @aru 说的是对的。A、B、C、D 处在同一个 VPN 中,B、C、D 可以得到 A 在虚拟网(VPN)中的 IP,假设为 a.b.c.d。你只要在 A 上设置 CCProxy,让它监听 a.b.c.d 的某个端口 e,然后让 B、C、D 以 a.b.c.d:e 作为代理即可。

注意这里的 a.b.c.d 不是 A 的内网 IP 或者公网 IP,而是 A 在虚拟网(VPN)中的 IP,也就是服务器 A 上 TAP 虚拟网卡的 IP。
kkgogo
2014-11-03 14:57:46 +08:00
@zk8802
@aru

两位说的我明白,但我这边有一个很打脸的现实情况。就是BCD三台电脑的使用者,根本不懂去设置代理。只需要每天打开电脑->启动openVPN客户端GUI->右键->connect,就可以了……这个虽然很矫情,但提供openVPN连接,是做为一项服务提供给我这个项目的客户的,真的不能改变使用方式,抱歉。

如果是我们三个人使用,也就不用那么费事了,我连VPN都不用架设,直接把xxx.xxx.xxx.xxx:8888、yyy.yyy.yyy.yyy:9999这两条地址给两位就行了,但现实中没办法,我也尝试过改变配置方式,但项目是半路接手的,而且openVPN是做为一项服务,跟客户收了费的……淡腾啊
aru
2014-11-03 15:30:29 +08:00
我有一个想法,不确定是否可行,不过你可以做个测试。
在A上安装一个linux虚拟机,安装openvpn server 和 squid,openvpn 推送默认网关。
squid设置为透明代理模式,将其上层代理设为电信或教育网代理
将客户端对80/443端口访问转发到squid
kkgogo
2014-11-03 15:46:59 +08:00
@aru
感谢提供思路,要是在windows下没有现成的解决方案,就只能采用这种方式。目前看来,只改动A,自己就可以做主
zk8802
2014-11-03 16:32:10 +08:00
squid 是可以跑在 Windows 上的。这样你就不用装 Linux 虚拟机了,直接在 Windows 上配置好 squid 透明代理,然后让你的 OpenVPN Server 推一条新网关(代替原来的默认网关)给客户就行了。
kkgogo
2014-11-03 21:54:11 +08:00
@zk8802 OK,我试下。
a3587556
2016-04-13 15:52:26 +08:00
@kkgogo 楼主 你这个方案最后成功解决了吗?
kkgogo
2016-04-13 23:52:09 +08:00
@a3587556 解决了。就是 14 楼的解决方案,虽然按原来的目标,也做了妥协。另外感谢 @zk8802 @aru ,发贴借助二位力量最终解决,却不给个回应,实属不该,抱歉。再次致谢。
a3587556
2016-04-17 23:30:59 +08:00
@kkgogo 后来我也在官方文档上查到了,可以直接在服务端的配置文件里面 push 代理地址和端口或者是 PAC 文件到客户端
cok3307788
2018-03-04 22:01:26 +08:00
@a3587556 请问你查到的是如何从服务端推送代理地址和端口的?我查了下官方文档,没有查到-_-
我查到的都是:如何通过 http 代理或者 sock 来连接 openvpn 服务端,我想要的是连接上服务端以后,客户端把流量转发到 openvpn 子网中的一台机器上。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/143530

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX