Armadilloフォーラム

衛星携帯電話とのPPPoE接続について

tic-hirano

2014年7月1日 15時12分

お世話になっております,平野と申します.

Armadillo-460を利用して衛星携帯電話 ワイドスターⅡ(NTT docomo)にPPPoE接続しようとしています.

MLの[Armadillo:08276] Armadillo-460からPPPoEを使用する方法(http://lists.atmark-techno.com/pipermail/armadillo/2012-August/008279.h…)を参考に試してみましたがネット接続まで至りませんでした.

PPPoE Discovery完了後のPPP LCPでArmadillo-460がConfigration Requestを受けた後にConfiguration Ackを送信しないため次のステップに移れていないようです.
pppdのオプションで指定するとよいものなどありますでしょうか?

Windows 7 Pro PCでの接続完了までのパケットとArmadillo-460でのパケットを比較し下記のオプションを試しました.
・Host-Uniq タグのためpppoeに"-U"オプションを指定
・"mru 1480"をpppdのオプションに追加
・認証がないので"noauth"をpppdのオプションに追加
・Async Control Caharacter Mapが含まれなかったので"default-asyncmap"をpppdのオプションに追加
・PPP LCPの応答を待つように"silent"をpppdのオプションに追加(上記"default-asyncmap"があってもAsync Control Character Map「None」が入る)

利用機器:Armadillo-460
開発環境:ATDE3
Linuxカーネル:v2.6.26-at19
ユーザランド:v20140415
Roaring Penguin PPPoE Version 2.3
pppd version 2.4.4

以上,よろしくお願いします.

ファイル ファイルの説明
arm460_pppoe.txt pppoeの接続テスト ログ
コメント

お世話になっております,平野と申します.

いろいろ調べた結果Windows 7 Pro PCはユーザ名・パスワードを設定せず認証しているので
PPP CHAPのレスポンスでも「NAME=''」となっていました.

Armadillo-460のchap-secretsファイルでユーザ名を「””」や「’’」としてもpppdのエラーとして下記が出力されます.
---------------
/sbin/pppd: The remote system is required to authenticate itself
/sbin/pppd: but I couldn't find any suitable secret (password) for it to use to do so.
/sbin/pppd: (None of the available passwords would let it use an IP address.)
---------------

ユーザ名無しでの認証の設定は可能でしょうか?

以上,よろしくお願いします.

at_daisuke.sasaki

2014年7月22日 16時48分

佐々木大輔です。

Atmark Distのpppdは、2.4.4というversionです。
このpppdには、「空白のユーザーネーム・パスワードを使用する事ができない」
というレポートがあるようです。

詳細は以下のページを確認してみてください。
http://ftp.samba.org/cgi-bin/ppp-bugs/resolved?id=2069;user=guest

上記レポートのpatchを適用し、確認してもらえますか?
※私の方ではpatchを適用しビルドできる所までは確認しました。

ビルド確認のため、レポートに埋まっているpatchをファイルにしたので、添付しておきます。

ファイル ファイルの説明
pppd-2.4.4_cannot-use-blank-username-or-password.patch

平野です.

URLおよびパッチありがとうございます.
パッチをあて,ビルドもできました.

あとはレポートにある一文
「The same problem appears with CHAP, but you have to hash the challenge and
password yourself to verify it.」
をどうすればよいか確認してみます.

平野です.

教えていただいたパッチを当てたものでも動作に変化が出なかったので最新版(2.4.6)にて試しています.
#最新版はパッチが当たった状態でした.

今の状況は下記のとおりです.
・ユーザ名/パスワードを空にしてCHAPで接続
・PPP LCPが終わり衛星携帯電話からCHAP Challengeを受ける
・pppdはCHAP Responseを送信しようとしているがパケットとして確認できない

pppdのログ(test.log)でも衛星携帯電話とArmadillo-460間のパケットキャプチャ(20140729_pppd_packet.txt)でもCHAP Responseが送信されていない状況です.
syslogを使って処理状況を確認(message_from_pppd)するとwrite関数は指定したバイト数書き込めたと戻り値を返しているようです.

PPP LCPのやり取りで同じwrite関数を使用しているのでCHAP Responseだから送信できないということがわかりません.
なにかwrite関数で送信できない理由は考えられますか?

ファイル ファイルの説明
test.log pppdのログ
20140729_pppd_packet.txt 衛星携帯電話とArmadillo-460間のパケットキャプチャ
pppd.options.txt pppdオプション
message_from_pppd.txt pppdでsyslog出力した結果
sys-linux.c syslogでのデバッグ追加部分

> PPP LCPのやり取りで同じwrite関数を使用しているのでCHAP Responseだから送信できないということがわかりません.
> なにかwrite関数で送信できない理由は考えられますか?

write() の戻り値が送信数と一致しているのであれば、たぶんカーネルには渡っているはずです。
kdebug の値が、1になっていますが、4だと表示されませんか?

以下 pppdの manから抜粋

      kdebug n
              Enable debugging code in the kernel-level PPP driver.  The argu‐
              ment values depend on the specific kernel driver, but in general
              a  value  of 1 will enable general kernel debug messages.  (Note
              that these messages are usually only useful  for  debugging  the
              kernel  driver  itself.)  For the Linux 2.2.x kernel driver, the
              value is a sum of bits: 1 to enable general debug messages, 2 to
              request  that the contents of received packets be printed, and 4
              to request that the contents of transmitted packets be  printed.
              On  most  systems,  messages printed by the kernel are logged by
              syslog(1) to a file as directed in the /etc/syslog.conf configu‐
              ration file.

あ、ethernet のパケットをキャプチャーしているんですね。ごめんなさい。

pppd が write しているにもかかわらず ethernet にパケットがでていないなら、
tty から ethernet に relay している rp-pppoeの方じゃないでしょうか?

rp-pppoeの debugを有効にできますか?

平野です.

> rp-pppoeの debugを有効にできますか?

pppdの実行を下記でおこなっています.
exec /home/ftp/pub/pppd pty 'pppoe -I eth0 -D /mnt/pppoe/test.log -S mopera.net -U' 1> ${PPP_LOG} 2> ${PPP_ERR}

前回アップロードした"test.log"(pppoeの通信ログ)と"20140729_pppd_packet.txt"(Arm460接続ポートをミラーポートでパケットキャプチャしたもの)を比較すると,実データ部は同じようです.

平野です.

Armadillo-460で衛星携帯電話とのPPPoE接続ができましたのでその結果を報告します.

PPPを利用するためにカーネルで下記を有効にしました.

 Linux Kernel Configuration
   Device Drivers  --->
     [*] Network device support  --->
       <*>   PPP (point-to-point protocol) support
       [ ]     PPP multilink support (EXPERIMENTAL)
       [ ]     PPP filtering
       <*>     PPP support for async serial ports
       <*>     PPP support for sync tty ports
       <*>     PPP Deflate compression
       <*>     PPP BSD-Compress compression
       <*>     PPP MPPE compression (encryption) (EXPERIMENTAL)
       < >     PPP over Ethernet (EXPERIMENTAL)
       < >     PPP over L2TP (EXPERIMENTAL)

ユーザランドでは下記を有効にしました.

 Userland Configuration
   Network Applications  --->
     [*] pppd
     [*] rp-pppoe
     [ ]   rp-pppoe server

なお,教えていただいたpppdのパッチをあてています.

pppdでの接続は下記を実行しました.

 /sbin/pppd pty '/bin/pppoe -p /var/run/pppoe.pid -I eth0 -U -m 1412 -S mopera.net' noipdefault +chap noauth default-asyncmap defaultroute usepeerdns show-password nodetach silent mtu 1492 noaccomp nodeflate nopcomp novj novjccomp debug &

ネットワーク設定によりますがresolv.confを記載しておけば外部へ接続が可能になりました.

当初はPPP関連のオプションを下記のみ有効にしていたため問題が発生していたようです.

       < >     PPP over Ethernet (EXPERIMENTAL)

前述のPPP関連オプション(5個)からさらに何か外せるかは試せていません.
pppdのオプションも同様です.

以上,ありがとうございました.

平野です.

記載忘れです.

chap-secretsは下記のようにしました.

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
* * ''