我现在有 10 台内网服务器,他们不能直接访问外网。
有一台公网服务器,可以访问外网。这 11 台服务器内网互通。
希望让公网服务器做代理,把 10 台内网服务器的所有 HTTP/HTTPS 请求,apt-get 请求,git 请求,pip 请求等等所有网络请求全部通过公网服务器转发出去。
请问这种需求,最高效的方案是什么?我是用 mitmproxy 来做转发,发现链接一多效率就极其底下,而且容易崩溃。
最后使用squid实现了我的需求。
但是我发现一个很奇怪的地方。在Http Headers里面,如果设置了
accept-encoding = 'gzip, deflate, br'
再走Squid,那么返回的网页是乱码。但是如果不使用Squid或者不指定accept-encoding
,那么网页就一切正常。
1 hduwillsky 2017-11-07 21:02:39 +08:00 via iPhone iptables + bridge |
![]() | 2 billion OP @hduwillsky 有点麻烦。 |
3 roychan 2017-11-07 21:38:13 +08:00 tinyproxy? squid? |
![]() | 4 Lentin 2017-11-07 22:18:25 +08:00 -0-那为什么不直接加个交换机 试试 haproxy ? |
![]() | 6 pheyer 2017-11-07 22:44:47 +08:00 via iPhone 多账户的酸酸? |
7 xenme 2017-11-07 22:46:18 +08:00 via iPhone centos 改成软路由,然后内网网关指向它就好了 |
![]() | 8 ik 2017-11-07 22:55:04 +08:00 via iPhone dhcpd 有什么问题吗? |
![]() | 9 fzinfz 2017-11-07 23:49:29 +08:00 via iPad 试下 avege |
10 kuaner 2017-11-07 23:52:09 +08:00 内网的所有机器设置默认网关到外网到那台就可以了 |
11 kuaner 2017-11-07 23:52:35 +08:00 lz 应该是阿里云的 vpc? |
14 hezhe 2017-11-07 23:56:28 +08:00 能不能用 nginx 来反向代理 |
![]() | 15 billion OP |
![]() | 18 lbp0200 2017-11-08 00:37:11 +08:00 我厂运维给我的解决方案是 polipo |
![]() | 21 liyvhg 2017-11-08 08:38:45 +08:00 via Android 我们公司几台这么做的: 公网那台架个 pptp server,内网的拨上去(设置好开机自动拨号就行)。 |
22 yingfengi 2017-11-08 08:55:45 +08:00 via Android 出口架一台墙做网关啊 |
24 0ZXYDDu796nVCFxq 2017-11-08 09:02:40 +08:00 via iPhone 1. 公网机器安装代理软件,比如 squid,然后其它 10 台配置代理,用 export http_proxy https_proxy 即可 2. 公网机器配置成网关,其它 10 台把网关改为公网的内网 IP 建议方案 1 |
![]() | 25 billion OP @liyvhg 因为还有一个 upstream 上游代理。如果这样做,岂不是公网需要全局走代理了?能不能设置只有来自内网的请求经过公网服务器再走上游代理,公网自己产生的流量不经过上游代理? |
27 JasperYanky 2017-11-08 09:08:36 +08:00 tinyproxy 最简单吧 |
28 xdz 2017-11-08 09:10:26 +08:00 如果用透明代理转发 https,会有证书问题。 |
29 kuaner 2017-11-08 09:22:28 +08:00 不需要代理软件呀,就是内网主机通过路由器上网嘛,vpc 里面都是这么干的 |
![]() | 30 sujin190 2017-11-08 09:28:14 +08:00 直接把内网的默认网关改到那台机器去呗,让后有公网 ip 的机器再开 nat 就行了啊 |
![]() | 32 ryd994 2017-11-08 10:31:31 +08:00 via Android 不止是 nat 转发,还要配置 ip_forwarding=1 |
36 pqee 2017-11-08 11:16:49 +08:00 都让开,我来现身说法: TCP 代理用 Nginx 最好,同理 HTTP HTTPS SSH 等基于 TCP 的协议全部支持。 不过楼主这种情况,建议还是上 SLB 吧,没几个钱。 |
39 yingfengi 2017-11-08 12:37:57 +08:00 via Android 额。。。vps 啊,,,我以为公司的服务器。。。 |
![]() | 40 pq 2017-11-08 12:39:03 +08:00 socks 5 proxy ? |
![]() | 41 msg7086 2017-11-08 13:46:53 +08:00 ![]() Linux: iptables masquerade iptables 是内置在内核里的,除非是自己编译内核并且手动裁剪了 iptables 模块…… Windows: RRDS https://technet.microsoft.com/en-us/library/dd469812.aspx BSD: Packet Filter https://www.openbsd.org/faq/pf/nat.html |
![]() | 42 lslqtz 2017-11-08 14:25:31 +08:00 via iPhone sniproxy ? |
![]() | 43 billion OP 最后使用 squid 实现了我的需求。 但是我发现一个很奇怪的地方。在 Http Headers 里面,如果设置了 accept-encoding = 'gzip, deflate, br' 再走 Squid,那么返回的网页是乱码。但是如果不使用 Squid 或者不指定 accept-encoding,那么网页就一切正常。 |
![]() | 44 flynaj 2017-11-08 19:20:24 +08:00 via Android 简单高效,golang 开发 https://github.com/ginuerzh/gost |