您的位置:首页 > 编程语言 > PHP开发

嵌入式平台-Pptpd移植

2017-01-11 09:54 351 查看
Pptpd移植
北京华环-任晓亮,2015.5.4
项目:南非铁路,三层交换,单臂路由

平台:nios2 ,ETR01,cyclconeIII

 

查看内核支持PPP、MPPE,
GRE

说明:PPP是虚拟接口,每一个客户端连接到pptpd,服务器都会建立一个虚拟的物理接口ppp0,与客户端端到端通信

        MPPE是信道通信加密协议

        GRE是服务建立以后隧道是通过这个模块传送数据的

有加载mppe跟gre模块

你可以用lsmod命令查看里面是否有没有以上两个模块。

加载mppe模块:

>modprobe
–l|grep mppe

显示:/modules/2.****/kernel/drivers/net/ppp_mppe.ko

接着输入:

>modprobe ppp_mppe

加载gre

> modprobe –l|grep mppe

会提示:……/net/ivp/ip_gre.ko

>modprobe ip_gre

输入lsmod确认是否加载成功。

Gre 跟mppe模块开机情况下不会自动加载,

我们一般选择将这两个模块编译进内核镜像里面,在内核启动时自动加载运行:

1.ppp内核支持

      Make menuconfig








将Device DriversàNetworking Support下的所有关于ppp的选项全部编译进内核或者编译成模块加载。

2.pppd移植(busybox里面有这个支持)

   PPTP服务器和客户端都需要pppd。下载ppp-2.4.5.tar.gz,一定要用这个版本。网上很多用2.4.4版本加mppe补丁,但是我用这种方法始终不能让pppd支持mppe。2.4.5版本本身就支持mppe。

移植过程如下:

tar zxvf ppp-2.4.5.tar.gz

cd ppp-2.4.5

./configure

make CC=mips-linux-gcc

将pppd下载到板子上的/usr/sbin

将scripts目录下的pon和poff下载到板子上的/usr/sbin

Pon和poff是用于启动和关闭pptp客户端,后面会提到。

3.pptpd移植(busybox里面有这个支持)

tar zxvf pptpd-1.3.4.tar.gz

cd pptpd-1.3.4

./configure CC=mips-linux-gcc --host=mips

make

将pptpd下载到板子上的/usr/sbin

将pptpctrl下载到板子上的/usr/local/sbin,此目录可能需要创建

将sample目录下的chap-secrets下载到板子的/etc/ppp,此目录可能需要创建

vi chap-secrets

写入username pptpd password *,“pptpd”与options.pptpd中的name相同。

将sample目录下的options.pptpd下载到板子的/etc/ppp

将sample目录下的pptpd.conf下载到板子的/etc

vi pptpd.conf

将logwtmp屏蔽,否则不能连接,不知道什么原因。

改localip和remoteip,localip为建立连接之后服务器的ip,remoteip为建立连接后分配给客户端的ip

启动pptp服务器:pptpd

4.调试方法
         编译内核支持syslogd,这是系统日志功能,可以记录一些系统异常,即可以记录pptpd服务启动运行过程中的一些错误,在这个移植过程中,日志给我很大的帮助,这个搞了一周多时间,最后看日志一步一步搞定了
查看是否启动系统日志:
(1).打开pptpd服务的调试开关:
root:/var/log>vi /etc/pptpd.conf
将 #debug这一行的#号注释取消
(2).root:/etc>ps -aux|grep syslogd
  725 root      2112 S   /sbin/syslogd -n
  772 root     2116 S    grep syslogd
(3).查看日志:
root:/var/log>cat messages
Jan  1 00:01:20 nios2syslog.info syslogd started: BusyBox v1.18.4
Jan  2 01:14:29 nios2auth.info login[731]: root login on 'pts/0'
Jan  2 02:28:56 nios2daemon.info pptpd[760]: MGR: Maximum of 100 connections reduced to 51, notenough IP addresses given
Jan  2 02:28:56 nios2daemon.info pptpd[761]: MGR: Manager process started
Jan  2 02:28:56 nios2daemon.info pptpd[761]: MGR: Maximum of 51 connections available
 
5.移植过程中出现的问题
         1.根据日志提示,会找不到pptpd-logwtmp.so库,这个库在编译目录的Plugin/usr/lib/pptpd/pptpd-logwtmp.so,将它复制到系统的/usr/lib/pptpd/,这个库是记录客户端登陆时的一些时间信息,应该是计时计费功能用的,这个库最后还是没正常运行,这个功能我们不用,所有只要屏蔽到计时功能就可以了,在配置文件的29行,33行,注释掉
root:/var/log> vi/etc/pptpd.conf
#noipparam
#logwtmp
         2.档客户端登陆提示691,跟875错误代码时就要查看日志,是不是提示找不ppp0设备接口,这个问题也不知道为什么当客户端连接是不能自动建立ppp0接口,解决办法只能手动建立一个设备节点:
root:/etc>mknod/dev/ppp c 108 0
说明:
root:/dev> ls-al|grep ppp
crw-r--r--    1 root    root      108,   0 Jan 1 00:00 ppp
c是指字符设备
108是pptpd服务的主设备号,0是次设备号
查看:主设备文件
root:/proc> catdevices |grep ppp
108 ppp
成功连接后用ifconfig可以看到:
ppp0      Link encap:Point-to-Point Protocol 

          inet addr:192.168.1.181  P-t-P:192.168.100.50  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARPMULTICAST  MTU:1396  Metric:1
          RX packets:436 errors:0 dropped:0overruns:0 frame:0
          TX packets:65 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:3

          RX bytes:39707 (38.7 KiB)  TX bytes:7449 (7.2 KiB)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: