1. 程式人生 > >linux下搭建ipv6的pppoe server端

linux下搭建ipv6的pppoe server端

近期在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。