V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
godlong
V2EX  ›  互联网

单位 HTTP 代理环境,如何实现透明全局代理?(附上我现在用的方法,不完美,求更好方案)

  •  
  •   godlong · 2018-03-20 17:30:52 +08:00 · 5804 次点击
    这是一个创建于 2435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境介绍: *单位三桶油之一,下班后住宿舍,偏远地没有运营商信号。只能接受单位网络。

    单位全国大内网,10.X.X.X,全国统一通过 10.10.10.10:8080 的 HTTP 代理出口上网。每次上网都需要在各类软件设置 http 代理(例如浏览器,qq,微信。)蛋疼的 IOS/ANDROID 全局就很麻烦了。

    现在目前解决方法: 首先,单位内网服务器很多,建立了个 ikuai 服务器。 腾讯云(之前用阿里云),上建立了个 openvpn 服务。 ikuai 通过 http 代理拨腾讯云的 openvpn 服务器。 ikuai 开启 VPN 服务器接受各类终端拨号接入(也可以开 PPPOE,做网关,思路一样)

    数据包这样走 终端----IKUAI----公司 HTTP 代理服务器----腾讯云 ECSOPENVPN 服务器----公司 HTTP 代理----IKUAI---终端

    这样终端就实现全局“透明”代理,包括 iOS 可以上 qq,微信。不需要单独设置 HTTP 代理。如果把终端换成带 VPN 客户端的路由器的话就是真正透明代理了。

    ======================================== 但问题是腾讯云的带宽费用太高,目前就 2M,所以造成网速太慢。

    我想的是通过建立 ubuntu,能不能使用 ss-redir 之类的技术实现在 ubuntu 里面完成 HTTP 透明代理,再把这台 ubuntu 或者 centos 机子当网关。数据就这样走。 终端----IKUAI----ubuntu 机----公司 HTTP 代理服务器----ubuntu 机-----IKUAI---终端

    这样带宽就不受腾讯 ECS 服务器 2M 限制了。 目前查了下有用的信息有 sstap,ss-redir,ssr。但苦于 HTTP 代理服务器不支持 udp 的转发,不知道思路。

    大家有更好的方案吗

    42 条回复    2018-10-24 16:15:30 +08:00
    huangunic0rn
        1
    huangunic0rn  
       2018-03-20 18:21:38 +08:00   ❤️ 1
    - 每次上网都需要在各类软件设置 http 代理 - 这个可以考虑用 PAC 解决,当然可能需要自己收集域名。
    - ovpn 打开--tcp-nodelay 调节--link-mtu 会有一定效果

    别的欢迎大佬补充
    godlong
        2
    godlong  
    OP
       2018-03-20 18:29:26 +08:00 via iPhone
    @huangunic0rn 大佬,设置 mtu 之后会加大带宽?啥原理?带宽是腾讯限制的啊。。。。能不能解释下?谢谢
    xiaodongus
        3
    xiaodongus  
       2018-03-20 18:55:40 +08:00 via iPhone   ❤️ 1
    每次上网都需要在各类软件设置 http 代理(例如浏览器,qq,微信。)蛋疼的 IOS/ANDROID 全局就很麻烦了。

    不麻烦,很多 app 都支持的,比如 小火箭
    https://i.loli.net/2018/03/20/5ab0e7e597867.png
    xihefeng
        4
    xihefeng  
       2018-03-20 19:02:01 +08:00 via iPhone   ❤️ 1
    本地开 proxifier,配合 wifi 大师之类的开启 wifi,手机不用做任何设置,调整 proxifier 就行。
    我记得当时还要装那个烂塞门铁克。。
    我又想起那段黑暗的日子,还好已经离职,美滋滋
    godlong
        5
    godlong  
    OP
       2018-03-20 19:02:11 +08:00 via iPhone
    @xiaodongus ios 暂时用这个。

    但是很多游戏玩不了,小火箭,surge 之类也不是真正把 udp 转发。。好多游戏的 udp 包还是过不去,但是用 openvpn 就真正全局了。

    谢谢回帖,期待有其他方案了!
    godlong
        6
    godlong  
    OP
       2018-03-20 19:05:39 +08:00 via iPhone
    @xihefeng 这个除了小米 wifi 其他真不行,而且也不是真正意义全局,dns 解析不了,53 端口到达不了 114.114.114.114 。

    且共享网络不方便,不如 openvpn 再开个 ikuai 方便。

    还是希望用网关,爱快。
    huangya
        7
    huangya  
       2018-03-20 19:08:12 +08:00   ❤️ 1
    >终端----IKUAI----ubuntu 机----公司 HTTP 代理服务器----ubuntu 机-----IKUAI---终端
    你这样走的话,只能对那些支持 HTTP 代理的应用。不能针对任意的 TCP/UDP 应用。比如这个应用的服务器端口是 50000.
    > 终端----IKUAI----公司 HTTP 代理服务器----腾讯云 ECSOPENVPN 服务器----公司 HTTP 代理----IKUAI---终端
    这种就没有上面的问题.

    不知道 lz 家中有没有网络并且能搞到公网 IP.这样就不会受限于腾讯云。
    xenme
        8
    xenme  
       2018-03-20 19:12:59 +08:00 via iPhone   ❤️ 1
    如果单位没有封网站的话,去掉 ecs 就好。

    如果有限制,唯一可以做的就是在外面找个跳板,买那种翻墙的在国内有服务器的或者翻回国内的,比较便宜
    godlong
        9
    godlong  
    OP
       2018-03-20 19:13:28 +08:00 via iPhone
    @huangya 你的意思是家里公网 ip 开 openvpn 替代腾讯?


    常开一台服务器吗?还是装一个带 ovpn 服务端的路由?

    我现在不倾向于通过外网放一台 ovpn 服务器来解决,想在内网解决,这样稳定性,速度就不会受外网服务器影响了,不知道这样写大佬您能不能看明白,语文表达能力不好。
    godlong
        10
    godlong  
    OP
       2018-03-20 19:15:11 +08:00 via iPhone
    @xenme 国外的服务器也考虑过,比如谷歌云,但是延迟太高太高了...

    网站倒没屏蔽,只是不想通过公网踏板服务器。。。。
    pagxir
        11
    pagxir  
       2018-03-20 19:16:37 +08:00 via Android   ❤️ 1
    redsocks 可以实现 tcp 到 https 代理的转发,至于 udp 就只能用其他服务器。反正没啥难度,送分题
    godlong
        12
    godlong  
    OP
       2018-03-20 19:17:33 +08:00 via iPhone
    @xenme 你说的去掉 ecs 就好是什么意思呢?去掉 ecs 后爱快就没法连接互联网了.爱快没有 http 代理出口的设置。
    godlong
        13
    godlong  
    OP
       2018-03-20 19:19:55 +08:00 via iPhone
    @pagxir 大神你意思是 tcp 和 udp 分开走吗?
    tcp 直接走 http 代理,udp 走外网腾讯服务器中转?思路很好,可是怎么实现呢?搜了一下没有教程呀,能说说吗?这样 udp 带宽少,腾讯 2M 的带宽应该稍微好点。谢谢
    xenme
        14
    xenme  
       2018-03-20 19:22:36 +08:00 via iPhone   ❤️ 1
    内网都可以 ikuai 了直接上 openwrt 或者 lede,然后透明代理到 10.10.10.10 ,终端网关指向 lede 即可。
    pagxir
        15
    pagxir  
       2018-03-20 19:23:20 +08:00 via Android
    linux 本来就策略路由的,根据协议路由 /地址转换没啥问题。
    huangya
        16
    huangya  
       2018-03-20 19:26:45 +08:00 via iPhone
    @godlong 带 ovpn 的路由器或者路由器后面接一个功率很小的服务器 比如树莓派。树莓派上运行 ovpn
    29EtwXn6t5wgM3fD
        18
    29EtwXn6t5wgM3fD  
       2018-03-20 19:46:31 +08:00 via iPhone
    用 sstap 可以把 http 转成全局代理
    29EtwXn6t5wgM3fD
        19
    29EtwXn6t5wgM3fD  
       2018-03-20 19:46:53 +08:00 via iPhone
    转成 vpn
    godlong
        20
    godlong  
    OP
       2018-03-20 19:52:03 +08:00
    @shengyu 这个试过了,windows 下用 sstap 把 http 转之后,可以打开 ip 网站,但是打不开域名网站,猜测是 DNS 的 udp 包没转成,因为 sstap 不支持 http 代理转发 udp 数据包。

    而且 sstap 转之后,能把这个 windows 机子做成网关吗?您试过吗
    sunulin
        21
    sunulin  
       2018-03-20 20:55:05 +08:00 via iPhone
    老毛子固件路由器了解下🙈
    WordTian
        22
    WordTian  
       2018-03-20 21:11:39 +08:00   ❤️ 1
    目标:实现在终端上不用设置就直接全局代理。

    首先是环境:
    网关处是 HTTP 代理,就是只能识别 HTTP 的包。

    然后是流程:
    终端发出 TCP/UDP 数据包
    内网得有台机器接收 TCP/UDP 数据包,并封装成 HTTP 包
    把 HTTP 包传到网关处
    外网得有台服务器把 HTTP 转回 TCP/UDP
    外网的服务器再把 TCP/UDP 发出去

    然后是实现:
    没搞过,不瞎说,坐等大神
    yaoliyc
        23
    yaoliyc  
       2018-03-20 21:40:18 +08:00 via Android
    @godlong 好像有 DNS over TCP 之类的
    godlong
        24
    godlong  
    OP
       2018-03-20 22:21:47 +08:00
    @WordTian 你的思路是对的。这个就是我主贴说的 openvpn 法。但是外网那台服务器的带宽决定我内网的上网速度了。现在是我想撇开这个外网服务器。

    因为 IOS 的 surge 可以把 HTTP 代理半全局(比如微信语音视频都可以,qq 语音视频也行),感觉是实现了 udp 的协议。

    所以我想 linux 上通过 ss-dir/redsocks2 也实现 surge 那样的功能,然后转成网关 /服务器供内网终端上网。折腾了好久的 ss-dir 好像不成功,必须要配置 ss 服务器。我不是为了翻墙,我只是为了翻阅公司的代理服务器....
    godlong
        25
    godlong  
    OP
       2018-03-20 22:24:01 +08:00
    @xenme 谢谢推荐 LELE,正在下载,准备灌装到 VMWARE 里面测试下效果。谢谢。
    WordTian
        26
    WordTian  
       2018-03-20 22:32:03 +08:00
    @godlong 从原理来看,你撇不开外网的那台机器的。
    内网有包的封装过程,外边也必须有个机器解封解封,而且外边那台机器必须能被你的网关访问到。

    一般来说外边那台机器肯定得有公网 IP 的 :(
    不过你可以瞅瞅这个贴里的东西,说不定对你有用 /t/430202
    godlong
        27
    godlong  
    OP
       2018-03-20 22:41:07 +08:00 via iPhone
    @WordTian 你说的对,可是我很好奇 surge 怎么实现的?感觉他把 tcp udp 全压进 http 代理里了。
    ios 上用 surge 微信语音,视频都没问题。但是用系统自带的 http 代理设置只能发文字微信信息。
    求解惑。

    或者说,把我现在 ios 当网关我也能接受,我就是想在电脑上实现 ios 加 surge 效果,然后把那台电脑做成网关给 ikuai 软路由使用。
    hw2411
        28
    hw2411  
       2018-03-20 22:50:43 +08:00 via Android
    是海油的吧,哈哈哈,proxifier 和 ss,想干啥都行吧
    godlong
        29
    godlong  
    OP
       2018-03-20 22:54:09 +08:00 via iPhone
    @hw2411 握爪。我试过这个方案,不算科学。。。没法做网关
    WordTian
        30
    WordTian  
       2018-03-20 22:56:31 +08:00
    @godlong 猜测 ios 在系统层面有个类似 iptables 的东西,能转发 IP 数据包。
    类 unix 系统应该都行,windows 估计够呛
    godlong
        31
    godlong  
    OP
       2018-03-20 23:03:54 +08:00
    @WordTian 所以我装了个 ubuntu 的虚拟机...但是不知道接下来怎么整,也安装了 ss-dir/redsocks2,不知道怎么个配置了
    WordTian
        32
    WordTian  
       2018-03-20 23:09:46 +08:00
    @godlong 慢慢折腾呗,生命在于折腾。。。
    说实话,要不是因为墙,我现在对网络的理解也不会有这么深
    godlong
        33
    godlong  
    OP
       2018-03-20 23:13:30 +08:00
    @WordTian 可惜咱俩翻的墙不是一堵墙,哈哈,我是翻公司的墙。
    Loyalsoldier
        34
    Loyalsoldier  
       2018-03-21 09:53:18 +08:00
    godlong
        35
    godlong  
    OP
       2018-03-21 16:30:09 +08:00
    @Loyalsoldier 感觉这个 udp2raw 也是需要公网 server 端解包的啊~~
    pagxir
        36
    pagxir  
       2018-03-22 17:41:13 +08:00 via Android   ❤️ 1
    @godlong 所以一帮没点网络知识的在这里啥推荐,好像狗屁膏药包治百病。
    pagxir
        37
    pagxir  
       2018-03-22 17:43:23 +08:00 via Android   ❤️ 1
    话说你们公司的内网有 dns 服务器么,这个服务器可以解析外网的域名么。如果可以的话,其实 udp 转发可以以后再弄。
    godlong
        38
    godlong  
    OP
       2018-03-22 18:14:37 +08:00
    @pagxir 内网的 DNS 服务器就是个笑话,只解析公司域名。我后来做了个 win2003 的 openvpn 到腾讯云,在这个 2003 上开了个 DNS 服务器。再搞了个 win2008 服务器装 sstap,DNS 域名解析由 2003 服务器完成,TCP 走 win2008,udp/ICMP 流量走 2003 服务器。感觉不是很稳定。还得再调,不是很完美。
    defunct9
        39
    defunct9  
       2018-04-14 14:51:17 +08:00 via iPhone   ❤️ 1
    开 ssh,我上去试试。ubuntu 做成网关流量走 10.10.10.10:8080 没问题
    godlong
        40
    godlong  
    OP
       2018-06-15 15:55:07 +08:00 via iPhone
    @defunct9 大侠有联系方式了?
    defunct9
        41
    defunct9  
       2018-06-15 17:04:18 +08:00
    @godlong 微信:defunct
    cia84806698
        42
    cia84806698  
       2018-10-24 16:15:30 +08:00
    注册一个账号回复一下
    win10+sstap 完美解决
    win7 不知什么原因无法使用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3220 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:30 · PVG 20:30 · LAX 04:30 · JFK 07:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.