--- [管理番号 45] (最終更新 2001/03/07 02:08:45) Q. 家から PPP でインターネットに接続しているとお金かかるのですが、必要 なとき (データが流れるとき) だけ自動的に PPP 接続するように出来ませんか? A. ppp(8) の -auto モードや -ddial モードを使えばできます。詳しくは、日本 語マニュアルの (もちろん英語でも構いませんが)、`DIAL ON DEMAND' を読ん でください。具体的な設定が、/usr/share/examples/ppp/ppp.conf.sample の pmdemand や PAPorCHAPpmdemand セクションにあるので参考にしてください。 --- [管理番号 211] (最終更新 2001/01/08 04:31:13) Q. ppp (iij-ppp) への nat-xxxx.patch のあて方と、インストールのしかたを 教えてください。 A. FreeBSD 3.3R 以降の ppp(8) には、既に NAT 機能が含まれています。また、 いまだに FreeBSD の ppp(8) の事を iij-ppp と呼ぶ人がいますが、現在では 大幅に書き換えられたため元の iij-ppp とはかなり異ります。それ以前の RELEASE の FreeBSD を使っているのならば、可能ならシステムのアップグレー ドをお薦めします。もし、どうしても古いシステムのまま、ppp だけを NAT に対応させる事も不可能ではありませんが、恐らく茨の道を覚悟しておいてく ださい。 1. まず使用中の FreeBSD のソース (usr.sbin) を CD-ROM などから インストールして下さい。 # mount /cdrom # cd /cdrom/x.x-RELEASE/src # sh install.sh susbin 2. 次に佐藤さんのホームページから nat-******.patch を入手します。 ****** には、nat patch のバージョン (日付け) が入ります。目的の FreeBSD 用のものをダウンロードしてください。 改行コードの問題などがあるのでダウンロードには気をつけてください。 FreeBSD の Netscape からだと右クリックして Save Link as でダウンロード。 Windows95 のブラウザだと名前を保存して、FreeBSD に移す際に Ascii Text) モードで転送する事。 3. 無事にダウンロードできたらパッチを当てます。 # cd /usr/src/usr.sbin # patch -p < /tmp/nat-******.patch 4. 新しい ppp をコンパイルしてインストールします。 # cd /usr/src/usr.sbin/ppp # /usr/src/usr.sbin/ppp に移動 # make # コンパイルします。 # make install # インストールします。 これで完成です。ppp は、オリジナルを上書きする形で、/usr/sbin に インストールされます。 --- [管理番号 213] (最終更新 2001/03/07 02:08:44) Q. ppp(8) の自動モード (-auto や -ddial) を終了させるには、どうすればいい のでしょうか? A. /etc/ppp/ppp.conf の該当セクションに、 set server /var/tmp/internet "" 0177 という行を追加しておいて、コマンドラインから % pppctl /var/tmp/internet 'close; quit all' とします。そのほか応用の仕方が pppctl(8) に載っています。 複数の tun(4) デバイスを同時に使う場合、FreeBSD 2.2.8-RELEASE 以降で あれば `set server' で指定したパスに %d を含めると、それが tun デバイスの ユニット番号に置換されます。即ち、 set server /var/tmp/loop%d "" 0177 このとき tun2 を使っているとして、 % pppctl /var/tmp/loop2 'close; quit all' となります。ただし FreeBSD 2.2.5-RELEASE 以前では、 o telnet で localhost の "3000 + tunデバイス番号" に接続して、 o pass "ppp.secret で設定したパスワード" o quit all とすると終了します。 tun0 を使用している場合は具体的には以下のようになります。 % telnet localhost 3000 % ppp on hogehoge> pass XXXXXX % ppp ON hogehoge> quit all この方法では Internet 側からのアクセスも可能である点に注意してください。 アクセス制限については [管理番号 678] も参照してください。 --- [管理番号 214] (最終更新 2003/11/17 02:28:48) Q. 起動時に自動的に ppp の自動モードにできないでしょうか? A. 1. FreeBSD 3.3R 以降では rc.conf(5) へ次のような設定を行います。ここで providername には ppp.conf にあなたが設定したエントリ名を書きます。 ppp_enable="YES" ppp_profile="providername" [/etc/defaults/rc.conf での関連項目] ppp_enable="NO" # YES に設定すれば ppp を起動する (or NO). ppp_mode="auto" # ppp の動作モードを選択します. "auto", "ddial", # "direct", "dedicated" のいづれか. 詳しくは # ppp(8) の man ページを見てください. # デフォルトでは auto です. ppp_nat="YES" # YES なら ppp で NAT を有効にする (or NO). ppp_profile="papchap" # /etc/ppp/ppp.conf でのエントリ名を指定する. ppp_user="root" # ppp を動作されるユーザ名. 2. /etc/rc.local か /usr/local/etc/rc.d/ppp.sh に次のように付け加えて、 再起動させてください。 #!/bin/sh ← /usr/local/etc/rc.d/ppp.sh のときのみ if [ -f /etc/ppp/ppp.conf ] ; then /usr/sbin/ppp -quiet -auto providername && echo -n ' PPP start' fi --- [管理番号 216] (最終更新 2001/03/07 02:08:45) Q. ppp(8) で接続中に突然回線が切れるのはどうして? A. "** 1 Too many ECHO packets are lost. **" という記述が /var/log/ppp.log に表示されている場合は、 disable lqr deny lqr という二行の記述を /etc/ppp/ppp.conf の default セクションか、接続用の セクションにいれると解決する場合があります。 --- [管理番号 343] (最終更新 2001/03/07 02:08:45) Q. ppp(8) を利用して手動で PPP 接続を行ったところ、 プロンプトが小文字の ppp から大文字の PPP に変わって接続は出来ているようなのですが、ping コマンドを実行しても応答が返って来ないのですが? A. PPP での接続自体は正常に行われているのですが、 デフォルト経路 (default route) が設定されていないため、パケットが相手に届いていないよ うです。具体的には、プロンプトに対して以下のコマンドを入力します。 add default HISADDR 既にデフォルト経路が存在する場合は、 add! default HISADDR とすれば上書きできます。ここで HISADDR が PPP サーバの IP アドレスに置 き換わります。最近の ppp(8) のバージョンでは、これらの一行を /etc/ppp/ppp.conf の該当セクションに追加することで、接続後に自動的にデ フォルト経路を書き換えてくれます。 FreeBSD 2.2.7R 以前では、上記の代わりに以下のコマンドを使用します。 delete ALL add 0 0 HISADDR この設定は、/etc/ppp/ppp.linkup ファイルに記述しておけば、接続後自動的 に設定できます。 --- [管理番号 344] (最終更新 2001/02/27 00:36:43) Q. ppp(8) を利用して PPP 接続を行ったところ、 接続は出来て ping も通る のですが、 telnet hostname とすると 'unknown host' というエラーが返っ てきて、接続出来ないのですが? A. ホスト名から IP アドレスが取得できないようです。/etc/ppp/ppp.conf の 該当セクションに、 enable dns の一行を加えてください。これにより、ISP の DNS サーバを自動的に参照す るように、/etc/resolv.conf が設定されます。ただし、最近では少ないと思 いますが、ISP の PPP サーバがこれらの情報を返してくれない場合、こちら の設定で対処するしかありません。これについては後述します。 もし、ローカルで DNS サーバが動作していて、PPP に接続していないときは ローカルの DNS サーバを参照する必要があれば、/etc/ppp/ppp.linkdown の 該当セクションに、 resolv restore を追加します。もし設定ファイル自体がなければ作成してください。 /usr/share/examples/ppp/ 以下にインストールされたサンプルが参考になる でしょう。 上記の方法が使えない場合、または FreeBSD 2.2.7-RELEASE 以前では、少々 原始的な方法を取らざるを得ません。/etc/resolv.conf に、 nameserver 192.168.1.2 192.168.2.3 などのように DNS サーバの IP アドレスを並べます。最大 3 つまで書けます が、もし一番目のサーバが問い合わせに答えなければ、順にあとの DNS サー バへの問い合わせを行います。接続先が ISP なら、契約時に DNS サーバの IP アドレスを教えてもらったはずなので、その IP アドレスを書けばよいで す。それ以外の環境ではそのサイトの管理者に問い合わせてください。詳しい 書式は man ページの resolv.conf(5) を参照してください。 FreeBSD でホスト名の解決を行うには、/etc/hosts データベース、DNS といっ た順でホスト名から IP アドレスを検索します (2.2.7-RELEASE 以前は逆でした。 詳しくは /etc/host.conf を参照)。このうち、/etc/hosts には IP アドレスと ホスト名が一覧されていますが、当然のことながら世界中のホストについて列 挙することは不可能です。このため、/etc/hosts でホスト名が見付からない 場合、DNS への問い合わせを行うのですが、この際どこに問い合わせれば良い かを指定するのが /etc/resolv.conf です。 --- [管理番号 390] (最終更新 2001/03/07 02:08:45) Q. ppp(8) を対話モードで起動して、ppp プロンプトから "dial セクション名" として接続すると、回線はつながるのですが 5 秒で切断されてしまいます。 A. /etc/ppp/ppp.conf にて、そのセクションの最後で "dial" を指定していませ んか? ppp.conf に dial が指定してあると、対話モードでの dial コマンド実行時に、 もう一度 dial コマンドを実行しようとして、2回目の dial コマンドの失敗 により、回線が切断されてしまいます。 切断までの時間が 5 秒なのは、ppp.conf の default: セクションで、 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK と書いてあるからです。 ^^^ここ (既に1回目の dial コマンドでモデムはデータモードに入っているから、AT コマンドに応答するはずがない) ppp.conf に dial 指定をした場合には、 ・コマンドラインからの ppp 起動時に引数でセクション名を指定する。 ・対話モードの ppp プロンプトで "load セクション名" と入力する。 のいずれかの方法を使いましょう。 --- [管理番号 407] (最終更新 1999/02/17 23:58:45) Q. (サーバ) ppp 着信用サーバの設定法をおしえて A. 他に FreeBSD handbook にも解説があります。 --- [管理番号 408] (最終更新 2001/03/07 02:08:45) Q. 端末型ダイアルアップ IP 接続で、LAN ごと接続出来ませんか? A. FreeBSD 3.3-RELEASE 以降であれば、標準の ppp(8) に -nat オプションが 追加されましたので、適切に /etc/ppp/ppp.conf に設定すれば可能です。 詳しい設定方法については、日本語マニュアルの ppp(8) を参照してください。 少し記述の古い部分も見受けられますが、以下の文書も参考になると思います。 それから、佐藤淳一さんの NAT パッチを利用している人は、設定方法が異な りますので、佐藤さんの Web ページを参照してください。 --- [管理番号 611] (最終更新 2001/03/07 02:08:45) Q. ppp + natd で、ネットワークに接続し直すとパケットが流れなくなってしま います。 A. natd(8) へのオプションに -dynamic yes は付けてありますか? # natd -p 6668 -n tun0 -dynamic yes こうしておかないと、natd が IP アドレスの変更を検出できないためです。 FreeBSD 2.2.7-RELEASE 以降なら、/etc/rc.conf で以下のように設定すれば 良いでしょう。 nat_enable="YES" # Enable natd (if firewall_enable == YES). nat_interface="tun0" # Public interface or IPaddress to use. nat_flags="-dynamic" # Additional flags for natd. また、FreeBSD 3.3-RELEASE 以降であれば、ppp と natd を組み合わせる よりも、ppp(8) の -nat オプションを使うことを考慮した方が良いでしょう。 --- [管理番号 645] (最終更新 1999/02/17 23:58:45) Q. PAPとかCHAPって何ですか? A. PPP接続の際のユーザ認証方式です。この他にUNIXのログインにより認証 する方法があります。 PAPは、UNIXのログインの手順とよく似ていますが ログイン名とユーザーパス ワードを PPP の パケットとして送出します。 さらに CHAPは、サーバ側から暗号化のもとになる「チャレンジ」と言われる と文字列を送り、クライアント側はこれに基づいて暗号化されたワンタイム・ パスワードを送ります。 セキュリティ面で言うと、パスワードなどがそのま まながれることがないのでCHAPの方が優れています。 UNIXのログインによる認証は、まず無手順でUNIXにログインした後 PPP が 起動されという方式です。 どの認証方式を選ぶべきかは、接続先のISPがサポートの対応状況によります。 /etc/ppp/ppp.confに accept chap deny pap と書くことでCHAPが選択され、 accept pap deny chap だととPAPで接続します。 ログインネームとパスワードは set authname myloginname set authkey mypassword と指定します。 一方、UNIXのログインによる認証は deny pap deny chap set login "TIMEOUT 5 login:-\\r-login: myloginname word: mypassword" などと書きます。 --- [管理番号 662] (最終更新 2001/05/07 03:21:09) Q. ppp で filter を設定していますが、cvsup が動きません。 A. cvsup は port として 5999 を使うので以下のように指定してください。 また、cvsup を multiplexed モードで動かす必要があります。最近の cvsup (cvsup 16.0 以降) のデフォルトは multiplexed モードですが、 明示的にこのモードにするには cvsup -P m <以下略> のように指定してください。 [2.2.8-RELEASE 以降] # cvsup set filter in rule-no permit tcp src eq 5999 estab set filter out rule-no permit tcp dst eq 5999 [2.2.7-RELEASE 以前] # cvsup set ifilter rule-no permit tcp src eq 5999 estab set ofilter rule-no permit tcp dst eq 5999 なお、rule-no は filter 指定時のルール番号です。 --- [管理番号 678] (最終更新 2001/03/07 02:08:44) Q. ppp(8) コマンドを auto モードや ddial モードで起動したときに、診断ポート (3000/tcp) への Internet 側からのアクセスを拒否したいのですが、どうす ればいいのでしょうか? A. TCP ソケットを使う必要がないのならば、LOCAL ドメインソケットを使うよう に変更する方法があります。これならば、外部からの直接アクセスは自ずとで きなくなります。/etc/ppp/ppp.conf の該当セクションで、`set server' 行を 探して、 set server /var/tmp/internet "" 0177 などのように変更します。アクセス方法は pppctl(8) コマンドを使って、 % pppctl /var/tmp/internet とすればあとは今までと同じです。 何かの理由で TCP ソケットを使わなければならないのであれば、ppp(8) のパ ケットフィルタリングを使って、外部からのアクセスを拒否するようにしてく ださい。次のような設定を ppp.conf の該当セクションに追加すればよいでしょう。 set filter in deny 0 MYADDR tcp dst eq (3.3R以降) set filter in deny tcp dst eq (2.2.8R以降) set ifilter deny tcp dst eq (2.2.7R以前) ここで、 はフィルタのルール番号、 は `set server' で指定したポート番号です。詳しくは ppp(8) のマニュアルを参照してください。 --- [管理番号 698] (最終更新 1999/02/24 03:32:00) Q. PPP でユーザ認証がうまくいかないようです。/var/log/ppp.log には May 7 02:43:24 X68000 ppp[279]: tun0: Chat: Expecting login:-\r-login: May 7 02:43:24 X68000 ppp[279]: tun0: Chat: Wait for (5): login: --> login: May 7 02:43:29 X68000 ppp[279]: tun0: Chat: Can't get (5). となっています。 A. /etc/ppp/ppp.conf に ------------- default: set device /dev/cuaa1 ... # PAP で接続するサイト ppp1: accept pap deny chap set phone 0123456 ... # CHAP で接続するサイト ppp2: accept chap deny pap set phone 9876543 ... # UNIX のログイン認証で接続するサイト ppp3: deny chap deny pap set login "TIMEOUT 5 login:-\\r-login: hoge word: fuga" set phone 6543210 ... ---------------- などと記述している場合、ppp を実行してすぐに ppp1 や ppp2 にダイアルす るとうまくいきますが、ppp3 にダイアルした後に ppp1 や ppp2 にダイアル するとユーザ認証に失敗します。 これは、前回ダイアル時の set login "..." の設定が残ってしまい、ppp1 や ppp2 の接続先に (UNIX の) ログイン認証でユーザ認証を行おうとすることが 原因です。ppp1 と ppp2に set login "" を追加することで、ログイン認証を明示的に禁止できます。 --- [管理番号 719] (最終更新 2001/03/07 02:08:45) Q. 一般ユーザで ppp を使うことができません。su で root になれば できるのですが面倒です。 A. FreeBSD 2.2.6-RELEASE 以降では、 - そのユーザが network グループに属している - /etc/ppp/ppp.conf で `allow users' を記述する という2つの設定を行えば、一般ユーザでも ppp コマンドを利用 できるようになります。例えば、ユーザ名を hoehoe としたとき 以下のようにします。 1. /etc/group network:*:69:hoehoe ^^^^^^ `network:*:69:' で始まる行を探して、追加したいユーザ名を最後の ':' の後ろに記述します。複数のユーザを登録したいときは、`,'で区切って並 べます。 2. /etc/ppp/ppp.conf default: allow users hoehoe `allow users' は一般的に default セクションに追加する方が良いでしょう。 複数のユーザを登録するときは、スペースで区切ってまとめて記述します。 詳しくは、ppp(8) を参照してください。 残念ながら、2.2.5-RELEASE では root 以外利用できません。 --- [管理番号 781] (最終更新 2004/04/09 05:04:53) Q. ダイアルアップルータや ppp の -auto モードを使用しています。 次のような操作により、意図していないのに勝手にダイアルしてしまいます。 これを抑制するにはどうすればいいですか? 1. sendmail 等、アプリケーションの起動時 2. 夜中の 3 時頃 3. なにかしら DNS への問い合わせが発生する操作 A. 一般的に on-demand dialup では、DNS サーバへの参照をトリガーとしてダイ アルします。これを抑制すれば意図しないダイアルを防げます。 (1) 名前解決の順序 (2) 自ホストの名前解決 (3) 外部への接続が不要な DNS への問合せを抑制する。 (1) 名前解決の順序 デフォルトでは /etc/host.conf は hosts bind となっています。これを逆順にすると、必ず DNS サーバーへの問い合わせ が行われるという問題が起きます。念の為、確認してください。 (2) 自ホストの名前解決 sendmail 等のアプリケーションは、起動時に自ホストの名前解決を行います。 これによる DNS への問合せを避ける為、/etc/rc.conf で hostname 変数に指 定した自ホスト名を、/etc/hosts に登録する必要があります。 すなわち、hostname(1) コマンドの結果が `myhost.example.jp' なら、 127.0.0.1 localhost localhost.example.jp myhost.example.jp または、ネットワークインタフェースが使えるなら、その IP アドレスを使って、 127.0.0.1 localhost localhost.example.jp 192.168.0.1 myhost.example.jp myhost のようにします。 LAN 上に DNS サーバを立ち上げてないような小規模サイトでは、その LAN に あるそれ以外のホストについても、ホスト名と IP アドレスのペアを登録して おきましょう。これはこちら側から直接 telnet などするつもりがなくても、 逆から接続されるとき、IP アドレスからホスト名を逆引きするときにも使わ れるからです。 (1) 及び (2) は、ローカルで DNS サーバーを動かしていない場合の必須事項 で、これをしてないがために、アプリケーション起動のたびに PPP 接続して しまったり、起動に時間がかかるといった現象に出食わすことになります。 (3) 外部への接続が不要な DNS への問合せを抑制する。 典型的な例として、netstat(1) があります。このコマンドはデフォルトで DNS への問合せを発行します (-n オプションで抑制できます)。 4.1.1-RELEASE 以降のデフォルトでは、/etc/periodic/dayly から、 netstat が実行されます (4.9-RELEASE で確認)。その為、 /etc/periodic/dayly が実行される午前3時頃にダイアルアップすることに なります。これを避けるには、/etc/periodic.conf に次の行を追加してく ださい。詳しくは periodic.conf(5) をご覧ください。 daily_status_network_usedns="NO" daily_status_named_usedns="NO" なお、ppp(8) のパケットフィルタを設定すれば、DNS への問い合わせにより 自動的にダイアルしないようにもできますが、on-demand dialup の目的から すると本末転倒かもしれません。もちろん設定するしないは自由ですので、ケー スバイケースで判断してください。 set filter dial 0 deny icmp set filter dial 1 deny udp src eq 53 set filter dial 2 deny udp dst eq 53 set filter dial 3 permit 0 0 詳しくは man ページや、/usr/share/examples/ppp/ 以下、または /etc/ppp/ にあるサンプルファイルを見てください。 --- [管理番号 859] (最終更新 2001/10/19 21:29:32) Q. FreeBSD で RADIUS サーバを立てようと思っているのですが、 参考になる Web サイトはありますか? A. iij-ppp や pppd を使うのなら DTC Radius Lucent (旧 Ascend 社) Radius FAQ HappySize さんによる RADIUS リンク集 ルータ RT シリーズを作ってる YAMAHA のサイト あとは RFC ですが、Index を RADIUS でサーチしてみれば、関連するものが いくつか見付かるでしょう。 --- [管理番号 1152] (最終更新 2001/08/12 02:51:17) Q. ppp(8) で接続した直後から Apr 17 04:38:39 somehost sendmail[39248]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: cannot bind: Address already in use Apr 17 04:38:39 somehost sendmail[39248]: daemon MTA: problem creating SMTP socket などという変なメッセージが限りなく出てきます。 A. すでに sendmail(8) が daemon mode で起動しているのに、更に /etc/ppp/ppp.linkup に !bg sendmail -bd -q30m などと書かれていませんか? 既に sendmail(8) が daemon mode で起動しているのにもかかわらず 新たに sendmail(8) を daemon mode で起動するとこのようなメッセージが 出ます。とりあえず、sendmail(8) を停止すればこのメッセージは 止まります。ps -auwx | grep sendmail して sendmail の PID を 確認し、kill -TERM で停止させてください。 --- [管理番号 1154] (最終更新 2001/04/18 02:12:12) Q. 電話料金を節約するため /etc/ppp/ppp.conf の中で、 set timeout 300 などと指定して 5 分間ネットワークにアクセスしない時には回線を切るよ うにしてありますが、特にアクセスをしていないのに接続が維持されてし まいます。 A. set timeout による idle timer の設定で、一定時間パケットが流れない 場合には回線を切るようになっていますが、デフォルトでは ping、 NetBIOS などのパケットにも反応して、接続を維持してしまいます。例え ば、外部から ping を一定間隔で打たれると、その都度 idle timer がリ セットされ、見た目にネットワークアクセスをしていなくても ppp(8) は 接続を維持しようとします。また、接続を維持する上で意味のないパケッ トも idle timer に影響を与えることがあります。 このために、idle timer に影響を与えるパケットと与えないパケットを 指定して timeout の動作を変更することができます。これは alive filter を利用し、例えば、 [2.2.8-RELEASE 以降] set filter alive 0 deny udp src eq 137 set filter alive 1 deny udp src eq 138 set filter alive 2 deny udp src eq 139 set filter alive 3 deny udp dst eq 137 set filter alive 4 deny udp dst eq 138 set filter alive 5 deny udp dst eq 139 set filter alive 6 deny icmp set filter alive 7 permit 0/0 0/0 [2.2.7-RELEASE 以前] set afilter 0 deny udp src eq 137 set afilter 1 deny udp src eq 138 set afilter 2 deny udp src eq 139 set afilter 3 deny udp dst eq 137 set afilter 4 deny udp dst eq 138 set afilter 5 deny udp dst eq 139 set afilter 6 deny icmp set afilter 7 permit 0/0 0/0 などと /etc/ppp/ppp.conf に指定すると、ポート 137 〜 139 を出入りす る UDP datagram と ICMP message (ping が代表的)については、idle timer に影響を与えませんが、その他のパケットが流れると idle timer をリセットし、接続は維持されます。 詳しいことは ppp(8) の man ページおよび /usr/share/examples/ppp/ 以下のサンプルファイルを参考にしてください。 --- [管理番号 1234] (最終更新 1999/05/07 00:50:22) Q. NAT-patch をあてた iij-ppp をオンデマンドダイアルアップモードで起動すると、 コマンドプロンプトがすぐに返ってきません。数十秒後に勝手にダイアルを開始し、 ようやくコマンドプロンプトが返ってきます。 A. DNS を立ちあげていませんか?しかも DNS で解決できない場合、外部 (プロ バイダー等) の DNS に問い合わせるように設定していませんか? もしそうなら、 /etc/ppp/ppp.conf に add default ... という行があると思います。ppp はこの default をホスト名だと解釈して IP アドレスを引きに行きます。でもこの時点ではまだ ppp は起動していませんから、 タイムアウトを待つことになります。それが数十秒待つ原因です。その後 ppp が 起動するとあらためて DNS に問い合わせてしまうので、ダイアルアップして しまいます。 解決策としては、下記のいずれかが考えられます。 1. /etc/ppp/ppp.conf で add 0.0.0.0. ... とする。 2. /etc/host.conf を hosts bind の順に設定し、/etc/hosts に 0.0.0.0 default を加える。 --- [管理番号 1302] (最終更新 2003/05/17 21:39:23) Q. NEC Aterm シリーズの ISDN TA で、同期 64Kbps のアクセスポイントに PPP 接続しようと思うのですが、うまくつながりません。TA は RS-232C ポートに 繋げて使っています。 A. 同期 64Kbps のアクセスポイントに接続するためには、「非同期/同期 PPP 変 換をする」という設定にする必要があります。Aterm シリーズの ISDN TA で は、AT コマンドで AT$N1=1 とすればこの設定ができます。 また、チャットスクリプトの段階で失敗するなら、\\d (2 秒待つ) を付加する ことで接続に成功するかもしれません。 AtermIT40、AtermIT45、AtermIT55、AtermIT60 では、次のチャットスクリプトでの 接続が確認されています。途中で改行していますが、実際は一行に続けて記述します。 なお、Aterm シリーズ固有の問題なのかどうかは分かっていません。 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT$N1=1 OK-AT-OK \\dATE1Q0 OK \\dATD\\T TIMEOUT 40 CONNECT" ただし、FreeBSD 4.1-RELEASE 以降や 3.5-RELEASE 以降では、環境変数を 使える様になった関係で、AT$N1=1 を AT$$N1=1 や AT\$N1=1 とする必要が あります。 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT\$N1=1 OK-AT-OK \\dATE1Q0 OK \\dATD\\T TIMEOUT 40 CONNECT" --- [管理番号 1429] (最終更新 1999/11/19 16:04:26) Q. ppp コマンドでインターネットに接続しているのですが、ftp コマンドで ファイルを転送したり、メールに添付してファイルを送る場合などに、ある 特定のサイズ (20kbytes くらい) 以上のファイルを送ろうとすると、途中 から送信が止まったような状態になります。この時、kernel が sio1: 1 more silo overflow (total 1) などというエラーメッセージを出しています。同じハードウェア構成でも Windows95 では全く問題ありません。 A. PC-モデム間の送信フロー制御の設定が正しくない時や、ケーブルが不適切な 時に起こりそうな症状です。DCE速度 (33.6kbps) よりも DTE速度 (例えば 115.2kbps) の方が速いので、よほど LAPM で圧縮が効くデータでない限り モデムのバッファが一杯になってモデムから PC へ送信停止要求が行きますが、 これが発生しなかったり正しい方式でなかったり (xon/xoff制御) するとフロー 制御ができなくてオーバーフローした送信データが消失します。 以下の点を確認してみて下さい。 1) モデムはハードウェア (RTS/CTS 又は RS/CS) フロー制御になってい るか。(またはPPP接続初期化時にハードウェアフロー制御に設定する ATコマンドが送られているか)。 2) (念のため)sio の irq が正しいか。 モデムに関する設定は 1) PC 側の設定は ppp コマンドを実行してから show modem で 2) モデム側の設定は AT コマンドで それぞれ参照できます。AT コマンドの詳細はモデムのマニュアルを参照して 下さい。私の環境では /etc/ppp/ppp.conf の set dial を以下のように しました。 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATLM \ OK-AT-OK AT&K3 OK-AT-OK ATDP\\T TIMEOUT 40 CONNECT" ここで、 "AT&K3" が私のモデム(Diamond Multimedia SupraExpress 336i PnP)で RTS/CSフロー制御にするための ATコマンドです。 また sio の irq に関しては dmesg | grep sio で、見ることができます。 他の OS (例えば Windows) などがある場合はそちらでも irq を確認して みましょう。 --- [管理番号 2247] (最終更新 2003/10/16 23:20:37) Q. フレッツ ADSL と ppp(8) を使ってインターネットに接続しています。 自動リダイアルモード (-ddial) で、PPPoE 接続が切れても、自動的に 再接続してくれません。 A. フレッツ ADSL の場合、 PPPoE 接続が切れたことを ppp で認識できない ことがあります。これを改善するためには、なんらかの方法で PPPoE 接続が 切断されたかどうかを調べる必要があります。 対策としては、以下の方法があります。 1. PPP 設定ファイルで、 "enable lqr" とする。 この場合、 ppp は、30 秒に 1 度、 PPPoE 接続先に LQR パケットを送る。 LQR パケットが連続して 5 回無視されたら (つまり、 PPPoE 接続先から 150 秒応答がなければ)、 ppp は自動的に PPPoE 接続を切断する。 2. 以下のようなスクリプトを書く。 「 PPPoE 接続先 (ifconfig で tun* のデバイスを見た時、 -> の 右側に書いてある IP アドレス ) に ping を飛ばす。 飛ばないようなら PPPoE 接続が切断されたとみなし、 ppp を再起動する。」 [FreeBSD-users-jp 63734] から始まるスレッドが参考になるでしょう。