收藏 分销(赏)

xl2tpd server移植.doc

上传人:pc****0 文档编号:6982138 上传时间:2024-12-24 格式:DOC 页数:5 大小:49KB 下载积分:10 金币
下载 相关 举报
xl2tpd server移植.doc_第1页
第1页 / 共5页
xl2tpd server移植.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
之前移植了l2tp的client,用的是rp-l2tp-0.4,由于rp-l2tp系列的版本无法动态分配ip地址(有解决方法,但太麻烦),因此决定移植server时不再使用rp-l2tp,而改为xl2tpd。 移植时l2tp用的是xl2tpd-1.2.4,ppp用的是ppp-2.4.5,虚拟机是Fedora10,client用的是电信1-2C语音网关。 简要介绍移植xl2tpd server 1、编译阶段 下载xl2tpd-1.2.4.tar.gz,解压后进入解压目录,然后编译,安装,例如我是放在/usr/local下,在编译过程中发现错误(安装的虚拟机不通,库文件不通,遇到的错误可能会不同,也可能不会遇到错误),提示缺少头文件pcap-bpf.h pcap.h,这个问题简单吧,从网上找到这几个头文件,放到相关目录即可(/usr/include/pcap.h,/usr/include/pcap-bpf.h),链接时提示no find lpcap,该提示为缺少库文件,从网上下载libpcap-1.3.0.tar.gz(网址我忘记了,或者联网后rpm也可),解压后 #./configure #make #make install 之后再编译xl2tpd-1.2.4,编译通过, 2、修改配置文件(配置文件中有些可以注释掉的选项,没有列在本文档中) 修改配置文件/etc/xl2tpd/xl2tpd.conf [global] listen-addr = 0.0.0.0 port = 1701 [lns default] ip range = 192.168.22.128-192.168.22.254 local ip = 192.168.22.99 require chap = yes refuse pap = yes require authentication = yes name = LinuxVPNserver ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes 解释下各个字段的意义, listen-addr这个字段我认为是xl2tpd server监听从哪个ip发来的数据包,0.0.0.0表示监听所有接口发来的数据包 port这个不多说了,如果你不知道l2tp udp端口号为1701,那么请你补习一下功课 ip range = 192.168.22.128-192.168.22.254,这个字段表示给客户端分配的ip地址池 local ip表示xl2tpd server的ppp接口的ip地址 require chap = yes refuse pap = yes require authentication = yes 这三个表示xl2tpd server要求认证,且可以支持两种认证方式chap和pap(chap认证时密码用MD5算法加密,pap则直接明文发送用户名及密码) name = LinuxVPNserver,名字而已,具体什么作用我还没研究 ppp debug = yes,打开ppp的debug pppoptfile = /etc/ppp/options.xl2tpd,options.xl2tpd这个文件里定义了ppp的相关参数,稍后具体介绍, length bit = yes,这个是什么意思呢,不瞒你说,我也不知道,如果你知道,麻烦告诉我一下 下面是/etc/ppp/options.xl2tpd的配置, ipcp-accept-local ipcp-accept-remote #ms-dns 192.168.1.1 #ms-dns 192.168.1.3 #ms-wins 192.168.1.2 #ms-wins 192.168.1.4 noccp auth crtscts idle 1800 mtu 1410 mru 1410 nodefaultroute debug lock proxyarp connect-delay 5000 ipcp-accept-local ipcp-accept-remote,分析一下这两行,ipcp表示ip control protcal,三层的东西,和ip有关,accept表示接受,local和remote分别表示本端和对端,这两个字段是与本端和对端的ip地址相关的, 注掉的那几行是和dns相关的,如果你不知道什么是dns,那么这篇文章你就不用看了,因为你看不明白,注掉了表示不给对端(或者说client,准确来说是LAC)分配dns, 剩下的几行不解释了,都是网络的基础知识,这个文件如果你不知道什么意思,请你看看ppp-2.4.5的源代码,里面有注释; 有人说这个文件里应该加上一下两句: lcp-echo-interval 30 lcp-echo-failure 4 这两句是表示链路维护阶段发送链路维护报文的时间间隔,如果30*4秒内收不到链路维护报文,则链路自动断开,这两句最好也加上,ppp-2.4.5中他们的默认值均为0,如果是0就意味着,如果网络比较差的话,那么l2tp会处于不停的拨号与断开的循环中,导致vpn不可用(pppoe的时候曾经遇到过这个问题,一晚拨号断开几十次,就是因为网络不好导致的,所以建议加上以上两句,我在内网中调试xl2tpd,没有加,所以以上两行的功能没经过亲自测试)。 下面介绍/etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses ####### system-config-network will overwrite this part!!! (begin) ########## Abcd LinuxVPNserver 111111 * ####### system-config-network will overwrite this part!!! (end) ############ 简单吧,abcd是用户名,111111是密码, LinuxVPNserver见xl2tpd.conf中的name = LinuxVPNserver,IP addresses那一列为* 3、代码中的默认配置文件路径 配置文件都讲完了,其实这些文件不一定非要放到这些目录中,你可以看看代码, 在xl2tpd-1.2.4的file.h文件中有这么一行 #define DEFAULT_CONFIG_FILE "/etc/xl2tpd/xl2tpd.conf" 这行表示xl2tpd进程读取的配置文件的路径 在xl2tpd-1.2.4的l2tp.h文件中有这么一行 #define PPPD "/usr/sbin/pppd" 这行表示xl2tpd进程要调用的pppd进程的路径,至于xl2tpd进程为什么要调用pppd进程,如果你不知道不怪你, 在ppp-2.4.5/pppd/pathnames.h中 #define _PATH_CHAPFILE _ROOT_PATH "/etc/ppp/chap-secrets" 定义了chap方式验证时,文件的路径,至于pap方式的验证文件,这里不介绍了,大同小异, 4、启动进程, # ./xl2tpd -D & -D表示是调试模式,可以打印出一些debug信息, 当client拨通之后,server端会看到如下接口信息 ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.22.99 P-t-P:192.168.22.128 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1410 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:46 (46.0 b) TX bytes:62 (62.0 b) 当然如果你是用rpm安装的,那么可以用#service xl2tpd start启动进程; 5、小结 不管是用openl2tp,rp-l2tp,xl2tpd或者其他的l2tp的版本,过程都大同小异,无非就是把配置文件写入的相应的文件中,启动l2tp后调用pppd进程,当然开源程序有它自身的缺陷,望以后努力,把这些代码拆解开,加入zebra的那套机制,虽然zebra那套机制也挺烂的。 看到这里你可能根本不知道什么是L2TP,下面是L2TP的简要介绍: L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是VPDN(Virtual Private Dial-up Network,虚拟私有拨号网)隧道协议的一种。 VPDN是指利用公共网络(如ISDN或PSTN)的拨号功能接入公共网络,实现虚拟专用网,从而为企业、小型ISP、移动办公人员等提供接入服务。即VPDN为远端用户与私有企业网之间提供了一种经济而有效的点到点连接方式。 VPDN采用专用的网络加密通信协议,在公共网络上为企业建立安全的虚拟专网。企业驻外机构和出差人员可从远程经由公共网络,通过虚拟加密隧道实现和企业总部之间的网络连接,而公共网络上其它用户则无法穿过虚拟隧道访问企业网内部的资源。 VPDN隧道协议可分为PPTP、L2F和L2TP三种,目前使用最广泛的是L2TP。 L2TP(第二层隧道协议)是用来整合多协议拨号服务至现有的因特网服务提供商点。 在L2TP构建的VPDN中,网络组件包括以下三个部分: Ÿ 远端系统 远端系统是要接入VPDN网络的远地用户和远地分支机构,通常是一个拨号用户的主机或私有网络的一台路由设备。 Ÿ LAC(L2TP Access Concentrator,L2TP访问集中器) LAC是附属在交换网络上的具有PPP端系统和L2TP协议处理能力的设备,通常是一个当地ISP的NAS,主要用于为PPP类型的用户提供接入服务。 LAC位于LNS和远端系统之间,用于在LNS和远端系统之间传递信息包。它把从远端系统收到的信息包按照L2TP协议进行封装并送往LNS,同时也将从LNS收到的信息包进行解封装并送往远端系统。 LAC与远端系统之间采用本地连接或PPP链路,VPDN应用中通常为PPP链路。 Ÿ LNS(L2TP Network Server,L2TP网络服务器) LNS既是PPP端系统,又是L2TP协议的服务器端,通常作为一个企业内部网的边缘设备。 LNS作为L2TP隧道的另一侧端点,是LAC的对端设备,是LAC进行隧道传输的PPP会话的逻辑终止端点。通过在公网中建立L2TP隧道,将远端系统的PPP连接的另一端由原来的LAC在逻辑上延伸到了企业网内部的LNS。 PPP 定义了多协议跨越第二层点对点链接的一个封装机制。特别地,用户通过使用众多技术之一(如拨号 POTS、ISDN、ADSL 等)获得第二层连接到网络访问服务器(NAS),然后在此连接上运行 PPP。在这样的配置中,第二层终端点和 PPP 会话终点处于相同的物理设备中(如 NAS),L2TP 扩展了 PPP 模型,允许第二层和 PPP 终点处于不同的由包交换网络相互连接的设备中。 通过 L2TP,用户在第二层连接到一个访问集中器(如调制解调器池、ADSL DSLAM 等),然后这个集中器将建立PPP隧道到 NAS。这样,可以把 PPP 包的实际处理过程与 L2 连接的终点分离开来。 对于这样的分离,其明显的一个好处是,L2 连接可以在一个(本地)电路集中器上终止,然后通过共享网络如帧中继电路或英特网扩展逻辑 PPP 会话,而不用在 NAS 上终止。从用户角度看,直接在 NAS 上终止 L2 连接与使用 L2TP 没有什么功能上的区别。L2TP 协议也用来解决“多连接联选组分离”问题。多链接 PPP,一般用来集中 ISDN B 通道,需要构成多链接捆绑的所有通道在一个单网络访问服务器(NAS)上组合。因为 L2TP 使得 PPP 会话可以出现在接收会话的物理点之外的位置,它用来使所有的通道出现在单个的 NAS 上,并允许多链接操作,即使是在物理呼叫分散在不同物理位置的 NAS 上的情况下。 L2TP 使用以下两种信息类型,即控制信息和数据信息。控制信息用于隧道和呼叫的建立、维持和清除。数据信息用于封装隧道所携带的 PPP 帧。控制信息利用 L2TP 中的一个可靠控制通道来确保发送。当发生包丢失时,不转发数据信息。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服