复杂网络环境下提升开发效率
复杂网络环境下提升开发效率
需求
需要在一台开发机器上访问多种网络环境
- 国内互联网(百度、腾讯、钉钉等)
国外互联网(谷歌、github、stackoverflow、maven)- 公司内网(测试环境A)
- 集团内网(测试环境B)
- 生产环境(政务云等)
常规解法
- 国内互联网(这个直接连上Wi-Fi即可)
国外互联网(合规做法就是镜像源,其他方式不多介绍,不合规,本文不会做任何讨论。)- 公司内网(iNode VPN)
- 集团内网(motion pro VPN)
- 生产环境(接入政务云Wi-Fi、政府提供的相关VPN、堡垒机)
常规解法存在一系列的问题,vpn导致的路由表冲突,数据被转发可能不安全,甚至是有些vpn在你的客户机上没有支持的客户端等等。
优化解法
优化思路
无论是tcp还是udp请求,一定是通过ip或域名去访问的,如果我们让clash软件接管虚拟网卡,将所有数据转发到这张虚拟网卡中,再通过事先定义的一系列规则,我们可以做到按规则把数据转发到不同的代理协议,最终实现所有网络环境在一台机器上访问。
准备工作
硬件:
- 一台具备公网ip的服务器(必须,组网使用,可以在这台机器上装上各种vpn,但是不推荐,非常不安全)
- 另外很多台电脑或虚拟机(非必须,把各种vpn装到相应的机器上)
软件:
-
clash(核心,创建虚拟网卡,添加数据转发通道,透明代理)
-
proxy(http、https、socks5。还有其他很多协议,但是不合规,不介绍了)
-
nebula(组网,udp打洞,支持nat穿透,复杂nat可能会打洞失败。)和openvpn(组网,非必须,udp打洞失败,可以借助openvpn备用组网,高可用性建议也装下)
-
zerotier(组网,如果你用了这个,可以替代nebula+openvpn,它可以在打洞失败的情况下使用moon中转)
知识:
- 操作系统基本知识
- 操作路由表
- dns相关知识
- 代理相关知识
- 各个软件如何使用及配置
注意事项
- 便捷意味着不安全,越便捷越不安全,生产环境大家谨慎操作,一定要优先确保生产环境的安全,才能各种组网。谨记。
- udp打洞失败的话, 带宽依赖公网服务器的带宽
- clash需要使用Premium才能使用tun模式创建虚拟网卡,即所谓的透明代理
- 如果出口访问的是虚拟网卡(nebula、openvpn等创建的),需要设置intereface-name,这个很关键。
写在最后
- 公网服务器一定要用公钥和私钥保护,网络安全组设置必不可少,用来组网的公网服务器对外端口一定要严格把关。各个中转机器的ssh私钥、rdp密码、openvpn私钥、nebula私钥要妥善保管。建议使用keeweb本地托管。保证即使公网服务器或者某几台中转节点服务器被攻破,也不会泄露任何数据。
- clash很棒,但是premium是闭源的,多少有点小小的担心。
- 多用
netstat
、nslookup
、traceroute
、telnet
排查问题 - 配置文件我就不放出来了,clash wiki写的很全了。