近期在pppoe协议的开发,需要实现pppoe能够承载ipv6的报文,就尝试着在linux搭建pppoe相关软件,主要是开源软件ppp-2.4.5和rp-pppoe软件。对于这两个软件的了解开始也只是通过网上找大量的资料。现在就在搭建过程以及搭建过程中遇上的问题,简单的做个总结,第一次写技术方面的blog,后面慢慢的改进,还望各位大虾多多指教。
1.下载ppp-2.4.5.tar.gz、rp-pppoe-3.8.tar.gz
2.安装
a.将ppp、rp-pppoe解压
b.安装pppd
cd ppp-2.4.5/pppd
vi Makefile.linux开启HAVE_INET6=y
cd ppp-2.4.5
./configure
(备注:先make clean一下,确保HAVE_INET6开启)
make
make install
c.安装rp-pppoe
cd rp-pppoe/src
./configure --enable-plugin=/opt/ppp-2.4.5
make
make install
3.修改配置文件
vim /etc/ppp/pppoe.conf
修改下面几个值,其他的不要动
ETH=eth0
USER=freedom
LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
vim /etc/ppp/pppoe-server-options
下面是全部内容
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
vim /etc/ppp/chap-secrets
freedom * 123456 *
vim options
local
ipv6 ,
4. 开启server端
pppoe-server -I eth0 -L 10.10.10.10 -R 10.10.10.11
5.客户端
pppoe-setup
pppoe-start
这样就搭建好了能够承载ipv6的pppoe server端,实现了拨号功能。
在此过程中遇到一下一些问题
1.在/etc/ppp/options中添加ipv6 ,选项后,连接超时,抓包发现收到PADS后持续发PADT包。
原因:编译的时候没有将宏INET6开启。造成无法获取这个选项的相关信息,查看log信息可以发现提示的是cmd 'ipv6'不识别。 解决方法:在ppp-2.4.5/pppd/Makefile.linux中HAVE_INET6=y前的“#”去掉。并在make ppp-2.4.5前先make clean一下。这个可能跟代码编译的依赖关系有关,如果不make clean有时候也是可以编译通过的,但是INET6没有开启。相关的ipv6的处理也没有编译进去。
2.在/etc/ppp/pppoe-server-option中添加的ipv6 ,而不在/etc/ppp/options中添加ipv6 。连接成功但抓包发现收到PPP IPV6的Configure request后收到protocol reject包。
3.在server端设置/etc/ppp/chap-secrets中是这样设置
#client server secret IP address
"freedom" * "123456"
会造成在connnect不成功,server的log信息为The remote system is required to authenticate itself. but I couldn't find any suitable secret(password) for it to use to do so.
解决方法:将IP address用“*”这样就ok啦。也即是
#client server secret IP address
"lfreedom" * "123456" *
在搭建的过程中发现查看log非常有用,即less /var/log/messages。但是有一个问题,如果测试了非常多次的话,会造成这个log信息非常大。这样也要看最新的log信息就要看很多东西了。经过查找资料,有一个方法可以清空该log。 cat /dev/null>/var/log/messages。
1.下载ppp-2.4.5.tar.gz、rp-pppoe-3.8.tar.gz
2.安装
a.将ppp、rp-pppoe解压
b.安装pppd
cd ppp-2.4.5/pppd
vi Makefile.linux开启HAVE_INET6=y
cd ppp-2.4.5
./configure
(备注:先make clean一下,确保HAVE_INET6开启)
make
make install
c.安装rp-pppoe
cd rp-pppoe/src
./configure --enable-plugin=/opt/ppp-2.4.5
make
make install
3.修改配置文件
vim /etc/ppp/pppoe.conf
修改下面几个值,其他的不要动
ETH=eth0
USER=freedom
LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
vim /etc/ppp/pppoe-server-options
下面是全部内容
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
vim /etc/ppp/chap-secrets
freedom * 123456 *
vim options
local
ipv6 ,
4. 开启server端
pppoe-server -I eth0 -L 10.10.10.10 -R 10.10.10.11
5.客户端
pppoe-setup
pppoe-start
这样就搭建好了能够承载ipv6的pppoe server端,实现了拨号功能。
在此过程中遇到一下一些问题
1.在/etc/ppp/options中添加ipv6 ,选项后,连接超时,抓包发现收到PADS后持续发PADT包。
原因:编译的时候没有将宏INET6开启。造成无法获取这个选项的相关信息,查看log信息可以发现提示的是cmd 'ipv6'不识别。 解决方法:在ppp-2.4.5/pppd/Makefile.linux中HAVE_INET6=y前的“#”去掉。并在make ppp-2.4.5前先make clean一下。这个可能跟代码编译的依赖关系有关,如果不make clean有时候也是可以编译通过的,但是INET6没有开启。相关的ipv6的处理也没有编译进去。
2.在/etc/ppp/pppoe-server-option中添加的ipv6 ,而不在/etc/ppp/options中添加ipv6 。连接成功但抓包发现收到PPP IPV6的Configure request后收到protocol reject包。
3.在server端设置/etc/ppp/chap-secrets中是这样设置
#client server secret IP address
"freedom" * "123456"
会造成在connnect不成功,server的log信息为The remote system is required to authenticate itself. but I couldn't find any suitable secret(password) for it to use to do so.
解决方法:将IP address用“*”这样就ok啦。也即是
#client server secret IP address
"lfreedom" * "123456" *
在搭建的过程中发现查看log非常有用,即less /var/log/messages。但是有一个问题,如果测试了非常多次的话,会造成这个log信息非常大。这样也要看最新的log信息就要看很多东西了。经过查找资料,有一个方法可以清空该log。 cat /dev/null>/var/log/messages。
转载于:https://blog.51cto.com/5187290/962495