Chinaunix首页 | 论坛 | 博客
  • 博客访问: 246097
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 750
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-10 21:59
  • 认证徽章:
个人简介

付出,终有回报!

文章分类

全部博文(63)

文章存档

2018年(6)

2017年(24)

2016年(6)

2015年(27)

分类: 系统运维

2015-08-08 00:49:28

一、 linux下的VPN技术

VPN(Virtual Personal Network,虚拟专用网络),通过一个公用网络建立的临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。使用这条隧道可以对数据进行加密,从而达到安全使用的目的。VPN主要采用隧道技术、加解密技术、密钥管理技术、身份认证技术。

常用的VPN技术有:PPTPL2TP(第二层隧道协议)、IPsec隧道模式、OpenVPN等。

 

实验环境:

rhel1.example.com  eth0:172.25.254.100     PPTPD服务器

eth1:10.1.1.1

rhel4.example.com   10.1.1.2                 内网的一台主机

rhel2.example.com   172.25.254.103          外网客户端

系统环境RHEL6.5,关闭各主机的防火墙和Selinux

.PPTPD

1VPN 服务器端的配置

"rhel1:"

双网卡  eth0 172.25.254.100            eth1   10.1.1.1

 

[root@rhel1~]# ls

 pptpd-1.3.4-2.el6.x86_64.rpm

[root@rhel1~]# yum localinstall pptpd-1.3.4-2.el6.x86_64.rpm -y

 

[root@rhel1 ~]# vim /etc/sysctl.conf

---------------------------------------------------------------------

net.ipv4.ip_forward = 1    #启用系统路由转发功能

--------------------------------------------------------------------- 

[root@rhel1 ~]# sysctl -p    #使更改生效

 

PPTPD的主配置文件是/etc/pptpd.conf,其他相关配置文件在/etc/ppp/

[root@rhel1 ~]# vim /etc/pptpd.conf

---------------------------------------------------------------------

localip 172.25.254.100

remoteip 10.1.1.10-20

---------------------------------------------------------------------   

localip: pptpd server 所在服务器 IP 地址,可以设置为服务器上绑定的任意一个IP 地址;

remoteip:设置客户端连接到 pptpd server 后可供分配的 Ip 地址范围

 

添加测试用户:

[root@rhel1 ~]# vim /etc/ppp/chap-secrets

---------------------------------------------------------------------  

# client        server  secret                  IP addresses

user1        pptpd   redhat                     *

user2    pptpd   redhat                    *

--------------------------------------------------------------------- 

注意:server 名称必须和 /etc/ppp/options.pptpd name 处设置的名称一致,否则登录验证无法通过

其中,* 表示用户分到的IP可能是服务器remoteip 10.1.1.10-20范围中的任何一个

 

[root@rhel1 ~]# /etc/init.d/pptpd restart

[root@rhel1 ~]# netstat -antple |grep pptpd

tcp        0      0 0.0.0.0:1723                0.0.0.0:*                   LISTEN      0          14687      2196/pptpd

 

2 "rhel4" 内网   eth0 10.1.1.2

[root@rhel4 ~]# route add default gw 10.1.1.1



[root@rhel4 ~]# ping 172.25.254.100

[root@rhel4 ~]# ping 10.1.1.1           #都可以PING

 

3"rhel2" 外网  172.25.254.103

[root@rhel2 ~]# ls

pptp-setup-1.7.2-8.1.el6.x86_64.rpm

#安装客户端软件

root@rhel2 ~]#yum localinstall pptp-setup-1.7.2-8.1.el6.x86_64.rpm

客户端与服务器建立连接

[root@rhel2 ~]# pptpsetup --create myvpn --server 172.25.254.100 --username user2 --password redhat --encrypt —start


Using interface ppp1

Connect: ppp1 <--> /dev/pts/2

CHAP authentication succeeded

MPPE 128-bit stateless compression enabled

local  IP address 10.1.1.10

remote IP address 172.25.254.100


[root@rhel2 ~]# ip addr show |grep ppp

4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1496 qdisc pfifo_fast state UNKNOWN qlen 3

    link/ppp 

inet 10.1.1.10 peer 172.25.254.100/32 scope global ppp0

 

二、安装freeradius


1Freeradius介绍

Freeradius是一个模块化、高性能并且功能丰富的一套Radius程序,包含服务器,客户端(radius client),开发库和一些额外的相关radius工具。常见的Radius服务器种类不多,比较强大的当属开源的freeradius,世界上大部分的radius服务器都是基于freeradius开发而来的。freeradius一般用来进行账户认证管理,记账管理,常见的电信运营商的宽带账户,上网账户管理,记账,都是使用的radius服务器进行鉴权记账的。

 

2、安装及配置freeradius

[root@rhel1 ~]# yum install -y freeradius  

系统中的freeradius版本是2.1.12-4.el6_3,此外还需要安装freeradius-mysql freeradius-utils,这两个包可以去网上下载,下载时注意要和freeradius的版本一致。

[root@rhel1 ~]# yum localinstall freeradius-*

Freeradius的主配置文件是/etc/raddb/radiusd.conf,其他相关配置文件在/etc/raddb/下。

 

[root@rhel1 ~]# rpm -ql ppp | grep radius

/usr/lib64/pppd/2.4.5/radius.so

/usr/share/man/man8/pppd-radius.8.gz

 

添加radius.so插件,用于PPTPDMysql建立连接

[root@rhel1 ~]# vim /etc/ppp/options.pptpd

---------------------------------------------------------------------

plugin /usr/lib64/pppd/2.4.5/radius.so  #加到文件的末尾

---------------------------------------------------------------------

 

添加PPP协议支持

[root@rhel1 ~]# tar zxf ppp-2.4.5.tar.gz

[root@rhel1 etc]# pwd

/root/ppp-2.4.5/pppd/plugins/radius/etc


[root@rhel1 etc]# mkdir /etc/radiusclient/

[root@rhel1 etc]# cp * /etc/radiusclient/

[root@rhel1 etc]# cd /etc/radiusclient/

[root@rhel1 radiusclient]# ls

dictionary      dictionary.merit      port-id-map           realms    dictionary.ascend dictionary.microsoft  radiusclient.conf     servers



servers 文件中添加 radius 服务器的地址和密码

[root@rhel1 radiusclient]# vim servers         

---------------------------------------------------------------------

#Server Name or Client/Server pair              Key

localhost redhat

---------------------------------------------------------------------

[root@rhel1 radiusclient]# vim radiusclient.conf

修改radiusclient.conf文件中确保这个文件中所有与radiusclient相关的路径都是以/etc/radiusclient开头的,因为我并没有安装PPP安装包,而只是把相应的配置了/etc/radiusclient

---------------------------------------------------------------------    

25 issue   /etc/radiusclient/issue

46 servers         /etc/radiusclient/servers

50 dictionary      /etc/radiusclient/dictionary

61 mapfile         /etc/radiusclient/port-id-map

---------------------------------------------------------------------

 

三、安装及添加mysql支持

[root@rhel1 ~]# yum install -y mysql mysql-server

[root@rhel1 ~]# /etc/init.d/mysqld start

Starting mysqld:                                           [  OK  ]

[root@rhel1 ~]# mysql_secure_installation 

进入freeradius的主配置文件,设置与mysql相关的信息

[root@rhel1 radiusclient]# cd /etc/raddb/

[root@rhel1 raddb]# vim clients.conf

--------------------------------------------------------------------- client localhost {

ipaddr = 127.0.0.1

secret = redhat (与/etc/radiusclient/servers 里设置的一致)

....

}

---------------------------------------------------------------------

[root@rhel1 raddb]# vim radiusd.conf 

--------------------------------------------------------------------- $INCLUDE sql.conf     #去掉注释,支持sql

---------------------------------------------------------------------

[root@rhel1 raddb]# cd /etc/raddb/sites-available/

打开各模块中,与mysql相关的设置

[root@rhel1 sites-available]# vim default

------------------------------------------------------------

authorize {

#files

sql

....

}

accounting {

#radutmp

sql

....

}

session{

#radutmp

sql

}

post-auth {

sql

}

------------------------------------------------------------

[root@rhel1 mysql]# cd /etc/raddb/sql/mysql

此处的mysql目录是由freeradius-mysql安装包提供的

[root@rhel1 mysql]# ls     

root@rhel1 mysql]# mysqladmin -predhat create radius

根据/etc/raddb/sql.conf文件的配置,在数据库中创建radius库

将表结构信息和管理员信息导入数据库中

[root@rhel1 mysql]# mysql -predhat radius < schema.sql 

[root@rhel1 mysql]# mysql -predhat < admin.sql

[root@rhel1 mysql]# vim add.sql        

---------------------------------------------------------------------
use radius

 insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');

 insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User');

 insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.254');

 insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');


插入user1 、user2两个测试用户

 insert into radcheck (username,attribute,op,value) values ('user1','User-Password',':=','redhat');

 insert into radusergroup (username,groupname) values ('user1','user');

 insert into radcheck (username,attribute,op,value) values ('user2','User-Password',':=','redhat');

 insert into radusergroup (username,groupname) values ('user2','user');
---------------------------------------------------------------------
[root@rhel1 
mysql]# mysql -predhat < add.sql 


四、开启服务进行测试

[root@rhel1 ~]# service radiusd start

[root@rhel1 ~]# service pptpd stop

[root@rhel1 ~]# /etc/init.d/pptpd start

Starting pptpd:                                            [  OK  ]

[root@rhel1 ~]# radtest user1 redhat localhost 0 redhat               

radclient:: Failed to find IP address for vm1.ling.com

radclient: Nothing to send.

如果出现上述的报错,查看主机名解析,在本地/etc/hosts中加入解析。若还是出现Access-Reject,检查个服务是否正常,并查看日志信息,radius的日志在/var/log/radius/radius.log。

在客户端上进行测试:

之前在客户端已经创建了一个连接myvpn,再次连接可以使用pppd call myvnp。

[root@rhel2 ~]# pptpsetup --create vpn --server 172.25.254.100 --username user2 --password redhat --encrypt —start


由显示信息可知,建立连接时。从客户端获得了10.1.1.10这个IP。

如果要删除已建立的连接,则可执行如下操作:

[root@rhel1 ~]# cd /usr/share/doc/ppp-2.4.5/scripts/

[root@rhel1 ~]# cp pon poff  /usr/bin

[root@rhel1 ~]# poff -a


阅读(979) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册