rp-pppoe是一個整合了撥號用戶端和服務端的解決方案
:http://www.roaringpenguin.com/products/pppoe
rp-pppoe裡面的pppoe server分使用者模式和核心模式。
使用者模式下以建立一個pppoe進程來為一個新的串連服務;
核心模式下以建立一個pppd進程並帶上參數plugin /etc/ppp/plugins/rp-pppoe.so來接受用戶端的串連
建議選擇核心模式運行pppoe server,這樣一些系統調用不需要在核心和使用者模式之間切換,可以提高速度。
ps -ef
(使用者模式)
root 5093 1 0 09:36 ? 00:00:00 /usr/sbin/pppoe-server -I eth0 -L 10.0.0.1 -R 10.0.0.2 -N 64
root 5101 5093 0 09:38 ? 00:00:00 pppd pty /usr/sbin/pppoe -n -I eth0 -e 1:00:1d:60:45:d9:d4 -S '' file /etc/ppp/pppoe-server-options 10.0.0.1:10.0.0.2 nodetach noaccomp nobsdcomp nodeflate nopcomp novj novjccomp default-asyncmap
nobody 5103 5101 0 09:38 ? 00:00:00 /usr/sbin/pppoe -n -I eth0 -e 1:00:1d:60:45:d9:d4 -S
(核心模式)
root 7541 1 0 09:46 ? 00:00:00 /usr/sbin/pppoe-server -I eth0 -L 10.0.0.1 -R 10.0.0.2 -N 64 -k
root 7572 7541 0 09:48 ? 00:00:00 pppd plugin /etc/ppp/plugins/rp-pppoe.so nic-eth0 rp_pppoe_sess 2:00:1d:60:45:d9:d4 rp_pppoe_service file /etc/ppp/pppoe-server-options 10.0.0.1:10.0.0.3 nodetach noaccomp nobsdcomp nodeflate nopcomp novj novjccomp default-asyncmap
下載、編譯、安裝的步驟:
(使用者模式)
rp-pppoe-3.10.tar.gz 在 /opt 目錄下。
tar -zxvf rp-pppoe-3.10.tar.gz
cd rp-pppoe-3.10/src
./configure
make
make install
(核心模式)
下載pppd,pppd是一個pppoe撥號用戶端,地址:ftp://ftp.samba.org/pub/ppp/
ppp-2.4.5.tar.gz 、rp-pppoe-3.10.tar.gz 在 /opt 目錄下。
tar -zxvf ppp-2.4.5.tar.gz
cd ppp-2.4.5
./configure
make
make install
cd /opt
tar -zxvf rp-pppoe-3.10.tar.gz
cd rp-pppoe-3.10/src
./configure --enable-plugin=/opt/ppp-2.4.5
make
make install
修改設定檔:
cd /etc/ppp
vim pppoe.conf
修改下面幾個值,其他的不要動
ETH=eth0
USER=rp-pppoe
LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
vim pppoe-server-options
下面是全部內容
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
vim chap-secrets
rp-pppoe * rp-pppoe *
vim options
local
運行程式:
(使用者模式)
/usr/sbin/pppoe-server -I eth0 -L 10.0.0.1 -R 10.0.0.2 -N 64
(核心模式)
/usr/sbin/pppoe-server -I eth0 -L 10.0.0.1 -R 10.0.0.2 -N 64 -k
-I 指定區域網路網卡
-L 指定pppoe server的IP地址
-R 為客戶分配的起始IP地址
-N 指定分配給客服端IP地址的個數
-k 使用核心模式
現在就可以用pppoe用戶端來串連我們已經啟動並執行pppoe server了,使用者名稱和密碼為上面設定的
rp-pppoe和rp-pppoe,認證方式為CHAP
但是用戶端串連上去後不能上網,因為伺服器那邊沒有進行資料包的轉寄。
虛擬機器添加了2塊網卡,eth0和eth1,eth0是靜態IP,eth1為DHCP方式擷取IP。
需要修改下配置指令碼
cd /etc/sysconfig/network-scripts
vim ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=lan
IPADDR=192.168.61.120
NETMASK=255.255.255.0
GATEWAY=192.168.61.1
DNS1=61.139.2.69
DNS2=192.168.61.1
HWADDR=00:0c:29:6b:71:d6
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
IPV6INIT=yes
NM_CONTROLLED=yes
TYPE=Ethernet
vim ifcfg-eth1
TYPE="Ethernet"
HWADDR=00:0C:29:6B:71:E0
BOOTPROTO=dhcp
DEVICE=wan
ONBOOT=yes
開啟資料包轉寄
echo "1">>/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
好了,現在用戶端這邊就可以上網了。
下面是 etherPeek 抓包的,pppoe發現階段已經省去,只是TCP3次握手和4次揮手的抓包。
10.0.0.10是pppoe用戶端的IP,192.168.61.206是linux下eth1的IP,每次區域網路網關收到eth0上的資料,然後把源IP改成eth1的IP,目的IP不變,
廣域網路網卡收到遠端伺服器返回的資料,就把目的IP修改成內網主機pppoe的IP。
TCP3次握手
4次揮手