复杂网络环境下提升开发效率

513

复杂网络环境下提升开发效率

需求

需要在一台开发机器上访问多种网络环境

  1. 国内互联网(百度、腾讯、钉钉等)
  2. 国外互联网(谷歌、github、stackoverflow、maven)
  3. 公司内网(测试环境A)
  4. 集团内网(测试环境B)
  5. 生产环境(政务云等)

常规解法

  1. 国内互联网(这个直接连上Wi-Fi即可)
  2. 国外互联网(合规做法就是镜像源,其他方式不多介绍,不合规,本文不会做任何讨论。)
  3. 公司内网(iNode VPN)
  4. 集团内网(motion pro VPN)
  5. 生产环境(接入政务云Wi-Fi、政府提供的相关VPN、堡垒机)

常规解法存在一系列的问题,vpn导致的路由表冲突,数据被转发可能不安全,甚至是有些vpn在你的客户机上没有支持的客户端等等。

优化解法

优化思路

无论是tcp还是udp请求,一定是通过ip或域名去访问的,如果我们让clash软件接管虚拟网卡,将所有数据转发到这张虚拟网卡中,再通过事先定义的一系列规则,我们可以做到按规则把数据转发到不同的代理协议,最终实现所有网络环境在一台机器上访问。

准备工作

硬件:

  1. 一台具备公网ip的服务器(必须,组网使用,可以在这台机器上装上各种vpn,但是不推荐,非常不安全)
  2. 另外很多台电脑或虚拟机(非必须,把各种vpn装到相应的机器上)

软件:

  1. clash(核心,创建虚拟网卡,添加数据转发通道,透明代理)

  2. proxy(http、https、socks5。还有其他很多协议,但是不合规,不介绍了)

  3. nebula(组网,udp打洞,支持nat穿透,复杂nat可能会打洞失败。)和openvpn(组网,非必须,udp打洞失败,可以借助openvpn备用组网,高可用性建议也装下)

  4. zerotier(组网,如果你用了这个,可以替代nebula+openvpn,它可以在打洞失败的情况下使用moon中转)

知识:

  1. 操作系统基本知识
  2. 操作路由表
  3. dns相关知识
  4. 代理相关知识
  5. 各个软件如何使用及配置

注意事项

  1. 便捷意味着不安全,越便捷越不安全,生产环境大家谨慎操作,一定要优先确保生产环境的安全,才能各种组网。谨记。
  2. udp打洞失败的话, 带宽依赖公网服务器的带宽
  3. clash需要使用Premium才能使用tun模式创建虚拟网卡,即所谓的透明代理
  4. 如果出口访问的是虚拟网卡(nebula、openvpn等创建的),需要设置intereface-name,这个很关键。

写在最后

  1. 公网服务器一定要用公钥和私钥保护,网络安全组设置必不可少,用来组网的公网服务器对外端口一定要严格把关。各个中转机器的ssh私钥、rdp密码、openvpn私钥、nebula私钥要妥善保管。建议使用keeweb本地托管。保证即使公网服务器或者某几台中转节点服务器被攻破,也不会泄露任何数据。
  2. clash很棒,但是premium是闭源的,多少有点小小的担心。
  3. 多用netstatnslookuptraceroutetelnet排查问题
  4. 配置文件我就不放出来了,clash wiki写的很全了

image.png