使用PROXY protocol获取客户IP

获取客户IP是常见的需求,对于大流量的项目都会使用反向代理、负载均衡等,甚至多重代理,导致架构和网络都比较复杂,在这种情况下获取IP就不那么容易了。七层代理可以通过添加头信息来实现,如http协议的X-Forword-For,还比较方便;四层代理基本无法简单的获取到客户端IP地址,像LVS的FULLNAT模式,前端LVS把真实IP写在TCP option里面,后端服务器用内核toa模块获取客户IP;haproxy配合TPROXY也是类似的方式实现,两者都需编译内核非常麻烦,这种情况下就可以考虑使用代理协议一、代理协议简介代理协议即 PROXY protocol,是haproxy的作者Willy Tarreau于2010年开发和设计的一个Internet协议,通过为tcp添加一个很小的头信息,来方便的传递客户端信息(协议栈、源I...

- 阅读剩余部分 -

linux下手动产生kernel panic

Kernel panic是内核错误,是系统内核遇到无法处理的致命错误时才会产生的异常,一般长这样:Kernel panic - not syncing: Fatal exception ........其它错误日志........除此之外,还有以下几种常见的:Kernel Panic - not syncing:Attempted to kill init ! Kernel panic - not syncing: Out of memory and no killable processes Kernal Panic - Not syncing : VFS: unable to mount root fs on unknown-block (0,0) kernel panic - not syncing: Attempted to...

- 阅读剩余部分 -

用shell脚本反查搜索引擎蜘蛛IP

网上能搜到很多引擎蜘蛛的地址,这些地址不全而且好多已经过期了。如果想自己搜集蜘蛛的IP,最好的方法是分析网站的日志,即快又准确,但是不够全。如果有时间和资源,可以用本文的笨方法来抓取所有蜘蛛IP。原理是大多数的搜索引擎蜘蛛的ip都做了IP反解析,可以在linux下用host或者nslookup命令反查,先看几个例子谷歌蜘蛛 [root@52os.net ~]# host 66.249.79.161 161.79.249.66.in-addr.arpa domain name pointer crawl-66-249-79-161.googlebot.com.百度蜘蛛[root@52os.net ~]# host 220.181.108.170 170.108.181.220.in-addr.arpa domain...

- 阅读剩余部分 -

nginx动态添加访问白名单

本文实现的功能是:网站启用访问白名单,对于不在白名单中又需要访问的客户,只需打开一个不公开的网址,然后自动获得2小时的访问权限,时间达到后自动删除访问权限实现此功能需要以下几个步骤:nginx启用访问白名单客户打开指定网址自动添加访问白名单为网址添加简单的认证每两个小时自动恢复默认白名单,删除临时IP访问权限一、nginx配置访问白名单这个就比较简单了,简单贴一下配置:............nginx.conf........... geo $remote_addr $ip_whitelist { default 0; include ip_white.conf; } ............server段............ location / { if ($ip_whitelist = 1) ...

- 阅读剩余部分 -

使用ssl加密Nginx与uptream servers之间的流量

nginx做为一款优秀的反向代理软件,最常见的架构是:客户 <---> NGINX(反向代理) <---> 后端服务器(upstream servers)如果nginx和后端服务器都在公网上,按常规配置,nginx与后端服务器之间的流量是明文传输的,很容易受到篡改、嗅探或者被GFW认证。我就遇到了NGINX反代后端服务器时,竟然被劫持了!!!Nginx作为工作在7层的软件,最常用的加密方式就是https了,我只需要加密nginx到upstream servers之间的流量,不需要浏览器认证,所以自签名证书就够了,此作法需要:1. 自签名证书 2. 后端服务器配置https 3. nginx配置解密私钥一、生成自签名证书使用openssl生成签名证书:openssl req...

- 阅读剩余部分 -

使用saltstack初始化系统

目前工作中使用最多的还是Fabric,最近把所有服务器都装上了saltstack,但是目前并没有使用saltstack进行管理,用的最多的还是进行系统和环境的初始化。主要是因为其它同事对saltstack不够熟悉,还有就是生产上的模块和环境都比较复杂,想完全使用saltstack管理还要一个循序渐进的过程,自动化运维想要用还是要趁早建设,越晚束手束脚的地方越多一、saltstack安装2.1 简介saltstack是比较流行的开源配置管理工具,主要特点有:基于Python开发,轻量级、灵活、扩展性好使用ZeroMQ,确保速度和可靠性C/S架构,加密通讯,可管理海量客户端,并行能力强配置简单、容易学习和使用主要功能:配置管理,自动配置系统和软件环境的状态批量命令执行saltstack软件组件,以下是官方文档中的介绍:salt-m...

- 阅读剩余部分 -

linux下配置和安装KVM虚拟机

最近要在外网搞一套监控系统,正好有一台服务器配置比较高,也没跑什么重要的业务,就拿来划了一个KVM虚拟机,可能是平时各种虚拟机用的比较多,配置起来感觉比想象中简单的多,简单记录下过程准备工作宿主机为centos 6.8 64位,检查宿主机CPU是否支持虚拟化:cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l;结果大于0表示支持安装kvmKVM核心软件包:yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils 如果服务器上有桌面环境,想使用图形界面管理器virt-manager,可以安装完整的KVM环境:yum groupinstall Virtualization 'Virtualiz...

- 阅读剩余部分 -

asterisk双向回拨功能实现

目前我们公司电话系统经过两年的发展,已经实现了两个异地办公室、上百部分机,三个机房节点,多家voip供应商的之间的互通与网络冗余,算的上一个小型的呼叫中心了,一直比较懒写这方面的文章。最近公司正好有做回拨的需求,随便写篇关于这方面的文章。需求:客户通过网站前台提交电话号码,电话系统先呼叫指定客服分机或响铃组,客服摘机后系统呼叫客户电话号码,客户接听后开始与客服通话。我们的电话系统用的是freePBX,系统自带回拨功能(callback)功能比较简单,商业模块(WebCallBack)可以实现web提交号码,但这两个模块都只能先呼叫客户,客户接通后才能呼叫客服,无法自定义呼叫顺序,不满足我们的需求,只能自己开发了。好在asterisk支持自动呼叫脚本(.call files),功能实现起来比较容易,先看一下脚本工作流程:1. ...

- 阅读剩余部分 -