免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7015 | 回复: 8
打印 上一主题 下一主题

[vpn] 移植linux下pppoe server过程中的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-19 23:25 |只看该作者 |倒序浏览
20可用积分
开发一个linux环境下的pppoe server程序,想直接借鉴linux下的pppoe server和pppd。
读了下pppoe-server的源码,在pppoe discovery阶段完成之后,fork出一个子进程,再用execv执行pppd程序,这之后就是pppd和用户交互。之后的LCP, CHAP认证, NCP就和pppoe-server没关系了。

我的问题是:
如果不只是拨号到pppoe server上直接上外网,而是经过L2TP建立隧道到远程的LNS。该如何获取pppd和用户议定的参数呢?

不知道问题描述清楚没有。请高人指点一下吧?

最佳答案

查看完整内容

根据你的描述, 我推测你是想: 做 l2tp 连接, 期间需要的选项通过用户传上来, 但怎么传? 你通过 pppoe 来做. 如果是先进行 pppoe 连接,你就想到把选项给保存下来, l2tp阶段接着用, 对不?如果是这样,不写程序,应该不行吧.有个结构: pppoe ------ l2tp | | --------------- | v ppp pppoe 和 l2tp 是负责封装 ppp , 并且 ppp 不负责保存 ...

论坛徽章:
0
2 [报告]
发表于 2008-06-19 23:25 |只看该作者
根据你的描述, 我推测你是想:  做 l2tp 连接, 期间需要的选项通过用户传上来, 但怎么传? 你通过 pppoe 来做.
如果是先进行 pppoe 连接,你就想到把选项给保存下来, l2tp阶段接着用, 对不?
如果是这样,不写程序,应该不行吧.

有个结构:
      pppoe ------ l2tp
         |                 |
         ---------------
                 |
                 v
               ppp
pppoe 和 l2tp 是负责封装 ppp , 并且 ppp 不负责保存参数传给上层; 事实上也是如此,  l2tp 不起来(tunnel),你 ppp 是起不来的。
            
如果你是 希望 后面的客户获得 LNS 分配地址, 不需要 pppoe , 请参考 L2TP RFC 的模型介绍,我记得是有个符合你的要求的.

论坛徽章:
0
3 [报告]
发表于 2008-06-19 23:28 |只看该作者
你是 pppoe 的 server?
做完 pppoe 然后在 l2tp?

如果是这样, 那你的 pppoe 过程的目的是什么?

论坛徽章:
0
4 [报告]
发表于 2008-06-19 23:54 |只看该作者
原帖由 C.J 于 2008-6-19 23:28 发表
你是 pppoe 的 server?
做完 pppoe 然后在 l2tp?

如果是这样, 那你的 pppoe 过程的目的是什么?

我是参考rp-pppoe-3.8中的设计。pppoe server的发现阶段完成之后,进入ppp会话阶段后就fork子进程执行pppd,之后就由pppd和用户打交道了。
我是想借鉴这一套代码,毕竟自己写太复杂。
我想要pppoe server功能是:
1.侦测用户接入,完成发现阶段。
2.实现ppp会话的LCP, CHAP认证和NCP(直接用的pppd)。
3.获取在第二步中的商议参数,通过L2TP隧道传至LNS。

但如果用pppd,好像就没办法获得第二步商议的参数了。

论坛徽章:
0
5 [报告]
发表于 2008-06-21 23:28 |只看该作者
原帖由 C.J 于 2008-6-19 23:25 发表
根据你的描述, 我推测你是想:  做 l2tp 连接, 期间需要的选项通过用户传上来, 但怎么传? 你通过 pppoe 来做.
如果是先进行 pppoe 连接,你就想到把选项给保存下来, l2tp阶段接着用, 对不?
如果是这样,不写 ...

谢谢你耐心的回答!
其实你说的有些我还没有完全明白。问题也没有彻底解决。
我现在最大的疑问是不知道pppoe-server,pppd, L2TP这三个进程之间是怎么交互的。
在pppoe-server代码里发现阶段完了直接起一个pppd进程。在L2TP代码里也是起一个pppd进程。
这两个pppd进程可以是同一个吗?
曾考虑过用进程间通讯,等pppoe-server进程发现阶段完毕后给L2TP进程发消息通知后者起pppd进程。
现在思路有点乱了。不知道网上有没有一些成熟的方案可以参照。

论坛徽章:
0
6 [报告]
发表于 2008-06-26 22:36 |只看该作者
概念上的问题应该是, 我也曾经很头晕。
请参看  linux kernel / Documentations / ppp_generic.txt
把 channel 弄明白应该就知道 pppoe 与 l2tp 起的是什么 pppd 了。

论坛徽章:
0
7 [报告]
发表于 2009-12-07 11:40 |只看该作者

回复 #7 parco 的帖子

楼主你的研究情况怎么样了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP