公司的OA等系统只允许内部使用,在web上做了IP限制(而且这样做,安全些也强一些,避免外部人员攻击,嘿嘿)。不过后来,公司又搞了一个分公司,分公司的人是用asdl上网的,没有固定公网IP,导致他们每次变更IP都要在nginx上进行修改,很麻烦。由于公司的网关是一台废弃的确台机装的linux改的(iptables+tc实现),所以决定在这台网关上做一个代理,让分公司的人能通过代理连接公司内部上网。这里用的就是kingate --我在 鸡肋的linux正向代理 中有提到 。
一、概述
- kingate是一个代理服务器,能代理多种协议,包 括:http,https,socks,ftp,pop3,smtp,telnet,dns。能运行在linux,freebsd,…及其它类 unix,还有windows(最新版本要求nt 4.0以上)操作系统上。其具有如下特点:
- kingate是一个多线程的程序(采用线程池的方式),所以短时间内大量的连接请求,kingate还能保持很高的性能。
- kingate还支持tcp端口映射,可以实现别人访问你的内网主机。
- kingate有强大的规则控制,包括源IP地址,目的IP地址,目的端口,及采用的代理协议。
- kingate也支持时间控制。即可以设置什么时间内,所设置的规则才有效。
- kingate内置了用户认证,以及记录用户的使用情况,包括用户的使用时间,接收和发送的数据量,可以很容易实现对用户的记费。
- kingate采用http来进行管理,使得管理kingate及查看运行信息变得一件很轻松的事情,也可以远程管理。
-
kingate还支持内存及硬盘共二级缓存(仅限http代理).
最新版本的kingate还可以用来加速web服务器(采用缓存原理)。提升你的web服务器的性能。
kingate还是一款国人开发的代理服务器。
<br />
二、安装与配置
kingate项目托管在sourceforge上。其主页为:http://sourceforge.net/projects/kingate/ ,目前最新版本是2.2 。具体安装方法如下:
wget http://softlayer.dl.sourceforge.net/project/kingate/kingate/2.2/kingate-2.2.tar.gz tar xzf kingate-2.2.tar.gz cd kingate-2.2/ ./configure --prefix=/usr/local/kingate make && make install
<br />
kingate安装完成后默认有二个配置文件kingate.conf 、access.conf,在修改用户信息后,还会生成第三个配置文件kingate.user。
最主要的配置为kingate.conf ,其内容如下:
[root@gataway etc]# cat kingate.conf http on ftp on pop3 off smtp off telnet off socks off mms off rtsp off manage on max 2000 max_per_ip 0 min_free_thread 3 http_port 8082 http_accelerate off x_forwarded_for on http_time_out 30 ftp_port 2121 ftp_time_out 300 pop3_port 1100 pop3_time_out 300 smtp_port 2525 smtp_time_out 300 telnet_port 2323 telnet_time_out 300 socks_port 1082 socks_time_out 300 socks5_user off mms_port 1755 mms_time_out 300 rtsp_port 5540 rtsp_time_out 300 manage_port 2222 manage_time_out 300 log_model user log_level 2 log_rotate {0 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * } log_close_msg off mem_min_cache 50m mem_max_cache 12m disk_min_cache 20m disk_max_cache 30m use_disk_cache off refresh never refresh_time 300 user_time_out 0 mem_cache 50m disk_cache 100m max_deny_per_ip 0 max_queue_thread 15 min_limit_speed_size 1m limit_speed 20k max_request 50 total_seconds 10 bind_addr run_user insert_via off
<br />
以上配置中,http on 表示启用http代理(也可以根据你自己的需求开启其他类型的代理),http_port 8082 表示http代理的端口。manage on 为启用http管理,manage_port 2222 为http管理的端口 (出于安全考虑也可以进行修改)。
access.conf的内容如下:
first deny model deny model allow { * * * * }
<br />
以上表示先进行deny规则匹配,再进行allow规则匹配,deny内容为空,allow规则下的几个*分别代表如下
<a href="https://www.361way.com/wp-content/uploads/2013/10/kingate.jpg"><img src="https://www.361way.com/wp-content/uploads/2013/10/kingate.jpg" alt="kingate" width="834" height="83" class="alignnone size-full wp-image-2802" /></a>
关于kingate.user的内容不再介绍,因为kingate 的mangage设计的非常好,简洁实用,所有的配置项都可以在mangage页里配置。manager管理界面的默认用户名为root,密码为kingate 。
<a href="https://www.361way.com/wp-content/uploads/2013/10/kingate2.jpg"><img src="https://www.361way.com/wp-content/uploads/2013/10/kingate2.jpg" alt="kingate2" width="825" height="246" class="alignnone size-full wp-image-2803" /></a>
三、kinagate的自启动及其他
kingate默认不带自启动脚本,不过写其来很简单,如下:
#!/bin/bash # # chkconfig: 2345 85 15 # description: kingate is an proxy server daemon # processname: kingate ### BEGIN INIT INFO # Provides: kingate # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts kingate proxy server # Description: starts kingate porxy server ### END INIT INFO # Author: licess # website: http://www.vpser.net prog="kingate" kingate="/usr/local/kingate/bin/kingate" start() { echo -n $"Starting $prog: " $kingate } stop() { echo -n $"Stopping $prog: " $kingate -q } restart(){ echo -n $"Restarting $prog: " stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo $"Usage: kingate {start|stop|restart}" RETVAL=1 esac exit $RETVA
<br />
在进行访问控制时,假有人配置了你设置的IP和端口访问不允许的站点时,在访问页面的左下角会有kingate的版本提示为: Generated by kingate(2.2)这样的信息提示 。其nginx apache squid等软件一样,不想让他提示该信息,可以修改src/run_client.cpp文件的1303行,将其改为你想提示的内容。
《安装kingate代理》有1条评论