家庭内LAN PPPサーバー
ホームネットワークに興味を持っており、それについての調査、学習、実際の
システム構築例です。どんどん変わっていきます。
従って、全ての内容を動作確認したものではありませんので、悪しからず。
ホームインターネットPPPサーバーシステムの構成、機能です。
■最も簡単と言われるiij−pppとgettyで、まずチャレンジ。
バージョンはFreeBSD2.2.5Rです。
1 機能
○実装は2つの種類がある。
・ppp;ユーザーレベルのもの(今回使用のもの)
・pppd;カーネルレベルのもの
○PPP機能
・クライント機能 発信(ダイアルアップ接続)
・サーバー機能 着信(被ダイアルアップ接続)
○FreeBSD、Windowsのシリアルポート
FreeBSD Windows
sio0 COM1
sio1 COM2
○FreeBSDのシリアルポートとデバイス
シリアルポート 発信用デバイス 着信用デバイス
sio0 /dev/cuaa0 /dev/ttyd0
sio1 /dev/cuaa1 /dev/ttyd1
2 手順
2、1 モデムの設定
○設定値
q1 ;リザルトコードなし。
s0=1 ;自動着信あり。モデムの着信コール1回でログイン動作へ。
○以下のコマンドのどちらかで。
・pppコマンド
・cuコマンド
○pppコマンド
$ppp
User Process PPP. Written by Toshiharu OHNO.
Using interface: tun0
Interactive mode
ppp ON tome> set device /dev/ttyd0
ppp ON tome> set speed 9600
ppp ON tome> term
Enter to terminal mode.
Type `~?' for help.
?これ以降、操作不能(ハングアップ)になった。
?termモードが動作しない?
?シリアルポートの設定が、モデムの設定とあっていない?
gettyが既に、/dev/ttyd0に起動されていたから。getty設定の前にやるべし。7,6参照。
○これ以降の設定はcuコマンドを使った。
$cu -l /dev/cuaa0 入力
Connected.
atq1s0=1 入力、OK表示は帰ってこない。
~. 入力(~を入力したところで暫くしてプロンプト(?)が帰ってくる。)
Disconnexted.
$
2、2 サーバー側設定ファイルの編集
○/etc/rc.conf
gateway_enable="YES"
○/etc/ttys
ttyd0 "/usr/libexec/getty std.9600" unknown on
○/etc/gettytab
std.9600|9600-baud:\
:np:sp#9600:
*以上の二つを反映する為に以下のコマンドを入力。
kill -HUP 1
*ps ax で
2207 ?? I 0:00.02 /usr/libexec/getty std.9600 ttyd0
があればOK。
○/etc/ppp/ppp.conf
?ブランク行があるとそれ以降は読まれない?
?設定がよくわからん。
?参照ドキュメントによって色々違う。
・Default:と ppp:の違い。
・とくに ifaddr src dest
MYADDR HISADDR
クライアント サーバーORゲートウエイ
?src dest はクライアントになる場合とサーバーになる場合では反対になる
のか?
・現在の設定
default:
set device /dev/ttyd0
set speed 28800
disable lqr
deny lqr
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT"
xxxx:
enable pap
disable chap
set authname xxxx
enable proxy
set ifaddr a.b.c.2 a.b.c.6 255.255.255.240
・a.b.c.2はpppサーバーの稼動していホストのIPアドレス。
・a.b.c.6はpppクライアントに割り付けるIPアドレス。
・xxxxはpppサーバーから見たクライアントユーザー名。
?そもそも、ダイアルアップ接続の時のIPアドレスはどうなるのか?
WINのネットワークのTCP/IP設定、ダイアルアップTCP/IP設定、
それとダイアルアップ接続のプロパティのTCP/IP設定の3つの関係
?ホスト名は一つ、ゲートウエイ設定は?
○/etc/ppp/ppp.secret
aaaa
xxxx ???? a.b.c.6/24
・aaaaはpppサーバーの稼動しているホスト名
(本設定がないと、PPPからエラーメッセージがでる。
FreeeBSD2.2.5からチェックを行っている。
Can't open socket 3000: No password in ppp.secret)
・xxxxはクライアントのユーザー名
・????はクライアントのパスワード
・a.b.c.6/24はクライアントのIPアドレス
@一とおり動作した後の追加実験結果
aaaa
・上記のみの記述でOK。
・そうですよね。これはダイアルアップに必要なファイルですから。
2,3 ログインシェルの作成
○ディレクトリ
/usr/local/bin/ppplogin
○ppplogin
#!/bin/sh
/usr/sbin/ppp -direct xxxx
xxxxはクライアントユーザー名
○chmod 755 で実行権を与える。
○/etc/shellsに登録
/bin/sh
/bin/csh
/usr/local/bin/ppplogin
2,4 pppユーザーの作成
・ディレクトリ
/usr/xxxx
・グループ
network (69)グループ
・ログインsh
/usr/local/bin/ppplogin
・他ファイル作成
.hashlogin (ファイル名のみ)
・3個のファイルのオーナーをxxxxにする。
chown xxxx /usr/xxxx .hashlogin
2,5 pppクライアント側の設定
・ダイアルアップ接続の作成
・ダイアルアップ接続・サーバーの種類・TCP/IP設定
IPアドレス、DNS−IPアドレスの両方とも”サーバーが割り当てたIPアドレス”
に設定。
・ダイアルアップ接続・情報・接続の方法・設定・オプション設定
ターミナルウインドウは初めは、”接続後にターミナルウインドウを開く”に設定し、
手入力で確認。その後はその設定をはずす。
・ダイアルアップ接続・情報・接続の方法・設定・接続スクリプトの作成
proc main
waitfor "login:"
transmit $USERID, raw
transmit "^M"
waitfor "password:"
transmit $PASSWORD, raw
transmit "^M"
endproc
3チューニングその1
3、1 モデム
○初め28800bpsに設定していたがNGで、とりあえず9600に落とすとOK。
・ターミナルウインドウも出ずに、すぐに切断されてしまう。
・ここで3h、苦しんだ。
@一とおり動作した後の追加実験
・モデム設定が以下でも動作。
atq1e0s0=1 (リザルトコードなし、コマンドエコーなし、1回で自動着信)
?e0はどんな作用?どこかでだれかがe0にしてしまうのか?
・9600bpsを変更し、19200bpsでやってみるが、NG.
文字化けし、ダイアルアップ接続まで、進まない。
?ボーレート設定コマンドを通すための最初のボーレート設定はいつ?だれが?
getty? ppp?
?ボーレート調整のアリゴリズムは?どのモジュールが?
PCーーーRS−232C−−−ーーMODEM
シリアルポート速度 モデム変調速度
3,2 クライアントPC設定
そもそもクライアント側(Win)のしくみ、動作が不明だったので、いちいち悩み
ました。
○TCP/IP設定
◇proマシンの設定
・ユーザー情報のマシン名
pro
・ネットワークのTCP/IP設定(LAN接続時のもので、今回設定対象外)
IP;a.b.c.d
DNS;a.b.c.d=ネットワークダイアルアップTCP/IP設定のDNSと連動。
ゲートウエイ;a.b.c.d
・ネットワークダイアルアップTCP/IP設定。(別件での設定値で、今回設定対象外)
IP;サーバー指定
DNS;a.b.c.d=ネットワークのTCP/IP設定のDNSと連動。
ゲートウエイ;a.b.c.d
・ダイアルアップ接続からのTCP/IP設定。(今回の設定対象)
IP;サーバー指定
DNS;サーバー指定
?これらの関係??
@実験の結果
・以下のいづれかのDNS設定でOK。
1 ダイアルアップ接続からのTCP/IP設定ーDNS設定
2 ppp.confでの設定
enable msext
set ns a.b.c.2
3 ネットワークダイアルアップTCP/IP設定ーDNS設定
* 優先順位は上記の順みたい。
○接続時ターミナルウインドウの設定。
・接続時のターミナルウインドウ操作からの、継続のタイミングや方法。
ユーザーIDやパスワード入力が終了した後に、変な文字(文字化けしたような)
が送られてくる。これで4h悩んだ。これで正常なのです。pppが動き始めパケ
ットを送っていたのだと思う。
○接続時スクリプトの作成、設定。
◇Win98でスクリプトあり・PPPクライアント側チューニング
・スクリプト未使用ではうまくいかなかった。
つまり、PAP認証(?)が上手く行かない。
・うまく動作したもの(9600bpsの場合)
proc main
waitfor "login:"
transmit $USERID, raw
transmit "^M"
waitfor "password:"
transmit $PASSWORD, raw
transmit "^M"
endproc
・うまく動作しなかったもの(9600bpsの場合)
proc main
delay 3
transmit "^M"
waitfor "login:"
transmit $USERID, raw
transmit "^M"
waitfor "password:"
transmit $PASSWORD, raw
transmit "^M"
endproc
*ターミナル画面が出て、ユーザーIDの手入力が必要となった。
*login待ちの行に続いて、delayを入れると一瞬ターミナル画面がでるがOK。
*そもそも、transmit "^M"をはずすとdelayも不要でした。
(login画面が2回でていたので)
◇Win95でスクリプトなし・PPPクライアント側チューニング
・私のWin95にはスクリプト設定がないのです。
(ヒョットしてWin95+Win95Plusにはあるのか?)
・”呼び出してからターミナルウインドウを表示”に設定。
・その画面で、手入力認証(CR、ユーザーID、パスワード)。
・すると、文字化けのような文字が送られてくる。これが正常と解るのに4h悩みました。
(pppが実行開始した?)
・そして、ターミナルウインドウの”継続”をクリックすると、接続されましたという
メッセージが出てきて、さっとアイコンになる。
・現在、ここ迄(ダイアルアップ接続)はOK、それ以降(ネットワーク接続)がNG。
・”呼び出してからターミナルウインドウを表示”を設定せずに、全て自動でやると
接続異常になる。
@一とおり動作した後の追加実験(proマシン)
1ダイアルアップ接続設定の”ネットワークへログオン”を、ONにしても
表示が以下になるが、動作に影響しなかった。
パスワード確認ーー>ネットワークにログオンーー>パスワード確認
2ダイアルアップ接続設定の”ネットワークへログオン”を、ONにして、かつ
”呼び出してからターミナルウインドウを表示”をOFFにしたら、自動接続
できるのでは と思ってやってみたがNG。
タイムアウト後”処理できないプロトコルエラー”が発生。
?スクリプトがないと自動接続は無理か?
?インターネットサービスプロバイザーとの接続には、コネクトスクリプトが不用
だが?WINのディフォールト設定はPAP接続?
3,3 ネットワーク接続(ppp.conf)
○pppが動き出してから、ppp.confの設定内容を試行錯誤
・Default:と ppp:の違い。
・ppp −direct xxxx にしないといけない に4h。
・いろいろなMLやHPみて(殆ど、見るドキュメントによって異なる。そもそも
pppクライアントの設定が殆どで、pppサーバーの設定は、非常に少ない。
プログラムのバージョンの差やLAN環境や、今までに設定されたもの等の差で
あろう。)一つ一つトライ&エラー。
○初め動かなかったもの
default:
set device /dev/ttyd0
set speed 9600
disable lqr
deny lqr
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT"
xxxx:
disable chap
enable pap
set authname xxxx
set ifaddr a.b.c.2 a.b.c.6
○チューニング後、動作したもの
default:
set device /dev/ttyd0
set speed 9600
disable lqr
deny lqr
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT"
xxxx:
enable msext
set ns a.b.c.2
enable pap
disable chap
set authname xxxx
enable proxy
set ifaddr a.b.c.2 a.b.c.6 255.255.255.240
@一とおり動作した後の実験
?以下でも動作した。?
(DNSの有効設定が本設定以外にあれば、動作するはず。
前回実験時にはなかったのか!)
default:
set device /dev/ttyd0
set speed 9600
disable lqr
deny lqr
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT"
xxxx:
# enable msext
# set ns a.b.c.2
enable pap
disable chap
set authname xxxx
# enable proxy
set ifaddr a.b.c.2 a.b.c.6 255.255.255.240
4 ここまでの成果、まとめ
・あれこれ、やっている間に、fmvで突然動き出した?????????????。
・proマシンではNG、fmvマシンでOK。
・といっても、切断後には正常に、pppプロセスが残ってしまう。
これはpppのバージョンアップが必要。
・proマシン、fmvマシン
proマシン;WIN95 、携帯電話回線モデム
fmvマシン;WIN98 、アナログ回線モデム
○proマシンでも、PAP迄は上手く行っているので、ネットワーク接続関係が不備
と予測して、TCP/IP設定等を色々変えても上手く行かない。
1 ユーザー情報のマシン名。
2 ネットワークのTCP/IP設定、ダイアルアップTCP/IP設定。
3 ダイアルアップ接続からのTCP/IP設定。
どうも、2の後者と、3は異なる設定値の様子。つまり、一つのPCで、色々な
設定がもてるようだ。しかし、DNSの設定値は共通みたい。
*ここで、本をよんだり、HPをみたり、MLに出してみたりで、1週間過ぎた。
○数字のIPアドレスでは動作していることを発見。
○やはり、DNSサーバー周りの設定と睨んで、その資料類を見る。
/etc/host.conf
/etc/hosts
/etc/resolv.conf
○/etc/hosts
・ローカルホストのa.b.c.6の登録が必要かと思って、登録したがNG。
・次に、proマシンは登録されていて、fmvマシンは登録されて
いないのに気が付いた。
・proマシンの登録をはずした。
・Good、Good!。
?理屈はわからない、なぜ?
?未登録でかまわないのか?fmvは未登録で大丈夫だった!
○とりあえず、色々課題は残っているが動作し始めた。
現在までに気が付いた課題と疑問
・ダイアルアップ接続関連
・WIN−95側に、一般には、接続スクリプト不要なのに、なぜ必要?
・PAP関連
・WIN−95側では、どこで、どの引数を用いて行われているのだろう?
ダイアルアップ時のユーザー名、パスワード?
PPPサーバーへのログイン時に使用のものが、再度使われる?
PAPのON/OFF設定はどこで?
・PPP側では、どこで、どのデータと照合?
・ログイン認証後のPAP認証は同じ事を2回、行うことになるのか?
・複数ユーザーのPPP接続設定は?
・ログイン認証 :UNIXのパスワードファイルでOK。
・ログインSH :一つで済ますには?default、ppp記述。
・PAP認証 :ppp.conf、ppp、secretに全て記述するのか?
・ユーザー毎にある.ppp.confとシステム共通のppp.confの使い分け。
・.hushlogの必要性。
・モデムのデータ転送速度の向上と最適設定方法。
今は、実験の為に9600bps設定。
5 pppのバージョンアップ
−そこそこ見えてきたので、一番大きな課題をクリアする為に、PPPのバージョンアップ
を、エイや としました。
・ソースコード入手先(pppバージョン2,1)
http://www.freebsd.org/~brian/
(私はWIN−PCでダウンロードし、SAMBAでUNIXに転送した。)
・MAKE install
(全て、ROOTで実施。)
mv src.uue /usr/src/usr.sbin/
cd /usr/src/usr.sbin/
uudecode src.uue
tar xvfz ppp-*.src.tar.gz
cd ppp-*
make
make install
-------------------
make install のログ
# make install
===> libhack
install -C -o bin -g bin -m 444 /usr/src/usr.sbin/ppp-990129/libhack/alias.h /u
sr/include
install -c -o bin -g bin -m 444 libalias.a /usr/lib
install -c -o bin -g bin -m 444 libalias_p.a /usr/lib
install -c -o bin -g bin -m 444 libalias.so.2.5 /usr/lib
install -c -o bin -g bin -m 444 libalias.3.gz /usr/share/man/man3
===> ppp
install -c -s -o root -g network -m 4554 ppp /usr/sbin
install -c -o bin -g bin -m 444 ppp.8.gz /usr/share/man/man8
===> pppctl
install -c -s -o root -g bin -m 555 pppctl /usr/sbin
install -c -o bin -g bin -m 444 pppctl.8.gz /usr/share/man/man8
Please read the README.changes file.
You may wish to make etc-install to install the sample files
-------------------
上手くいったようです。(手に汗を握っているところ)
6pppバージョンアップ後のppp.confの実験
6、1 チューニングその1
・PAPが上手く行ってない、はずすとOK。???????
?そう言えば、今迄は、どのようなしくみでPAPは動作していたのであろう?
・どうやら、クライアント側切断時のpppが残ってしまう現象は起こらないようだ。
バージョンアップ成功か!!
○現在のppp.cof
default:
set device /dev/ttyd0
set speed 28800
disable lqr
deny lqr
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT"
xxxx:
disable chap
# enable pap
allow user xxxx
set server /var/run/internet""0177
set authname xxxx
set ifaddr a.b.c.2 a.b.c.6 255.255.255.240
enable proxy
○現在のppp.secret
aaaa
xxxx ??????? a.b.c.6/28
○現在のppplogin
#!/bin/sh
/usr/sbin/ppp -direct xxxx
6,2 チューニングその2。
ー実験の結果の設定です。
○ppp.cof
default:
set device /dev/ttyd0
set speed 28800
disable lqr
deny lqr
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT"
pwww:
disable chap
# enable pap
allow user xxxx これをはずすと繋がらない。
# set server /var/run/internet""0177 元々?
# set authname xxxx クライントの場合に必要な設定。
set ifaddr a.b.c.2 a.b.c.6 255.255.255.240
enable proxy
○ppp.secret
tome
# xxxx ?????? a.b.c..6/28 クライントの場合に必要な設定。
○ppplogin
#!/bin/sh
/usr/sbin/ppp -direct xxxx
6,3 チューニングその3。
ー実験の結果の設定です。
○ppp.cof
default:
set device /dev/ttyd0
set speed 28800
disable lqr
deny lqr
#set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT" set dialはクライントの場合に必要な設定。
#xxxx: クライアント場合に、プロバイダーを区別する為のもの。
disable chap
# enable pap
allow user xxxx これをはずすと繋がらない。
# set server /var/run/internet""0177 元々?
# set authname xxxx クライントの場合に必要な設定。
set ifaddr a.b.c.2 a.b.c.6 255.255.255.240
enable proxy
○ppp.secret
tome
# xxxx ?????? a.b.c..6/28 クライントの場合に必要な設定。
○ppplogin
#!/bin/sh
/usr/sbin/ppp -direct
7 pppバージョンアップ後のモデム速度設定の実験
7,1 モデムを接続の構成要素と速度
PCー−RS232C−ーMODEMー − − −MODEMーーRS232CーーPC
<−SIO速度−><−DTE速度−><ー−−DCEモデム速度ーーー>
ー正確にいうと、 SIO速度=DTE速度 DTE速度=モデム側が認知しているDTE速度。
・SIO速度;PC側のシリアルIF速度 PC側で設定。
・DTE速度;モデムのPCとのIF速度
・固定方式であれば、SIO速度に自動的になる。
PCから”AT”文字を送信した場合になる。
・可変方式であれば、DCEモデム速度に自動的になる。
・DCEモデム速度;モデム間の速度 モデム間のネゴシエイションでできるだけ速い速度
に自動的になる。
ーSIO速度とDTE速度は一致させる必要があるが、DCE速度とは違う場合がある。
ーSIO速度=DTE速度>DCEモデム速度
7,2 接続方式
・固定方式(今回の方式)
モデムの接続速度に関係なく、常にモデムとRS−232C間の接続速度を固定にする方法。
長所は、ユーザが接続されると、即座にシステムからのログインプロンプトが送信される。
短所は、実際のモデム間の速度を知ることができない。
・可変方式
モデム間の接続速度に応じて、RS−232Cとコンピュータ間の接続速度を、変化させる方法。
長所は、実際のモデム間の速度を知る事ができる。
短所はユーザ側に無意味な文字列が表示された場合、ユーザは意味のある文字列
を受信するまでEnterキーを繰り返し送信し、モデムの接続速度を調整する手順が必要となる。
7,3 実験
−実験の設定です。
○/etc/ttys
ttyd0 "/usr/libexec/getty std.38400" dialup on
○ppp.cof
default:
set device /dev/ttyd0
set speed 38400
disable lqr
deny lqr
#set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" atz0 OK-AT-OK \\dATDT\\T
TIMEOUT 40 CONNECT" set dialはクライントの場合に必要な設定。
#xxxx: クライアント場合に、プロバイダーを区別する為のもの。
disable chap
# enable pap
allow user xxxx これをはずすと繋がらない。
# set server /var/run/internet""0177 元々?
# set authname xxxx クライントの場合に必要な設定。
set ifaddr a.b.c.2 a.b.c.6 255.255.255.240
enable proxy
○ppp.secret
tome
# xxxx ?????? a.b.c..6/28 クライントの場合に必要な設定。
○ppplogin
#!/bin/sh
/usr/sbin/ppp -direct
7,4 結果、考察
7,3 の方法だけでは上手くいかなかった。モデムのDTE速度が9600のままでNG。
1 DTE速度の設定を# cu -l /dev/cuaa0 -s 38400
でやってみました。ここで上手く行きました。
(今までは、pppのset speed で行っていましたが。show modem では38400
になっており、それでモデムをアクセスしても、モデムの属性リスト
では DTE SPEEDが 9600のままでしたので)
2 しかし、ここで、再度 kill -HUP 1 で gettyを起動した後、モデムの
属性を以下のコマンドで
cu -l /dev/cuaa0
Connected.
at\s 入力、エコ表示はなし。
みると DTE SPEEDが
また9600になっていました。
gtty の設定はstd38400で ps −axは
2207 ?? I 0:00.02 /usr/libexec/getty std.38400 ttyd0
なのですが。
後で解ったのですが、cuコマンドを -s xxxで速度指定をしなかったので
この時点で9600になって模様。7,7参照。
3 そこで、# cu -l /dev/cuaa0 -s 38400 のあとに
kill -HUP 1 を行わずに、接続してみました。OKなのです。
4 数回接続してもOKでした。
まだ、チャンと理屈が分からないのですが、28800で動作しました。
7,5 今回、使用したモデムコマンド(アイワ PV−EF2880の場合)
・En コマンドエコー機能の選択
n=0 エコーしない。
n=1 エコーする(初期値)。
・Qn リザルトコードを返す機能の選択。
n=0 リザルトコードを返す(初期値)。
n=1 リザルトコードを返さない。
・Zn モデムの設定メモリをリセットし、不揮発性メモリから読む。
n;不揮発性メモリのプロファイルNO。0,1。
・&Wn 不揮発性メモリに保存。
n;不揮発性メモリのプロファイルNO。0,1。
・¥Jn モデムのDTE速度モードの設定。
n=0 モデムの速度に無関係に、通信開始前の速度に固定(初期値。
n=1 DTE速度は、モデム速度に合わせる。
・¥Sn モデムの設定状態の表示。
n=0 現在の状態。
n=1 不揮発性メモリのプロファイル0,1の内容を表示。
7,6 実験で分かった事(気が付いた事)
ーモデムの設定にpppを使う時の注意
ttyでgettyをonにして、kill -HUP 1 を行う前に設定すること。
gettyを起動すると、ttyd0に対してopenをかけており、さらに
pppからの二重openになり、正常に動作しない。
$ppp
User Process PPP. Written by Toshiharu OHNO.
Using interface: tun0
Interactive mode
ppp ON tome> set device /dev/ttyd0
ppp ON tome> set speed 38400
ppp ON tome> term
Enter to terminal mode.
Type `~?' for help.
at このコマンドで、SIO速度がモデムのDTE速度となる。
atq1s0=1 設定
~. termモード終了(エコーされない)
ppp ON tome> term
7,7 モデム速度設定方法の結論
−動作はしましたが、気持ち悪いので、推理してみました。
・ppp の set speed 38400 実行後の show modem コマンドでみれば
38400になっているのですが、実は”AT”を出していないので
DTE速度は38400になっていない。
このまま、接続すると PCのSIO速度/=DTE速度でエラー
となる。
・ppp実行の前に getty実行が先で、gettyでも同様。
ttyd0 "/usr/libexec/getty std.38400" dialup on
これは、PCのSIO速度は38400になっても、DTE速度
は38400になっていない。
つまり、kill -HUP 1 実行時の事ですが。
・では、何故、以下では上手く行くか。
cu -l /dev/cuaa0 -s 38400
CUが インプリシットに”AT”コマンドで、PCのSIO速度=DTE速度に
ネゴシエーションを行っている。
・しかし、以下では、9600に戻っている、のは
cu -l /dev/cuaa0
CUは、速度指定がなかったので 、ディフォルトの9600
でネゴシエーションしている。
gettyはSIOの速度は設定しても ”AT”コマンドで、速度のネゴシエ
ーション迄はしないと考えるとつじつまがあいます。
当然、ppp.conf のset speed xxx も同じ。
モデムDTE速度設定は、以下のどちらかで。
・getty起動前のpppコマンドで実際にターミナルモードにして”AT"を
入力して設定。
・cu -l /dev/cuaa0 -s xxxx で設定。ttyd0でなくcuaa0であるところに注意。
ここで、速度確認の為にcu -l /dev/cuaa0 で接続してしまうと
9600bpsに戻るので注意。
?新たな疑問
DTE速度固定方式の ppp.confでの set speed xxxxはどんな
意味があるのだろう?
・モデムのDTE速度のネゴもしないし、
・そもそも、ttysで設定した速度を変えられるの?
家庭内LAN(ホームネットワーク)ページへ戻る