- 论坛徽章:
- 0
|
我所在东南大学今日将校内的网络接入服务改为了一种其称之为所谓bras的服务,经调查其实就是一个普通的mschapv1认证的l2tp服务,由于相关文章较少,所以在配置Linux下的客户端的时候遇到了一些问题。不过好在已经解决了,现在将经验简述于此。
l2tp是什么?首先它是一个链路层的协议,阳春一点叫第二层隧道协议,也就是说它可以用来传送ip,icmp,igmp等协议,称其为隧道是因为它需要和ppp协议配合使用。想到了什么?对,和adsl的配置应该类似吧。相关rfc:rfc3070
l2tp中的lac和lns:
+------+ +---------------+ |
| PSTN | | Frame Relay | |
User--| |----LAC ===| |=== LNS --+ LANs
| ISDN | | Cloud | |
+------+ +---------------+ |
所以你可以简单但不科学的把LAC认为是客户,LNS就是服务端了。
现有的软件:
不幸的是,我所能找到的只有两个l2tp的客户端(严格的说同时是服务端,这是因为ppp协议的对等性决定的):l2tpd和rp-l2tpd,分别可以在http://sourceforge.net/projects/l2tpd
和http://sourceforge.net/projects/rp-l2tp/
后者更的开发状态更active一点,但是作为普通客户端我先入为主的选择了l2tpd:)
FC下的配置:
以Fedora Core Rawhide(2006.2左右)为例
配置好extras的仓库后,yum install l2tpd。
完了修改这样几个东西:
/etc/l2tpd/l2tpd.conf
添加一个lac section,比如:
[lac seubras]
lns = bras.seu.edu.cn
redial = yes
redial timeout = 15
max redials = 5
require chap = yes
refuse pap = yes
require authentication = yes
name = hellwolf@a
ppp debug = no
pppoptfile = /etc/ppp/options.l2tpd
其中这个lac配置的名称叫seubras,其中name就是用户名,lns是服务器的地址,ppp选项为文件/etc/ppp/options.l2tpd中,同时使用的是chap协议认证,那么如果你熟悉ppp那么就应该知道,为了指定密码你需要修改,/etc/ppp/chap-secrets文件,格式为:
# client server secret IP addresses
通常这样就可以了
hellwolf@a * mypassword *
关于ppp的选项,通常不需要对服务器进行验证,所有记得加一个noauth选项并去掉可能存在的auth选项,proxyarp选项是一定要打开的,而且一般来说defaultroute也是你需要的,所以我的ppp选项是这样的:
noauth
proxyarp
defaultroute
然后用/sbin/service l2tpd start启动,或者执行#l2tpd -D进入调试状态。
接下来就是连接相应的lns,方法是执行
echo 'c seubras' > /var/run/l2tp-control
c就是连接一个tunnle的命令,seubras是一个lac配置名,
然后用ifconfig检查一下是否相应的ppp接口是否启动,比如:
ppp0 Link encap:Point-to-Point Protocol
inet addr:172.25.1.13 P-t-P:172.25.0.3 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1442 Metric:1
RX packets:2267520 errors:0 dropped:0 overruns:0 frame:0
TX packets:1440905 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:2782058865 (2.5 GiB) TX bytes:80424592 (76.6 MiB)
如果没有,进入l2tpd -D调试,同时打开ppp的debug选项,用tail /var/log/message找ppp的调试输出找问题原因。
就这么简单,更多的配置参考l2tpd.conf(5)。
另外说一点,用netstat -unl可以看到:
udp 0 0 0.0.0.0:1701 0.0.0.0:*
说明这个l2tpd同时还是一个服务端,你可能不需要这个,所以仔细配置一下你的防火墙。
如果你试图通过修改l2tpd.conf中的listen-addr为127.0.0.1来减少这种安全隐患,那么你就会遇到更大的麻烦,l2tpd的代码编写中服务器和客户端公用一个udp socket,你绑定服务端到127.0.0.1后,你也不能发送任何packet出lo接口了。
debian下的配置:
l2tpd的代码已经很久没维护了,所以在现在系统上问题多多,FC下安装的l2tpd打过了很多很多补丁才得以工作,不幸的是debian下可没有l2tpd。所以我的解决办法是下载fedora extras里l2tpd的SRPM,然后用debian下可以安装得到的rpm工具安装srpm然后手动编译。配置方法和fedora下完全一样,就不再复述了。
good luck!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8057/showart_83292.html |
|