代理服务器搭建文档

前言:检测到jayproxy使用的squid作为代理服务器,固我们也使用此软件来搭建代理服务器。

成都创新互联公司是网站建设技术企业,为成都企业提供专业的网站设计制作、成都网站制作,网站设计,网站制作,网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制适合企业的网站。10多年品质,值得信赖!

×××分析:Squid是很好的代理服务器,但它不能直接×××,因为在连接到Squid的过程中,就已经被墙了。所以得把传输的数据先进行加密再传输,这样等于是绕过了防火墙,这里就需要使用Stunnel来传输加密数据。

服务器需求:

1、一台可以正常访问互联网的服务器,代号A(国外的)

2、一台可以正常访问服务器A的国内服务器,代号B

访问过程:

1、用户设置代理指向B服务器的Stunnel服务监听的端口,访问网站

2、访问国外网站时在弹出框输入ldap用户信息,认证通过即可访问国外网站

3、这时B服务器的Stunnel会将信息做加密处理,然后发送到A服务器的Stunnel服务上

4、A服务器的Stunnel会将加密的信息做解密处理,然后发送给A服务器的Squid服务上

5、A服务器的Squid会向目标网站请求数据,然后将信息返回。

实施步骤:

一、在服务器A上安装Squid和Stunnel

1、安装Squid

//安装

yum -y install squid  

//初始化squid

squid -z

//启动squid

service squid start  

如果什么配置都不做修改,那默认的商品号为3128,这时候,可以打开你的浏览器,设置代理,填上A服务器的IP和3128端口号,访问baidu,输入ip看ip地址是不是代理服务器的ip,如果是,说明Squid已经能正常使用了,不过还不能×××。

2、安装Stunnel

//下载软件包

$wget http://www.stunnel.org/downloads/stunnel-5.01.tar.gz

//解压

$tar -zvxf stunnel-5.01.tar.gz

//进入软件包

$cd stunnel-5.01

//编译安装

$./configure

$make

$make install

配置Stunnel:

Stunnel比Squid要麻烦一些,因为Squid如果你什么都设置,同样能运行,而Stunnel就不行。它需要一个配置文件,还需要一个签名证书。

//先进到目录

cd /etc/stunnel/

$openssl req -new -x509 -days 365 -nodes -out stunnel.pem -keyout stunnel.pem

这样会在/etc/sutnnel/里生成密钥文件stunnel.pem

接着给它生成Diffie-Hellman部分:

$openssl gendh 512>> stunnel.pem

网络上说这是4.X版本必须要做的,但我使用的5.01也这么做了。

设置配置文件:

在/etc/stunnel/目录下有一个stunnel.conf.simple文件(好像是这样的),可以cp一份为stunnel.conf或是新建一个stunnel.conf,这里使用新建

$vim stunnel.conf

将以下内容复制进去

cert =/etc/stunnel/stunnel.pem

CAfile =/etc/stunnel/stunnel.pem

socket = l:TCP_NODELAY=1

socket = r:TCP_NODELAY=1

;;;chroot = /var/run/stunnel

pid = /tmp/stunnel.pid

verify = 3

;;; CApath = certs

;;; CRLpath = crls

;;; CRLfile = crls.pem

setuid = stunnel

setgid = stunnel

;;; client=yes

compression = zlib

;;; taskbar = no

delay = no

;;; failover = rr

;;; failover = prio

sslVersion = TLSv1

fips=no

debug = 7

syslog = no

output = stunnel.log

[sproxy]

accept = 34567

connect = 127.0.0.1:3128

这里有几个设置要说明一下:

第一行和二行是密钥文件的位置,如果按前面的做法,这里肯定是正确的。

setuid = stunnel

setgid = stunnel

是设置用户和用户组,都为stunnel,一般情况下是不会有它们的,所以要新建用户和用户组:

$groupadd -g 122 stunnel

$useradd -c stunnel -d /nonexistent -m -g 122 -u 122 stunnel

accept = 34567 是监听的端口号,也就是B服务器要指向的位置

connect = 127.0.0.1:3128 是本服务器,也就是A服务器Squid监听的端口号,也就是3128啦。

保存退出后,就可以试着启动stunnel了

$stunnel

如果正常是没有输出任何内容的,如果有问题,它会给出问题所在,仔细排查,基本上不会有什么问题。

检查是否正常运行:

$ps -ef | grep stunnel

如果看到stunnel用户运行的stunnel,说明已经成功运行了。

这样A服务器的Squid和Stunnel都配置完成了,接下来配置国内B服务器的Stunnel。B服务器不需要Squid,所以只需要配置Stunnel

二、在服务器B上安装配置Stunnel

安装同A,密钥不要再生成了,从服务器A上拷过来

登录服务器A,进到/etc/stunnel/目录,向服务器B的/etc/stunnel/目录里拷贝stunnel.pem密钥:

$cd /etc/stunnel/

$scp stunnel.pem root@服务器B的IP:/etc/stunnel/

接着登录服务器B,设置配置文件,同服务器A,可以cp一个,也可以新建,这里同样新建:

$cd /etc/stunnel/

$vim stunnel.conf

将下面的内容复制到里面:

cert =/etc/stunnel/stunnel.pem

socket = l:TCP_NODELAY=1

socket = r:TCP_NODELAY=1

verify = 2

CAfile =/etc/stunnel/stunnel.pem

client=yes

compression = zlib

ciphers = AES256-SHA

delay = no

failover = prio

sslVersion = TLSv1

fips = no

[sproxy]

accept  = 0.0.0.0:7071

connect = 服务器A的IP:34567

这里要说明的是:

accept = 0.0.0.0:7071 中的7071是用户需要设置的代理端口,可以随意设置,只要大于500就好。0.0.0.0是为了让外网能使用,如果只是内部使用,改成127.0.0.1即可。

connect = 服务器A的IP:34567,很显然这里要填什么,34567是服务器A的Stunnel监听的端口号,保持和它一至就对了。

保存退出后,就可以启动Stunnel了

$stunnel

如果没有意外,整个代理就正常运行了,打开浏览器,将代理设置服务器B的IP+7071端口号,此时即可访问国外网站。

三、配置squid服务器使用LDAP认证

1、安装ldap客户端

yum -y install openldap-clients nss-pam-ldapd openldap

添加ldap服务器信息

vim /etc/openldap/ldap.conf

添加以下2行

BASE dc=shuyun,dc=com

URI ldap://ldap.shuyun.com:389

重启nslcd服务

/etc/init.d/nslcd restart

测试与ldap服务器连通性

ldapsearch -x

2、配置squid与ldap通信

执行此条命令测试squid是否能与ldap连通

/usr/lib64/squid/squid_ldap_auth -u -cn -f "uid=%s" -b "ou=people,dc=shuyun,dc=com" -D "cn=user,ou=people,dc=shuyun,dc=com" -w "password"  -H ldap://ldap.shuyun.com

执行时需要输入用户和密码,连通后会显示ok

连通后请编辑/etc/squid/squid.conf文件

注释掉所有以http_access开头的内容,在最后面添加以下4行

auth_param basic program /usr/lib64/squid/squid_ldap_auth -u -cn -f "uid=%s" -b "ou=people,dc=shuyun,dc=com" -D "cn=user,ou=people,dc=shuyun,dc=com" -w "password"  -H ldap://ldap.shuyun.com

acl ldapauth proxy_auth REQUIRED

http_access allow ldapauth

http_access deny all

重启squid

/etc/init.d/squid/restart

打开网站看是否会弹出对话框要求输入用户名和密码

四、生成PAC文件,定义白名单×××网站

可以下载shadowsocks软件运行,然后提取里面的本地pac文件

然后把pac文件里面服务器的地址改成B服务器的地址

var proxy = "PROXY B服务器地址:7071; DIRECT;";

pac文件保存好后,下载到本地然后在浏览器代理设置使用这个pac文件即可实现×××的域名走国外服务器线路。


分享名称:代理服务器搭建文档
网页URL:http://pwwzsj.com/article/jcpsis.html