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程序和数据,需要考虑两者的数据同步。