V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kkgogo
V2EX  ›  问与答

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

  •  
  •   kkgogo · 2014-11-03 09:12:53 +08:00 · 8244 次点击
    这是一个创建于 3703 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现状:
    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代理。

    真心请教各位技术达人,本人这方面小白,周末已经研究两天未果。
    19 条回复    2018-03-04 22:01:26 +08:00
    aru
        1
    aru  
       2014-11-03 09:22:02 +08:00
    不能
    aru
        2
    aru  
       2014-11-03 09:23:48 +08:00
    但是你可以在A中设立一个代理,根据需要将上层代理设为电信或教育网,B/C/D设为A上的代理即可
    kkgogo
        3
    kkgogo  
    OP
       2014-11-03 09:39:04 +08:00
    @aru 谢谢回复,这个我也研究过了,例如A上安装ccproxy,利用里面的二级代理功能可以实现。但BCD只能通过openVPN与A连接后,才能上网,这个是前提……头疼啊。再次感谢兄弟回复
    aru
        4
    aru  
       2014-11-03 13:06:05 +08:00
    @kkgogo 似乎不冲突呀
    vpn连接后,输入A的vpn ip,和ccproxy的端口,可以么?
    zk8802
        5
    zk8802  
       2014-11-03 13:22:57 +08:00
    OpenVPN 是支持 socks 代理的。
    kkgogo
        6
    kkgogo  
    OP
       2014-11-03 13:33:47 +08:00
    @aru 不理解,从哪里输入?
    kkgogo
        7
    kkgogo  
    OP
       2014-11-03 13:35:30 +08:00
    @zk8802 感谢回复,我不知道从哪里设置二级代理,不是用socks连接openVPN,是连接VPN后,客户机都使用VPN服务端设置的http或socks代理
    aru
        8
    aru  
       2014-11-03 14:11:11 +08:00   ❤️ 1
    在客户端浏览器的代理设置里面输入,主机: A的vpn ip(非A的内网IP), 端口 ccproxy的端口
    kkgogo
        9
    kkgogo  
    OP
       2014-11-03 14:29:37 +08:00
    @aru 不行的,如果按照你的说法,我直接将xxx、yyy的地址给到BCD就可以了。根本不需要A。这个是有前提的,前提就是BCD只能通过openVPN或其它VPN连接方式,才能上网。
    zk8802
        10
    zk8802  
       2014-11-03 14:40:03 +08:00   ❤️ 1
    我觉得 @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
        11
    kkgogo  
    OP
       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
        12
    aru  
       2014-11-03 15:30:29 +08:00
    我有一个想法,不确定是否可行,不过你可以做个测试。
    在A上安装一个linux虚拟机,安装openvpn server 和 squid,openvpn 推送默认网关。
    squid设置为透明代理模式,将其上层代理设为电信或教育网代理
    将客户端对80/443端口访问转发到squid
    kkgogo
        13
    kkgogo  
    OP
       2014-11-03 15:46:59 +08:00
    @aru
    感谢提供思路,要是在windows下没有现成的解决方案,就只能采用这种方式。目前看来,只改动A,自己就可以做主
    zk8802
        14
    zk8802  
       2014-11-03 16:32:10 +08:00
    squid 是可以跑在 Windows 上的。这样你就不用装 Linux 虚拟机了,直接在 Windows 上配置好 squid 透明代理,然后让你的 OpenVPN Server 推一条新网关(代替原来的默认网关)给客户就行了。
    kkgogo
        15
    kkgogo  
    OP
       2014-11-03 21:54:11 +08:00
    @zk8802 OK,我试下。
    a3587556
        16
    a3587556  
       2016-04-13 15:52:26 +08:00
    @kkgogo 楼主 你这个方案最后成功解决了吗?
    kkgogo
        17
    kkgogo  
    OP
       2016-04-13 23:52:09 +08:00
    @a3587556 解决了。就是 14 楼的解决方案,虽然按原来的目标,也做了妥协。另外感谢 @zk8802 @aru ,发贴借助二位力量最终解决,却不给个回应,实属不该,抱歉。再次致谢。
    a3587556
        18
    a3587556  
       2016-04-17 23:30:59 +08:00
    @kkgogo 后来我也在官方文档上查到了,可以直接在服务端的配置文件里面 push 代理地址和端口或者是 PAC 文件到客户端
    cok3307788
        19
    cok3307788  
       2018-03-04 22:01:26 +08:00
    @a3587556 请问你查到的是如何从服务端推送代理地址和端口的?我查了下官方文档,没有查到-_-
    我查到的都是:如何通过 http 代理或者 sock 来连接 openvpn 服务端,我想要的是连接上服务端以后,客户端把流量转发到 openvpn 子网中的一台机器上。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1652 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:40 · PVG 00:40 · LAX 08:40 · JFK 11:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.