谈DevOps平台实施:实现从内网拉取外网依赖的一种方案

背景

在大型企业内部,网络通常会被划分成多个不能直接访问的区域。比如本例中,网络被分成了内网和DMZ两个区域。出于安全的考虑,内网的机器不能直接访问外网。内网访问 DMZ 的机器、DMZ的机器要访问外网都需要单独提流程。

但是,我们的应用能部署到 DMZ 区域中吗?答案是技术上不是问题,但是管理上不允许这样做。

所以,在这样的大型企业内部,应用都会部署到内网中(本例中的A、B、C、D)。

可是,总会有一些应用需要发 HTTP 请求到外网。比如实施DevOps平时,我们的应用需要从外网拉取依赖。

这时,怎么办呢?本文就是为解决此问题而写。

解决方案

最后的解决方案如下:

640?wx_fmt=png

  • Privoxy 是一个HTTP 协议过滤代理。

  • Squid 是HTTP代理服务器软件。Squid用途广泛,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。

说实话,光看介绍,笔者一开始也一头雾水。不过,看完本文就应该知道它们的作用了。

以下是方案具体实施步骤:

1. 在应用机器上设置全局环境变量:

export http_proxy=http://192.168.1.100:3126	
export https_proxy=http://192.168.1.100:3126

这一步的作用是将本机的 http 流量都代理到 192.168.1.100 的 3126 端口

2. 在 192.168.1.100 上安装 Privoxy。它的作用是根据配置,决定流量走哪个网络。本例中,它的作用是我们指定的http请求,走到 dmz。而其它的则和原来一样。它的配置如下:

cat /etc/privoxy/config	
listen-address  192.168.1.100:3126	
forward  .abc.com/  192.168.42.12:3127
  • listen-address 指 Privoxy 监听的IP和端口

  • forward 指接收到符合域名规则(.abc.com)的请求,将转发给 192.168.42.12 的 3127 端口。

到此,得到的效果就是当在应用机器访问 abc.com,admin.abc.com 等时,这些流量都会被 Privoxy 转发到 192.168.42.12 的 3127 端口。其它 HTTP 请求则不会。

而 192.168.42.12 则是安装了 Squid 实现 HTTP 代理的机器的 IP。

3. 在 DMZ 区的机器上安装并配置 Squid。它的作用才是真正地将请求代理到外网。Squid 的配置样例如下:

cat /etc/squid/squid.conf	
http_port 192.168.42.12:3127	
cache_mem 64 MB	
maximum_object_size 4 MB	
cache_dir ufs /var/spool/squid 100 16 256	
access_log /var/log/squid/access.log	
http_access allow all	
visible_hostname squid.demo

以上步骤,还要注意机器本身的防火墙策略。

后记

在大型企业内部实施 DevOps 平台,还会遇到另一个网络问题,就是内部网络区域之间,也会有不通的情况,这种情况如何解决呢?留给下篇写吧。

640?wx_fmt=png

封面来自:https://pixabay.com/zh/photos/andromeda-galaxy-milky-way-collision-755442/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值