位置:海鸟网 > IT > linux/Unix >

在Linux下建立VPN服务器来做加密代理

一、背景对VPN的分类什么的有个大概的了解,知道是个大概怎么回事,如果不大清楚的朋友可以google一下。本文就不对这些内容进行具体的介绍了。目标系统:RedHatLinux9默认安装。二、需求说白了就是用肉鸡做加密代理。1:对系统尽可能小的改变,包括添加文件和系统日志,因为我们用的是肉鸡。2:是client-->server的模式,而不是net-net的模式,浏览网页而已。3:无论server还是client都要配置方便,简单好用,我们要的是快速。三、选型1:*swanA:ipsecvpn的代表,默认端口tcp/udp500。B:优点:加密强,对网络游戏什么的支持好(我们用不上)。C:缺点:部署麻烦,配置麻烦,关键是他的nat-t,就是nat穿越功能需要打内核补丁,重新编译内核才行,这事在肉鸡做不得。大概的说说swan系列吧,最开始是freeswan,然后大概在2004年停止开发,衍生出openswan和strongswan两个分支,openswan发展的不错,strongswan连个rpm包都没。swan系列分两块,一个是用户空间程序,一个是内核空间程序。内核空间的包括模块和补丁,大概就那么回事。就是说,要做到nat-t,就需要用户空间程序,lkm和内核补丁,需要重新编译内核,这个我们在肉鸡没法做。还有他要用root运行。2:pptpdA:pptpvpn的典型代表,默认端口tcp1723。B:优点:Windows带了他的client,安装也方便,就几个rpm,配置也不难。C:缺点:一拨进去他就会改缺省网关,很烦,要么拨进去自己routeadd/delete几下改改,一直别断开,看个网站犯得着那么麻烦吗。3:openvpnA:SSLVPN的典型代表,默认端口tcp/udp1194。B:优点:简单好装,一个rpm搞定,要压缩的话多一个lzo的rpm包。配置也是简单的很,就生成一个static.key,还可以chroot,并且可以以nobody运行,肉鸡的安全也是很重要的,保管不好就被抢了,不过chroot就没必要了,有兴趣的朋友可以自己搞搞。一下把要的东西都丢到一个地方然后加上配置文件就差不多了,再改改启动脚本。还有就是拨进VPN之后,他不会改你默认网关,免去了折腾的烦恼,我们可以把sf.net的地址加到静态路由去。在server那边只需要开一个udportcp端口就可以了,不怎么需要去动别人的iptables。C:缺点:除了要额外装一个client之外,相对我们的需求来说基本没什么缺点了。四、开始1:安装clientandserver程序
[root@RH9root]#rpm-ivhlzo-1.08-2_2.RHL9.at.i386.rpmwarning:lzo-1.08-2_2.RHL9.at.i386.rpm:V3DSAsignaturE:NOKEY,keyID66534c2bPreparing...###########################################[100%]1:lzo###########################################[100%][root@RH9root]#rpm-ivhopenvpn-2.0.7-1.rh9.rf.i386.rpmwarning:openvpn-2.0.7-1.rh9.rf.i386.rpm:V3DSAsignaturE:NOKEY,keyID6b8d79e6Preparing...###########################################[100%]1:openvpn###########################################[100%]2:服务端配置
[root@RH9root]#cat>/etc/openvpn/server.confdevtunifconfig10.8.0.110.8.0.2secretstatic.key;usernobody;groupnobodyport3389;comp-lzo;;keepalivekeepalive1060;ping-timer-rempersist-tunpersist-key;no-log;verb0status/dev/nulllog/dev/nulllog-append/dev/nullserver配置完毕。

3:客户端配置安装openvpn-2.0.9-gui-1.0.3-install.exe,然后打开“开始”--“程序”--“openvpn”--“GenerateastaticOpenVPNkey”,这会在C:\ProgramFiles\OpenVPN\config下生成一个叫key.txt的文件,把他重命名为static.key。然后把这个文件复制到linux肉鸡的/etc/openvpn/static.key去,最后在C:\ProgramFiles\OpenVPN\config目录下创建一个叫client.ovpn的文件,内容如下
remote肉鸡的IPdevtunifconfig10.8.0.210.8.0.1secretstatic.keyport3389verb3comp-lzokeepalive1060ping-timer-rempersist-tunpersist-key
client配置完毕。注意,无论是服务端还是客户端的IP,都不要和系统有的IP段冲突,另外改了端口需要在clientandserver都改一致。4:启动并连接A:启动服务端
[root@RH9root]#/etc/init.d/openvpnstartStartingopenvpn:[OK]
这个时候理论上会发现多了一个接口,等会我们要收拾这个口子。
[root@RH9root]#ifconfigtun0tun0Linkencap:Point-to-PointProtocolinetaddr:10.8.0.1P-t-P:10.8.0.2Mask:255.255.255.255UPPOINTOPOINTRUNNINGNOARPMULTICASTMTU:1500Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:100RXbytes:0(0.0b)TXbytes:0(0.0b)[root@RH9root]#netstat-an|grep3389udp000.0.0.0:33890.0.0.0:*
这个时候理论上会起了一个3389的udp口,如果这两个事情都有了,那就好了,一般除了RP有WT之外,这里基本都不怎么可能出现错误。如果有错误的话,就把上面的
verb0status/dev/nulllog/dev/nulllog-append/dev/null
改成
verb9status/usr/lib/0log/usr/lib/1log-append/usr/lib/1然后重新启动openvpn服务并查看日志,注意,这个时候messages会有日志,调试完毕记得删除/usr/lib/0/usr/lib/1。
B:启动客户端“开始”--“程序”--“openvpn”--“OpenVPNGUI”,连接服务端,点右下角红色的图标--connect。图标变绿,就是成功连接并分配到地址了,注意让你的防火墙通过。如果没变绿色,从那个图标那viewlog,如果发现不到问题,就把client的配置文件的verb设置为9,重新连接,再看日志,再google。C:检查连接:在client里看到有这么个信息
Ethernetadapter本地连接4:Connection-specificDNSSuffix.:IPAddress............:10.8.0.2SubnetMask...........:255.255.255.252DefaultGateway.........:C:\>ping10.8.0.1Pinging10.8.0.1with32bytesofdata:Replyfrom10.8.0.1:bytes=32time=7msTTL=64连接没有问题,这个时候就根据个人的喜好,是改默认网关还是只根据目的地址routeadd一下了,如果肉鸡速度快的话改默认网关吧。
C:\>routedelete0.0.0.0C:\>routeadd0.0.0.0mask0.0.0.010.8.0.1-->注意,是vpnserver的tun0的地址。
如果DNS服务器不在内网的话,自己再routeadd一次DNS的地址就OK,如果想长期生效,可在routeadd语句最后加-p参数。D:服务端打开转发做个nat,但注意一下eth0需要是可以去外网的接口,否则等会数据走不出去,如果肉鸡是单接口的话就不需要担心。