优化Linux NAT网关

因为我们的生产环境没有专用的NAT设备,不得不使用Linux的NAT功能来解决生产内网访问公网的问题。 NAT的原理,大致如下图所示: 内网的机器,将网关配置成NAT网关的地址,当访问公网时,NAT会将访问公网的包的源地址(内网地址)转换为自己的公网地址,再将包发给公网的服务器。 然而,服务器访问公网与桌面系统访问公网的场景,是完全不同的,服务器访问公网的行为,通常比桌面系统的行为更有“规律“(其实与操作系统也有关系,不同操作系统的TCP/IP协议栈行为是有差别的)。比如,服务器会在相对集中、统一的时间同时发起公网请求,并且还是相对集中地访问固定的地址。这对NAT设备来说,…

Read More

记一次 strace 追踪的 Docker + VirtualBox 的底层 bug

最近在公司搭建一个基于 Docker 的 PHP 环境。 背景知识 Docker 是一种容器技术,它可以提供一个隔离的环境,让用户的程序运行在一个完全隔离的虚拟的系统里,但 Docker 不是虚拟化,使用 Docker 可以在 Linux 上实现对于任意程序打包一次,到处运行。愿意接受安利的同学请移步 http://docker.io 。 Mac OS…

Read More

【MySQL】关于 unauthenticated user的哲学思考

一、现象 在生产环境中我们偶尔会遇到show processlist;显示host为 unauthenticated user 这样的连接,同时伴有数据库服务器层面的load,sys cpu较高,或者thread running异常。 二、分析 类似于校园门卫看到一个陌生的人进入学校,对TA提出的哲学式问题:TA是谁?从哪里来? 要干什么?本文从IT技术角度回答这个哲学问题。 TA是谁? 官方介绍: unauthenticated user…

Read More