Contents

Linux使用pppoe連線方法小記

Contents

最近在好奇 pppoe 到底能不能走 wifi
google 一下發現[問題] 走 Wi-Fi 可以搭配 PPPoE 嗎? - 看板 NextTV - 批踢踢實業坊
這篇有人說可以也有人說不行…
其中一段cassine:PPPoE顧名思義就是PPP over Ethernet,不是PPP over WiFi
感覺還滿有道理的
不過還是有看到留言說可以使用
今天要來破解是不是真的…

好啦,突然想到家裡有一台 surface
直接連 wifi 做 pppoe 連線就可以馬上知道結果
結果可以
但是不知道 Linux 能不能用?

簡單記錄一下怎麼使用

1
2
3
4
# 安裝pppoeconf
sudo apt-get install pppoeconf
# 設定
sudo pppoeconf

設定可以參考沉思的伊文: Raspberry Pi 樹莓派 ADSL PPPoE 連線到網際網路
’noauth’跟’defaultroute’這個選 yes

1
2
3
4
向配置文件添加 『noauth' 和 『defaultroute'
noauth 不認證遠端身份,家庭寬帶默認 Yes 即可
defaultroute 添加默認路由,不手動改路由表或者特殊需求默認 Yes 即可
參考[【家庭服务器计划】pppoeconf | Debian 配置 PPPOE 上网 – Lensual‘s Space](https://lensual.space/brain-hole/846.html)

linux 添加静态路由 - leon - CSDN 博客
MTU 選項也選 yes
詳細:小議 TCP 的 MSS(最大分段)以及 MTU - 王朝網路 - wangchao.net.cn
【家庭服务器计划】pppoeconf | Debian 配置 PPPOE 上网 – Lensual‘s Space
裡面都詳細提到

1
2
3
4
5
6
7
8
MTU 最大傳輸單元,二層幀的淨荷
MSS 最大報文長度,TCP 協議特性,TCP 協議的淨荷,用於協商適應路徑中的 MTU
Ethernet  MTU  1500 (Byte) ,超過 1500 的載荷 ( payload ) 將被分段,最大幀長度為 Eth Header(14) + Payload(1500) + FCS(4) = 1518 (Byte)。其實 FCS  wireshark 抓包看不到的,用於校驗已經被系統底層剔除。另外以太網規範還有前導碼和幀間隔,那些是用來底層收發控制相關的(誤
PPP  MTU 同為 1500,最大幀長度為 PPP Header(5) + Payload(1500) + FCS(2) + Flag(1) = 1508 (Byte)
要把 PPP 塞進 Ethernet 就是 PPPOE,需要把 PPP  MTU 縮減才可以使得 PPP 滿足 Ethernet  MTU
原來的 PPP 最大會出現 1508 的幀,現在需要控制在 1500 以內。PPP  MTU 就是 1500  (1508  1500) = 1492
所以 PPPOE  MTU 通常為 1492 (Byte) ,以便在 MTU  1500  Ethernet 上運行。
MSS 箝制(Clamping) 會修改 TCP SYN  MSS 以符合當前的 MTU。因為置於路由器後面的主機使用的是 MTU  1500  Ethernet 。雖然 ICMP 協議可以在傳輸過程中修正 TCP  MSS ,但是部分運營商和設備考慮到安全問題或者就是不想讓你 ping  tracertoute 免得投訴他們禁止了 ICMP 協議。

基本上設定都是 yes

連線

1
2
3
4
5
6
7
8
9
# 連線dsl-provider設定檔
pon dsl-provider
# 斷線pppoe
poff dsl-provider
# 查詢狀態
plog
ifconfig
# 關閉全部pppoe
poff -a
1
2
3
4
5
PPPOE設定檔
    /etc/ppp/peers/dsl-provider
    dsl-provider內紀錄ADSL連線相關參數(含帳號),可以修改成hinet以利識別,但改檔名後,pppoe_on_boot檔內的開機自動撥接的設定檔名稱也要跟著換,否則開機自動撥接功能會失效。
    /etc/ppp/pppoe_on_boot
    設定系統開機時自動撥接之設定檔,其中「exec pppd call dsl-provider」就是執行撥接時呼叫的設定檔

重新連線 scriptDebian Linux: ADSL PPPoE 自動重撥 Script | Tsung’s Blog

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
重新撥接的程式 及 設定步驟

重新撥接的程式如下: (vim /usr/bin/repppoe)

    #!/bin/bash
    #if !ping -c 3 168.95.1.1 > /dev/null 2>&1
    #if !(cat /proc/net/dev | grep ppp0) > /dev/null 2>&1
    #if !(cat /proc/net/dev | grep ppp) > /dev/null 2>&1
    if !ping -c 3 tw.yahoo.com > /dev/null 2>&1
    then
    #/usr/bin/poff
    #/usr/bin/pon dsl-provider
    /usr/bin/pon
    fi

chmod +x /usr/bin/repppoe
設定 crontab (設 root 的 crontab)

    crontab -e # 之後寫入下述
    */5 * * * * /usr/bin/repppoe

進入就到這邊,以後要用可以翻翻這篇。

小記…,發現 pon 可以一直新增 pppoe 連線
但好像最後面新增會做 default route
所以只會有一個 ip 才會連到
我一直以為都可以連…
但還是要小心,我記得 hinet 只能撥接 8 個
HiNet 客戶服務 > 問題搜尋 > 上網問題

參考來源: