tproxy

云原生网络代理 MOSN 透明劫持技术解读 | 开源

空扰寡人 提交于 2020-08-10 08:25:05
MOSN 是一款使用 Go 语言开发的网络代理软件,作为云原生的网络数据平面,旨在为服务提供多协议、模块化、智能化、安全的代理能力。MOSN 是 Modular Open Smart Network-proxy 的简称,可以与任何支持 xDS API 的 Service Mesh 集成,亦可以作为独立的四、七层负载均衡、API Gateway、云原生 Ingress 等使用。 MOSN: https://github.com/mosn/mosn 在由 Istio 定义的 Service Mesh 体系中,服务治理相关逻辑由独立的 Sidecar 进程处理,如服务发现、故障注入、限流熔断等等。这些处理逻辑是 Service Mesh 着重要解决的问题。通常在谈论到 Service Mesh 时,会优先关注在这些点上,但是在落地过程中,有一个问题同等重要但往往容易被忽视。这个问题概括起来,就是流量是如何被导入到 Sidecar 的监听端口的。 在数据平面的 Sidecar 中拦截进出应用容器的流量,这一直以来就是 Istio Service Mesh 中一切功能的基础,如何实现透明高效的拦截也是 Service Mesh 设计中的一大难点,本文为大家介绍云原生网络代理 MOSN 是如何做到这一点的。 流量接管 如果服务注册/发布过程能够允许适当的修改,这个问题会得到极大的简化

自定义值类型一定不要忘了重写Equals,否则性能和空间双双堪忧

偶尔善良 提交于 2020-08-07 09:57:07
一:背景 1. 讲故事 曾今在项目中发现有同事自定义结构体的时候,居然没有重写Equals方法,比如下面这段代码: static void Main(string[] args) { var list = Enumerable.Range(0, 1000).Select(m => new Point(m, m)).ToList(); var item = list.FirstOrDefault(m => m.Equals(new Point(int.MaxValue, int.MaxValue))); Console.ReadLine(); } public struct Point { public int x; public int y; public Point(int x, int y) { this.x = x; this.y = y; } } 这代码貌似也没啥什么问题,好像大家平时也是这么写,没关系,有没有问题,跑一下再用windbg看一下。 0:000> !dumpheap -stat Statistics: MT Count TotalSize Class Name 00007ff8826fba20 10 16592 ConsoleApp6.Point[] 00007ff8e0055e70 6 35448 System.Object[]

详解Http与Dns劫持污染的技术原理和排查预防

北城以北 提交于 2020-04-21 20:12:35
负责过互联网系统建设和质量保障的基本都会遇到一个问题—— 劫持 ,所谓 劫持就是把请求通过技术手段引导到指定的服务器代理一遍 ,通俗点讲就是过一遍手,过一遍手可做的文章就大了,可以 监听信息、缓存内容 也可以 篡改内容 ,甚至拿到用户的登陆权限,如果别有用心是可以做很多非法的事情的,其中也有一种合法的代理应用叫CDN加速,CDN的存在可以提高用户体验,提升网站的访问速度,但很多业务其实是不适合代理的,因此强硬的劫持代理可能直接导致系统不可用,或者出现各种异常,所以互联网服务提供商很忌讳劫持的事情,一旦碰到基本无能为力,只能在技术上想各种预案来规避。 那么为什么还是很多厂商要不顾风险做这个事儿呢?一个字“利”,简单说一下劫持后的挣钱方法,最常规的方式有两种,一是 清洗流量加cache挣带宽费 ,二是 内容篡改加广告 , 其他靠获取用户权限信息挣钱的明显违法,故很少见。清洗流量一般指将视频、图片等静态资源在网内指定的出口服务器存储一份,降低出网带宽赚差价,一些大中小运营商都在干,本来这个事情对用户是透明无感的,但由于很多cache厂家技术不行,不该劫持的也劫持了,导致很多请求劫持后无法响应,造成用户APP或者各种使用异常,有些浏览器打着云加速的旗号其实也是干的劫持缓存的事儿;加广告一般指劫持后对内容进行了篡改,追加了广告代码,如果是简单的html页面,nginx配置一下都是可以实现的