【转载请注明出处:钱国正的专栏http://blog.csdn.net/qianguozheng/article/details/38322705】
在实施任何大型项目中,我们会遇到各种各样的问题,当然了,如果做足了充分的测试,我们会便利很多。
Mac地址克隆主要是解决运营商绑定mac地址的行为,这种行为就给哥添麻烦。
好了,话题转回,我如何实现这个Mac地址克隆的。
OpenWrt中的LAN口以实现Mac地址克隆,所以其相关的设置Mac地址克隆的东西也已经存在了,我们需要做的就是搬到PPPoE上面。
但是,问题来了,照搬之后,wan口的mac地址是编程我们设置的mac地址了,但是但是就是拨号拨不上。
首先要抓包分析,顺便看看PPPoE建立连接过程。
发现,PPPoE建立连接分为两个过程,1. PPPoE发现过程。 2. PPP链接建立过程。
但是PPP链接建立过程中会出现路由器之前的Mac地址(非我们克隆的Mac地址),然后又有我们克隆的地址,连接反复,一直拨不上号。
后来通过看pppd的源代码发现
rp-pppoe.so这个动态链接库实现PPPoE发现过程。
pppd进程实现PPP链接建立过程,在lcp的过程中发现发送数据包使用的是write函数,mac地址是系统自动填上的,这里需要仔细研究这个socket建立的过程,其mac如何修改,我目前的时间不允许我深陷,只能取折中的方法,修改eth0的mac地址。
如此,问题解决,但是这不是终点,各种不同情况下需要修复bug,如当mac为空的时候,系统重启的时候,网络重启的时候等。
这些情况都要保持eth0.2(我自己划分的vlan,不同的系统各不相同,我的系统3个vlan所以才这么复杂)与eth0的mac地址一致。
【转载请注明出处:钱国正的专栏http://blog.csdn.net/qianguozheng/article/details/38322705】
OpenWrt PPPoE拨号问题之mac地址克隆,布布扣,bubuko.com
原文:http://blog.csdn.net/qianguozheng/article/details/38322705