如何用Linux做PPPOE服務器
不少環境下,我們都需要用Linux做PPPOE服務器。那么與Win系統不同的,Linux系統更加強調命令行的使用。所以,這里我們就借助網絡拓撲圖的結構,來分析一下Linux做PPPOE服務器時,所涉及的命令代碼的使用。
網絡拓撲如圖1所示
從上圖看出,使用Linux做PPPOE服務器與使用routeros作PPPOE服務器在網絡拓撲上是沒有區別的,我們本次是使用Eth1網卡連接外網(為其設置IP地址、子網掩碼、網關:10.70.10.15/255.255.0.0 10.70.0.1),Eth0網卡連接內網(為了安全起見,不設置IP地址等信息)。
Linux自身的網絡設置
Linux做PPPOE服務器,在操作上雖然也可以在圖形界面中是為網卡設置IP地址,但是真正實現網卡IP地址等信息的準確可靠,還是要在相應的文件中作設置,我們本次要設置兩塊網卡,編輯好的文件內容如下:
- [root@localhost network-scripts]# pwd
- /etc/sysconfig/network-scripts
- [root@localhost network-scripts]# more ifcfg-eth0
- TYPE="Ethernet"
- BOOTPROTO="static"
- IPADDR="0.0.0.0"
- DEVICE="lan"
- HWADDR="00:0C:29:33:69:86"
- ONBOOT="yes"
- NETMASK="0.0.0.0"
- [root@localhost network-scripts]# more ifcfg-eth1
- TYPE="Ethernet"
- BOOTPROTO="static"
- IPADDR="10.70.10.11"
- DEVICE="wan"
- HWADDR="00:0C:29:33:69:90"
- ONBOOT="yes"
- NETMASK="255.255.0.0"
- GATEWAY="10.70.0.1"
Linux做PPPOE服務器的設置過程中,我們重點看一下ifcfg-eth1的配置文件,其中ONBOOT="yes"是必須的,可以保證系統啟動網卡自動連接到網絡上,網關的信息是我們手工添加進出去,保證有網關可以正常的訪問外部網絡,ifcfg-eth0文件中只要保證ONBOOT="yes"就可以了,當然象在routeros中一樣,我們將外網口的名字定義為wan,將內網口的名字定義為lan。#p#
Linux做PPPOE服務器設置
一)檢查本機有沒有安裝PPPOE服務
- [root@localhost network-scripts]# rpm -q rp-pppoe
- rp-pppoe-3.5-35
以上信息說明安裝了
二)配置必要的參數
為了使Linux中的配置過程比較好理解,我們以routeros下的配置過程作為參考。
1、了解pppoe-server-options
這個文件有點類似于ROUTERS下的profile文件,在這個文件中定義了使用哪種驗證方式:require-chap,為用戶分配的DNS服務器地址是多少:
- ms-dns 219.146.0.130
- ms-dns 222.175.169.91
完整的pppoe-server-options文件如下所示
- [root@localhost ppp]# more pppoe-server-options
- # PPP options for the PPPoE server
- # LIC: GPL
- require-chap
- login
- lcp-echo-interval 10
- lcp-echo-failure 2
- ms-dns 219.146.0.130
- ms-dns 222.175.169.91
2、添加用戶名和密碼
在相同的目錄下有一個chap-secrets文件,在這里面可以添加用戶名和密碼
- [root@localhost ppp]# more chap-secrets
- # Secrets for authentication using CHAP
- # client server secret IP addresses
- abc * abc *
3、允許本地驗證
也就是修改options文件,將而來默認的lock改為local即可。
- [root@localhost ppp]# more options
- #lock
- local
4、開啟PPPOE服務
- [root@localhost ppp]# more pppstart
- pppoe-server -I lan -L 192.168.0.1 -R 192.168.0.5 -N 10
像以前一樣,我將這條命令做成了一個腳本,這樣操作測試其中的參數比較方便,我簡單介紹一下Linux做PPPOE服務器當中這條命令中的各個參數的意思。
I:指定響應PPPOE請求的端口,本例中是在lan口上。
L:PPPOE服務器的IP地址,這是客戶端所填的PPPOE服務器的地址。
R:這是分配給客戶端的地址池起始地址,本例中從192.168.0.5開始
N:地址池的IP地址遞增幾個,本例中添增10,也就是從192.168.0.5開始,到192.168.0.14結束。
做完以上的設置,我們再梳理一下routeros下建立PPPOE服務的步驟
1、添加一個地址池
2、添加一個profile文件
3、添加撥號用戶
4、啟動pppoe服務
對照一下,可以看出我們在Linux中將以上步驟都完成了,也就是說PPPOE服務準備好了,客戶端PPPOE撥號,順利的話就可以撥號成功了。當然現在客戶端還不能上網,設置Linux做PPPOE服務器的這個時候,還沒有啟用NAT,我們用IPTABLES軟件來實現,寫一個這樣的腳本即可:
- echo "1" >> /proc/sys/net/ipv4/ip_forward
- iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o wan -j SNAT --to 10.70.10.23
***行的作用是啟用IP轉發,第二行是啟動IPTABLES進行NAT轉換,下面是對各個參數的解釋
-t nat表示進行NAT轉化
-s 192.168.0.0/24表示源地址為192.168.0.0/24這個網段
-j SNAT --to 10.70.10.23表示將源地址都轉化成10.70.10.23這個外網地址
同樣的,我們可以對照routeros系統里NAT的設置來理解這條命令。啟動NAT以后,這臺PPPOE服務器就功能完整了,客戶端不僅可以撥通服務器,撥通后還可以上網。以上就是利用Linux服務器來架設PPPOE服務器的過程,功能一點不差,而且還是免費的,大家有興趣可以試一下。