linux下搭建ipv6的pppoe server端
阿新 • • 發佈:2019-02-19
近期在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。