centos架设代理服务器 linux 代理服务器

大家好,今天小编来为大家解答centos架设代理服务器这个问题,linux 代理服务器很多人还不知道,现在让我们一起来看看吧!

Linux系统上PPTP协议VPN服务器架设方法

VPN服务常用的协议一般有两种:

PPTP——PPTP(点对点隧道协议)是一个很好的,轻量级的VPN协议,高速提供基本的在线安全。 PPTP是内建于各种桌面和移动设备,并有128位加密功能。相比L2TP速度更快。

L2TP——附带IPsec(IP安全)的L2TP(第2层隧道协议)是非常安全的协议,其内置于多种桌面和移动设备。L2TP/IPsec采用256位加密,但额外的安全开销比PPTP需要更多的CPU使用率。

我们在这篇文章中要讲的便是PPTP的VPN架设,点对点隧道协议(PPTP)是由包括微软和3Com等公司组成的PPTP论坛开发的一种点对点隧道协,基于拨号使用的PPP协议使用PAP或CHAP之类的加密算法,或者使用 Microsoft的点对点加密算法MPPE。其通过跨越基于 TCP/IP的数据网络创建 VPN实现了从远程客户端到专用企业服务器之间数据的安全传输。PPTP支持通过公共网络(例如 Internet)建立按需的、多协议的、虚拟专用网络。PPTP允许加密 IP通讯,然后在要跨越公司 IP网络或公共 IP网络(如 Internet)发送的 IP头中对其进行封装。

PPTP是一个比较简单的VPN构建方式,但是很难找到比较全的说明文档。因此,记录一篇说明文档,详细记录架设VPN服务器以及总结一些其他比较容易遇到的问题。

安装PPTP

基本上安装pptp是比较简单的了,比如在我的CentOS6.4 x64上,只需要两个命令:

复制代码代码如下:

rpm-i

yum-y install pptpd

如果是Ubuntu的话,更加简单了:

复制代码代码如下:

apt-get install pptpd

配置IP地址

基本上程序的安装是全自动完成的了,下面需要进行一些简单的配置,编辑/etc/pptpd.conf,在最后加入IP地址配置:

复制代码代码如下:

localip 10.0.0.1

remoteip 10.0.0.100-200

上面的IP地址是可以随便填的,ABC三类的内网地址都可以,主要兼顾其他地方的IP配置,不要出现IP冲突就可以了,后面的remoteip,默认从第一个10.0.0.100开始分配给客户,localip表示分配给服务器的内部网关地址。

配置客户端DNS

要配置客户端的dns,首先要确定配置文件,查看/etc/pptpd.conf中指定的option文件,如果没有指定,那就默认是/etc/ppp/pptpd-options,下面是我的默认配置文件,因此要修改/etc/ppp/pptpd-options.pptpd

在配置文件中加上:

复制代码代码如下:

ms-dns 202.96.128.86

ms-dns 202.96.128.166

这里配置成客户端所在地的DNS就好了。

配置VPN账号

然后是创建VPN的账号,账号保存在/etc/ppp/chap-secrets,我们打开编辑这个文件,按下面的格式加入自己的账号以及密码,依次为:账号,协议,密码,ip地址。

这里的ip地址如果明文表示静态分配,如果填*就表示动态分配。

启动服务

配置完毕,可以启动服务并且加入启动项了

复制代码代码如下:

service pptpd restart

chkconfig pptpd on

查看一下服务器是否在1723上面监听了

配置系统转发

现在的VPN服务可以连上,但是不能通过VPN服务器进行转发,也就是不能够上网或者访问其他服务器等,需要开启系统转发和NAT。编辑系统配置文件/etc/sysctl.conf,设置如下值为1

复制代码代码如下:

net.ipv4.ip_forward= 1

如果未来ipv6普及了,估计应该就是改ipv6了,修改完毕之后要马上生效,使用命令

复制代码代码如下:

sysctl-p

配置防火墙转发

复制代码代码如下:

iptables-t nat-A POSTROUTING-o eth0-j MASQUERADE

复制代码代码如下:

iptables-t nat-A POSTROUTING-s 10.0.0.0/24-o eth0-j SNAT--to 115.115.115.115

其中第一种比较简单,自动伪装ip,第二种的10.0.0.0/24指的是VPN虚拟内网,而115.115.115.115代表外网地址,进行NAT。如果VPN服务器是用来代理上网的,仅有上面的配置会出现访问网站缓慢的情况,需要手动修改一下转发包的mss

复制代码代码如下:

iptables-A FORWARD-p tcp--syn-s 10.0.0.0/24-j TCPMSS--set-mss 1356

这样就不会出现打不开网页的问题了,最后可以保存一下防火墙。

复制代码代码如下:

iptables-save

常见的问题

619错误

很多人在拨VPN的时候卡在验证用户名和密码,然后会出现619的错误,这种错误90%以上是由于客户端到服务器的网络中有设备不支持GRE协议或NAT-T造成的,最常见的是由于客户端的路由器等不支持造成的,在更换以后立马能拨上VPN。而这种错误在服务端的日志也有体现。例如

复制代码代码如下:

LCP: timeout sending Config-Requests

下面是双方加解密不一致的:

复制代码代码如下:

LCP terminated by peer(^O^XH-^@<M-Mt^@^@^@^@)

pptp需要用到的端口

pptp使用到的端口只有一个,那就是1723,网上有很多误人子弟的文章还说要开47端口,真是坑爹,因为GRE协议号是47,并不代表需要开47端口,因此如果是要映射端口的话,1723就完全够了,不要信网上的某些教程,如果使用了iptable来作为防火墙,需要加入规则

复制代码代码如下:

iptables-A INPUT-p tcp--dport 1723-j ACCEPT

iptables-A INPUT-p 47-j ACCEPT

如果是在内网中,需要网关转发,那么网关需要如下配置:

复制代码代码如下:

iptables-t nat-A PREROUTING-i eth0-p tcp--dport 1723-j DNAT--to SERVER_IP

iptables-t nat-A PREROUTING-i eth0-p 47-j DNAT--to SERVER_IP

服务器如何架设S5代理

需要有路由器管理权,然后在转发规则中设置DMZ主机为本机,或者端口影射本机.都需要有路由器管理权.

如何设置代理服务器可以用ROXY

这里讲的是CentOS5环境下的架设方法,其他Linux版本以此类推

首先到去下载最新的for linux版本

目前是:ss5-3.6.4-3.tar.gz

# tar xvf ss5-3.6.4-3.tar.gz

# cd ss5-3.6.4

#./configure

结果可能看到错误,因为我就碰到了

checking security/pam_misc.h usability... no

checking security/pam_misc.h presence... no

checking for security/pam_misc.h... no

configure: error:*** Some of the headers weren't found***

缺某些库文件,我看到和pam有关的,是pam-devel包

# yum-y install pam-devel

# make

# make install

make install之后没有任何显示,这其实已经安装完毕了,不必疑惑

修改配置文件:

/etc/opt/ss5/ss5.conf

修改这行:

auth 0.0.0.0/0--

改成:

auth 0.0.0.0/0- u

然后在/etc/opt/ss5/ss5.passwd中,一行一个用户+密码

# cat ss5.passwd

hao32 123456

#/etc/rc.d/init.d/ss5 start

报错

/etc/rc.d/init.d/ss5: line 41: syntax error near unexpected token `;;'

/etc/rc.d/init.d/ss5: line 41: `;;'

vi下看看41行,在;;之前少了结束fi

38/usr/local/sbin/ss5-t

39 fi

40 echo"done"

41 fi

42;;

继续#/etc/rc.d/init.d/ss5 start

38行又报错...说没有这个目录或者文件:/usr/local/sbin/ss5

手动把/usr/local/sbin/ss5换成了/usr/sbin/ss5

#/etc/rc.d/init.d/ss5 start

doneting ss5... [ OK ]

再重启下看看:

#/etc/rc.d/init.d/ss5 restart

Restarting ss5... Shutting down ss5...

done [ OK ]

doneting ss5... [ OK ]

看来没啥问题,过了,现在你就可以使用服务器的IP,端口1080,用户hao32,密码123456来测试你的socks5服务器了,更多高级应用,就参加ss5.conf,里面有详细的说明。

求助关于centos6.6搭建nginx反向代理服务器

〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持);

〉另外一个功能就是作为反向代理服务器实现负载均衡

以下我们就来举例说明如何使用 nginx实现负载均衡。因为nginx在处理并发方面的优势,现在这个应用非常常见。当然了Apache的 mod_proxy和mod_cache结合使用也可以实现对多台app server的反向代理和负载均衡,但是在并发处理方面apache还是没有 nginx擅长。

1)环境:

a.我们本地是Windows系统,然后使用VirutalBox安装一个虚拟的Linux系统。

在本地的Windows系统上分别安装nginx(侦听8080端口)和apache(侦听80端口)。在虚拟的Linux系统上安装apache(侦听80端口)。

这样我们相当于拥有了1台nginx在前端作为反向代理服务器;后面有2台apache作为应用程序服务器(可以看作是小型的server cluster。;-));

b. nginx用来作为反向代理服务器,放置到两台apache之前,作为用户访问的入口;

nginx仅仅处理静态页面,动态的页面(php请求)统统都交付给后台的两台apache来处理。

也就是说,可以把我们网站的静态页面或者文件放置到nginx的目录下;动态的页面和数据库访问都保留到后台的apache服务器上。

c.如下介绍两种方法实现server cluster的负载均衡。

我们假设前端nginx(为127.0.0.1:80)仅仅包含一个静态页面index.html;

后台的两个apache服务器(分别为localhost:80和158.37.70.143:80),一台根目录放置phpMyAdmin文件夹和test.php(里面测试代码为print“server1“;),另一台根目录仅仅放置一个test.php(里面测试代码为 print“server2“;)。

2)针对不同请求的负载均衡:

a.在最简单地构建反向代理的时候(nginx仅仅处理静态不处理动态内容,动态内容交给后台的apache server来处理),我们具体的设置为:在nginx.conf中修改:

复制代码代码如下:

location~\.php${

proxy_pass 158.37.70.143:80;

}

〉这样当客户端访问localhost:8080/index.html的时候,前端的nginx会自动进行响应;

〉当用户访问localhost:8080/test.php的时候(这个时候nginx目录下根本就没有该文件),但是通过上面的设置 location~\.php$(表示正则表达式匹配以.php结尾的文件,详情参看location是如何定义和匹配的 ),nginx服务器会自动pass给 158.37.70.143的apache服务器了。该服务器下的test.php就会被自动解析,然后将html的结果页面返回给nginx,然后 nginx进行显示(如果nginx使用memcached模块或者squid还可以支持缓存),输出结果为打印server2。

如上是最为简单的使用nginx做为反向代理服务器的例子;

b.我们现在对如上例子进行扩展,使其支持如上的两台服务器。

我们设置nginx.conf的server模块部分,将对应部分修改为:

复制代码代码如下:

location ^~/phpMyAdmin/{

proxy_pass 127.0.0.1:80;

}

location~\.php${

proxy_pass 158.37.70.143:80;

}

上面第一个部分location ^~/phpMyAdmin/,表示不使用正则表达式匹配(^~),而是直接匹配,也就是如果客户端访问的 URL是以开头的话(本地的nginx目录下根本没有phpMyAdmin目录),nginx会自动pass到127.0.0.1:80的Apache服务器,该服务器对phpMyAdmin目录下的页面进行解析,然后将结果发送给nginx,后者显示;

如果客户端访问URL是的话,则会被pass到158.37.70.143:80的apache进行处理。

因此综上,我们实现了针对不同请求的负载均衡。

〉如果用户访问静态页面index.html,最前端的nginx直接进行响应;

〉如果用户访问test.php页面的话,158.37.70.143:80的Apache进行响应;

〉如果用户访问目录phpMyAdmin下的页面的话,127.0.0.1:80的Apache进行响应;

3)访问同一页面的负载均衡:

即用户访问这个同一页面的时候,我们实现两台服务器的负载均衡(实际情况中,这两个服务器上的数据要求同步一致,这里我们分别定义了打印server1和server2是为了进行辨认区别)。

a.现在我们的情况是在windows下nginx是localhost侦听8080端口;

两台apache,一台是127.0.0.1:80(包含test.php页面但是打印server1),另一台是虚拟机的158.37.70.143:80(包含test.php页面但是打印server2)。

b.因此重新配置nginx.conf为:

〉首先在nginx的配置文件nginx.conf的http模块中添加,服务器集群server cluster(我们这里是两台)的定义:

复制代码代码如下:

upstream myCluster{

server 127.0.0.1:80;

server 158.37.70.143:80;

}

表示这个server cluster包含2台服务器

〉然后在server模块中定义,负载均衡:

复制代码代码如下:

location~\.php${

proxy_pass 这里的名字和上面的cluster的名字相同

proxy_redirect off;

proxy_set_header Host$host;

proxy_set_header X-Real-IP$remote_addr;

proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;

}

这样的话,如果访问页面的话,nginx目录下根本没有该文件,但是它会自动将其pass到myCluster定义的服务区机群中,分别由127.0.0.1:80;或者158.37.70.143:80;来做处理。

上面在定义upstream的时候每个server之后没有定义权重,表示两者均衡;如果希望某个更多响应的话例如:

复制代码代码如下:

upstream myCluster{

server 127.0.0.1:80 weight=5;

server 158.37.70.143:80;

}

这样表示5/6的几率访问第一个server,1/6访问第二个。另外还可以定义max_fails和fail_timeout等参数。

综上,我们使用nginx的反向代理服务器reverse proxy server的功能,将其布置到多台apache server的前端。

nginx仅仅用来处理静态页面响应和动态请求的代理pass,后台的apache server作为app server来对前台pass过来的动态页面进行处理并返回给nginx。

通过以上的架构,我们可以实现nginx和多台apache构成的机群cluster的负载均衡。

两种均衡:

1)可以在nginx中定义访问不同的内容,代理到不同的后台server;如上例子中的访问phpMyAdmin目录代理到第一台server上;访问test.php代理到第二台server上;

2)可以在nginx中定义访问同一页面,均衡(当然如果服务器性能不同可以定义权重来均衡)地代理到不同的后台server上。如上的例子访问test.php页面,会均衡地代理到server1或者server2上。

实际应用中,server1和server2上分别保留相同的app程序和数据,需要考虑两者的数据同步。

阅读剩余
THE END