首頁 > 軟體

CentOS Linux上搭建PPPoE伺服器及撥號設定

2020-06-16 17:15:51

搭建PPPoE,成功了的話,就覺得超級簡單,在CentOS Linux更是5步左右就能搞定。
 
1、安裝pppoe,安裝完成後,會有pppoe-server命令
yum install rp-pppoe

2、安裝完成後,會在動在/etc/ppp目錄下生成pppoe-server-options檔案,檔案內容如下,照著改就可以了
寫道
# PPP options for the PPPoE server
# LIC: GPL
require-pap
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
logfile /var/log/pppoe.log

3、新增使用者名稱密碼,修改/etc/chap-secrets檔案,新增下列一行
寫道
pppoe * "123456" *

很通俗,使用者名稱:pppoe,密碼是:123456
 
4、新增防火牆規則,做nat轉換
寫道
iptables -A POSTROUTING -t nat -s 10.10.10.0/24 -j MASQUERADE
iptables -A FORWARD -p tcp --syn -s 10.10.10.0/24 -j TCPMSS --set-mss 1256
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

第一條是新增nat,轉換來自10.10.10.0/24網段的ip
第二天是修改mtu,根據自身需求改了
第三條開啟轉發
第四條是修改轉發檔案
 
5、啟動pppoe
寫道
pppoe-server -I eth0 -L 10.10.10.1 -R 10.10.10.100-200

這條命令的作用是:-I eth0  在eth0埠上檢測pppoe discover包
-L 10.10.10.1    虛擬閘道器的意思,就是pppoe伺服器端虛擬閘道器ip
-R 10.10.10.100-200  分配虛擬IP,分別是10.10.10.100到10.10.10.200
還有一些其他的引數你可以參考一下,直接man pppoe-server自己看了,每個引數都有預設值
 
成功完成上述步驟,就完成了搭建pppoe伺服器端了,下面就是windows驗證了
我的是windows xp系統,win7或者路由器應該都沒問題
不過要改下驗證方式,在“屬性”--》“安全”--》“高階--設定”--》將“資料加密”改為“可選加密”,然後勾選上chap或者pap驗證就可以了
輸入使用者名稱密碼,不可意外就可以連線成功了
 
不過只是區域網的,意義並不大。
 
順帶貼一下pppoe建立的原理過程
寫道
PPPoE 的驗證過程
PPPoE 的驗證過程包括 2 個階段,Discovery 階段和 PPP Session 階段。
Discovery 階段,包含 4 個步驟:
Step 1: PADI
PPPoE 用戶端傳送主動發現初始包(PPPoE Active Discovery Initiation,PADI),以太頭中的目的地址是以太廣播地址 FF:FF:FF:FF:FF:FF,PPPOE 頭中的 CODE 為 0x09,SESSION_ID 值必須為 0,負載部分必須只包含一個 Service-Name 型別的 TAG 表示請求的服務型別,另外可以包含其他 TAG,整個 PPPOE 包不能超過 1484 位元組;
Step 2: PADO
伺服器端 PPPoE 進程在網路介面偵聽到 PADI 包後,傳送主動發現提議包(PPPoEActive Discovery Offer, PADO),用來回應客戶機的 PADI 包,以太頭中的目的地址是客戶機的MAC 地址,PPPOE 頭中的 CODE 為 0x07, SESSION_ID 值必須為 0,負載部分必須包含一個 AC-Name 型別的 TAG,用來指示本 AC 的名稱,一個在 PADI 包中指定的Service- Name 的 TAG,另外可以包含其他 Service-Name 的 TAG。如果 AC 不對該客戶機提供服務,AC 就不回應 PADO 包。
Step 3: PADR
PPPoE 用戶端收到 PADO 包後,在 PADO 包中選擇一個(可能有多個 PPPoE 伺服器,通常選取最快的一個)傳送主動發現請求包(PPPoEActive Discovery Request,PADR),以太頭中的目的地址是所選取的 PADO 包的源以太頭地址(即 PPPoE 伺服器的 MAC 地址),PPPOE 頭中的 CODE 為 0x19,SESSION_ID 值必須為 0,負載部分必須只包含一個 Service-Name 型別的 TAG 表示請求的服務型別,另外可以包含其他 TAG。
Step 4: PADS
MAC 地址匹配的 PPPoE 伺服器收到 PADR 包後,傳送主動發現對談確認包(PPPoE Active Discovery Session-confirmation, PADS),將產生一個 SEESSION_ID 值用來標誌本次 PPP 對談,以 PADR 包方式傳送給客戶機。以太頭中的目的地址是客戶機的 MAC 地址,PPPOE 頭中 的 CODE 為 0x65,SESSION_ID 值必須為所生成的那個SESSION_ID,負載部分必須只包含一個 Service-Name 型別的 TAG, 表示該服務型別被 PPPoE 伺服器接受,另外可以包含其他 TAG。如果 PPPoE 伺服器不接受 PADR 中的

Server-Name,PADS 中則包含一個 Service-Name -Error 型別的 TAG,這時 SESSION_ID 設定為 0。

PPP Session 階段:
當用戶端與伺服器端遠成發現階段之後,即進入對談階段,在 PPP 對談階段,PPP 包被封裝在 PPPOE 以太幀中,以太包目的地址都是單一的,以太協定為 0x8864,PPPOE 頭的CODE必須為0,SESSION_ID必須一直為發現階段協商出的SEESION_ID值,PPPOE的負載是整個 PPP 包,PPP 包前是兩位元組的 PPP 協定 ID 值。
在 Session 階段,主機或伺服器任何一方都可發 PADT(PPPoE Active Discovery Terminate)報文通知對方結束 Session。

PPPoE 的身份驗證發生在對談(PPP Session)階段。可以這樣更解,rp-pppoe 包負責Discovery 及對談終止 PADT,ppp 包負責對談階段的資料傳輸。

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2017-05/143288p2.htm


IT145.com E-mail:sddin#qq.com