16.04拒絕了dsl的使用者? [論壇 - Ubuntu安裝問題]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 2 (3)


回覆: 16.04拒絕了dsl的使用者?
會員一級
註冊日期:
2011/5/6 22:17
所屬群組:
已註冊使用者
等級: 2
HP : 0 / 34
MP : 4 / 628
EXP: 38
離線
我的解法。

由於一直都知道:先使用 pppoeconf 做完設定之後,
有 GUI 的 NetworkManager 往往也就可以使用;
而 pppoeconf 在執行的一開始就會聲明對系統文件的修改在於:
/etc/ppp/*secrets (chap-secrets 和 pap-secrets)
/etc/ppp/peers/dsl-provider
/etc/network/interfaces
這四個文件。
合理地推測:也許 NetworkManager 同樣需要這四個其中某些配置檔,
卻沒有辦法很好地產生、寫入、佈署或修改必要的文件?

這次利用 VBOX 反覆操作、對比篩檢,發現:
1. dsl-provider 在剛灌好時,系統裡是沒有的。
執行 pppoeconf 會產生它,用 NetworkManager 則沒動靜。
2. interfaces 剛灌好時就有,預設的內容很簡略(而且可能不符)。
執行 pppoeconf 會修改它,用 NetworkManager 則沒動靜。
3. chap-secrets 和 pap-secrets 剛灌好時就有,是要寫(DSL)帳密的。
執行 pppoeconf 會修改它,用 NetworkManager 則沒動靜。

好(?)總之,拿已經寫好的、在主端順利運作的配置檔,以複製貼上大法,一份一份配置檔單獨測試之後,確認 NetworkManager 需要 pap-secrets 這份配置檔,從頭到尾卻沒有去寫;當然,也有可能它預設還有自己的其他方法(卻失效),而 pap-secrets 只是其中可用的一種(讓使用者去自救的)方法?

反正,解法是用 root 去打開 /etc/ppp/pap-secrets
在最底下加入你的 DSL 帳號跟密碼,格式是:

"username" * "password"

雙引號是必要的,
先打 DSL 帳號,
用空格隔開,
一個星號,
一樣用空格隔開,
再打密碼。

就這一個配置檔而已,弄好 NetworkManager 就可以再設置 DSL 使用了(這……


(當然有些人可能碰到的是其他狀況,這裡就幫不上了)

2016/5/8 23:29
應用擴展 工具箱
回覆: 16.04拒絕了dsl的使用者?
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 31
HP : 153 / 766
MP : 449 / 11781
EXP: 66
離線
萬葉丸 寫到:
我的解法。

由於一直都知道:先使用 pppoeconf 做完設定之後,
有 GUI 的 NetworkManager 往往也就可以使用;
而 pppoeconf 在執行的一開始就會聲明對系統文件的修改在於:
/etc/ppp/*secrets (chap-secrets 和 pap-secrets)
/etc/ppp/peers/dsl-provider
/etc/network/interfaces
這四個文件。
合理地推測:也許 NetworkManager 同樣需要這四個其中某些配置檔,
卻沒有辦法很好地產生、寫入、佈署或修改必要的文件?

這次利用 VBOX 反覆操作、對比篩檢,發現:
1. dsl-provider 在剛灌好時,系統裡是沒有的。
執行 pppoeconf 會產生它,用 NetworkManager 則沒動靜。
2. interfaces 剛灌好時就有,預設的內容很簡略(而且可能不符)。
執行 pppoeconf 會修改它,用 NetworkManager 則沒動靜。
3. chap-secrets 和 pap-secrets 剛灌好時就有,是要寫(DSL)帳密的。
執行 pppoeconf 會修改它,用 NetworkManager 則沒動靜。

好(?)總之,拿已經寫好的、在主端順利運作的配置檔,以複製貼上大法,一份一份配置檔單獨測試之後,確認 NetworkManager 需要 pap-secrets 這份配置檔,從頭到尾卻沒有去寫;當然,也有可能它預設還有自己的其他方法(卻失效),而 pap-secrets 只是其中可用的一種(讓使用者去自救的)方法?

反正,解法是用 root 去打開 /etc/ppp/pap-secrets
在最底下加入你的 DSL 帳號跟密碼,格式是:

"username" * "password"

雙引號是必要的,
先打 DSL 帳號,
用空格隔開,
一個星號,
一樣用空格隔開,
再打密碼。

就這一個配置檔而已,弄好 NetworkManager 就可以再設置 DSL 使用了(這……


(當然有些人可能碰到的是其他狀況,這裡就幫不上了)


「以下測試環境是 Ubuntu Mate 16.04」

喔喔!除了「/etc/network/interfaces」要注意,
「萬葉丸」您找到另一個要注意的關鍵點了,讚的拉!

以下是我的測試

我之前「回覆」的測試步驟,是先從設定pppoeconf開始測試,

而這次測試,我使用新的系統,重新做測試,沒有使用pppoeconf,
一開始就使用nm-connection-editor來增加NetworkManager的連線。
就會產生一個檔案「/etc/NetworkManager/system-connections/MyDSL」
「MyDSL」是我在設定的時候,在GUI界面,「Connection name」這個欄位填入的。


「/etc/NetworkManager/system-connections/MyDSL」內容如下



[connection]
id=MyDSL
uuid=91eba528-68d7-4fb6-bc77-331fe18abfee
type=pppoe
autoconnect=false
permissions=
secondaries=
timestamp=1462753613

[ethernet]
duplex=full
mac-address-blacklist=

[ppp]
lcp-echo-failure=5
lcp-echo-interval=30

[pppoe]
password=yyyyyyyy
username=xxxxxxxx@hinet.net

[ipv4]
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=auto



然後我測試連線,一直連不上,

所以我照「萬葉丸」您說的

在「/etc/ppp/pap-secrets」這個檔加入下面一行



"xxxxxxxx@hinet.net" * "yyyyyyyy"



再使用「NetworkManager」來連線,就可以正常連線了。


因為我沒使用「pppoeconf」,
所以「/etc/network/interfaces」一樣是保持下面的內容,


# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback




===================================================

至於

萬葉丸 寫到:
...略...

合理地推測:也許 NetworkManager 同樣需要這四個其中某些配置檔,
卻沒有辦法很好地產生、寫入、佈署或修改必要的文件?

...略...




我的觀察,「NetworkManager」在做「pppoe」連線的時候,應該是執行「pppd」,
所以你說的那幾個設定檔,應該是「pppd」需要,而非「NetworkManager」需要。

當你用「NetworkManager」執行「pppoe」連線成功的時候,

然後執行下面的指令


$ ps aux | grep ppp




你會看到類似下面的內容


root 6519 0.0 0.1 209648 7780 ? Sl 08:18 0:00 /usr/sbin/pppd nodetach lock nodefaultroute ipv6 , user xxxxxxxx@hinet.net plugin rp-pppoe.so nic-enp5s0 noauth nodeflate usepeerdns mru 1492 mtu 1492 lcp-echo-failure 5 lcp-echo-interval 30 idle 0 ipparam /org/freedesktop/NetworkManager/PPP plugin /usr/lib/pppd/2.4.7/nm-pppd-plugin.so
user 8267 0.0 0.0 21576 948 pts/5 S+ 08:49 0:00 grep --color=auto ppp




然後你在「nm-applet」下拉選單,選擇「Disconnect」,再執行下面的指令


$ ps aux | grep ppp



只會看到


user 8371 0.0 0.0 21576 1016 pts/5 S+ 08:53 0:00 grep --color=auto ppp




所以可以推測「NetworkManager」是執行「pppd」來做「pppoe連線」,完整的指令就是「/usr/sbin/pppd nodetach lock nodefaultroute ipv6 , user xxxxxxxx@hinet.net plugin rp-pppoe.so nic-enp5s0 noauth nodeflate usepeerdns mru 1492 mtu 1492 lcp-echo-failure 5 lcp-echo-interval 30 idle 0 ipparam /org/freedesktop/NetworkManager/PPP plugin /usr/lib/pppd/2.4.7/nm-pppd-plugin.so」。
可以對照「man pppd」來看每個參數代表什麼意義。


另外也可以下載「network-manager」的「Source Package」下來看


$ apt source network-manager



可以研究「network-manager-1.1.93/src/ppp-manager/」


$ tree network-manager-1.1.93/src/ppp-manager/




顯示


network-manager-1.1.93/src/ppp-manager/
├── Makefile.am
├── Makefile.in
├── nm-pppd-plugin.c
├── nm-pppd-plugin.h
├── nm-ppp-manager.c
├── nm-ppp-manager.h
└── nm-ppp-status.h

0 directories, 7 files




可以在「network-manager-1.1.93/src/ppp-manager/nm-ppp-manager.c 」,
找尋「create_pppd_cmd_line」「nm_ppp_manager_start」來看。
不過我也只是粗略的看,也沒真的懂程式碼寫的內容,只是紀錄,給想要深究的人,可以探索的點。

===================================================

## /etc/ppp/pap-secrets and /etc/ppp/chap-secrets

至於「/etc/ppp/pap-secrets」 和「/etc/ppp/chap-secrets」怎麼產生的,

可以觀看「/var/lib/dpkg/info/ppp.postinst」


#!/bin/sh
set -e

everything() {

# install /etc/ppp/pap-secrets and /etc/ppp/chap-secrets from templates,
# if necessary
for file in pap-secrets chap-secrets; do
if [ -f /etc/ppp/$file ]; then
TAG=$(head --lines=1 /etc/ppp/$file)
if [ "$TAG" = "#GENERATED-BY-DEBIAN-INSTALLER#" ]; then
(sed -e "s/-HOSTNAME-/$HOST/g" /usr/share/ppp/$file; \
cat /etc/ppp/$file) > /etc/ppp/$file.tmp
mv /etc/ppp/$file.tmp /etc/ppp/$file
fi
else
sed -e "s/-HOSTNAME-/$HOST/g" < /usr/share/ppp/$file > /etc/ppp/$file
fi
chmod 600 /etc/ppp/$file
done

...略...



是安裝ppp套件的時候,執行「MaintainerScripts」,也就是「/var/lib/dpkg/info/ppp.postinst」,
參考上面的程式碼,也就是複製「/usr/share/ppp/chap-secrets」和「/usr/share/ppp/pap-secrets」而來。

至於「/etc/network/interfaces」和「/etc/ppp/peers/dsl-provider」,
我在之前的「回覆」就有紀錄如何產生的。

而執行「pppoeconf」後,會異動到那些檔,
可以觀看「/usr/sbin/pppoeconf」,我之前也有大略的紀錄在這個「回覆」裡。


===================================================

## 更多參考

以上討論的一些內容,這篇「Ubuntu Community Help Wiki / ADSLPPPoE」大概都有提到,之前有貼過,再貼一次,
因為「Ubuntu Community Help Wiki / ADSLPPPoE」整理的比較完整有系統,可以再去翻來閱讀,對照著看。

* https://help.ubuntu.com/community/ADSLPPPoE
* man pppd

===================================================

之前一篇相關的討論

* 回覆: 升級15.10後無法連線(已解決) - 「#24」「#26


===================================================

後記 (2017-03-15):

跟這個議題,無直接相關,若有發現會有「這篇」和「這篇」相關的情形,
也就是跟「DNS設定」相關的議題,後來我有寫一篇「關於「resolvconf」的操作使用」可以參考。
紀錄這個連結,以供未來有遇到相同問題的人,可以有機會找到參考資料。

===================================================


2016/5/9 9:05
應用擴展 工具箱
回覆: 16.04拒絕了dsl的使用者?
會員二級
註冊日期:
2011/7/9 13:27
所屬群組:
已註冊使用者
等級: 7
HP : 0 / 173
MP : 27 / 3071
EXP: 95
離線
如果 PPPoE/xDSL連線不正常,某些網站開不起來、特定網頁無法完全載入、chrome/chromium的line無法登入 等等

請先用ifconfig檢查ppp0的mtu值。

如果mtu值是1500,那麼用ifconfig設定成1492即可,

或是執行一次pppoeconf也可以。

原因出在networkmanager建立的PPPoE連線的mtu被設定成1500,
(PPPoE的mtu一般是1492或更低)

4/16 3:02:27
應用擴展 工具箱

« 1 2 (3)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.