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

2018-03-20 17:30:52 +08:00
 godlong

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

单位全国大内网,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 的转发,不知道思路。

大家有更好的方案吗

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

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

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

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

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

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

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

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

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


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

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

网站倒没屏蔽,只是不想通过公网踏板服务器。。。。
pagxir
2018-03-20 19:16:37 +08:00
redsocks 可以实现 tcp 到 https 代理的转发,至于 udp 就只能用其他服务器。反正没啥难度,送分题
godlong
2018-03-20 19:17:33 +08:00
@xenme 你说的去掉 ecs 就好是什么意思呢?去掉 ecs 后爱快就没法连接互联网了.爱快没有 http 代理出口的设置。
godlong
2018-03-20 19:19:55 +08:00
@pagxir 大神你意思是 tcp 和 udp 分开走吗?
tcp 直接走 http 代理,udp 走外网腾讯服务器中转?思路很好,可是怎么实现呢?搜了一下没有教程呀,能说说吗?这样 udp 带宽少,腾讯 2M 的带宽应该稍微好点。谢谢
xenme
2018-03-20 19:22:36 +08:00
内网都可以 ikuai 了直接上 openwrt 或者 lede,然后透明代理到 10.10.10.10 ,终端网关指向 lede 即可。
pagxir
2018-03-20 19:23:20 +08:00
linux 本来就策略路由的,根据协议路由 /地址转换没啥问题。
huangya
2018-03-20 19:26:45 +08:00
@godlong 带 ovpn 的路由器或者路由器后面接一个功率很小的服务器 比如树莓派。树莓派上运行 ovpn
nadoo
2018-03-20 19:45:13 +08:00
准备:
1. 局域网内 linux 系统一台;最好采用 arm cpu 的无线路由,刷 lede ;
2. glider: https://github.com/nadoo/glider
3. 终端(pc/手机),连接 1 的无线路由;(网关是该无线路由)

tcp 透明代理:
1. 在网关上运行 glider 的 redirect 模式,将请求通过 http 代理直接转发出去,不需要走腾讯云流量
```glider -verbose -listen redir://:12345 -forward http://10.10.10.10:8080```
2. 配置 iptables 规则,将所有 tcp 请求转到本地 12345 端口
```
iptables -t nat -I PREROUTING -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -I OUTPUT -p tcp -j REDIRECT --to-ports 12345
```

udp,glider 暂时只能实现 udp over tcp 固定端口的隧道式转发,后面计划加上 tproxy 的支持,应该可以实现 udp 的透明代理
udp over tcp 测试:
1. 腾讯云运行 glider 服务端
```
glider -verbose -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443
```

2. 本地 linux 网关运行 glider 客户端,目前固定端口测试
```
glider -listen uottun://:53=8.8.8.8:53 -forward http://10.10.10.10:8080,ss://AEAD_CHACHA20_POLY1305@腾讯云 ip:8443
```
解释:
-listen uottun: 本地监听 udp53 端口,并通过 udp over tcp 发送请求至 8.8.8.8:53
-forward http://xxx,ss://xxx,通过 http 代理转发,连接远端 glider 的 ss 服务端,ss 服务端负责 udp 请求 8.8.8.8:53,并通过 tcp 返回 http 代理,进而返回 linux 网关上的 glider,glider 通过 udp 返回给终端
29EtwXn6t5wgM3fD
2018-03-20 19:46:31 +08:00
用 sstap 可以把 http 转成全局代理
29EtwXn6t5wgM3fD
2018-03-20 19:46:53 +08:00
转成 vpn
godlong
2018-03-20 19:52:03 +08:00
@shengyu 这个试过了,windows 下用 sstap 把 http 转之后,可以打开 ip 网站,但是打不开域名网站,猜测是 DNS 的 udp 包没转成,因为 sstap 不支持 http 代理转发 udp 数据包。

而且 sstap 转之后,能把这个 windows 机子做成网关吗?您试过吗

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

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

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

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

© 2021 V2EX