ホーム
 TOPへ 最終更新日:2003年12月18日



Contents
 
● PPP 接続設定 ( RedHat Linux 9.0 )

    ※クロスケーブルで直結した場合(サーバ(ttyS0)←→クライアント(ttyUSB0))。

    1. pppd インストール(サーバ・クライアント共通)
    
        IPv6CP/IPv6 を有効にした pppd をインストールする。
        
        例として、/home/foo/ppp-2.4.1 以下に pppd のソースを展開した場合、
        
        # cd /home/foo/ppp-2.4.1
        # ./configure
        # vi ./pppd/Makefile

        として、
        
            HAVE_INET6=y
            
        のように '#' を外して IPv6 を有効にした後、

        # make all
        # make install

        とする。
    
    2. サーバ側設定
    
        COMポート(例ではttyS0)の PPP 着信監視設定を行う。
        
        a) mgetty 設定
        
            (1) mgetty.config 編集
            
                # vi /etc/mgetty+sendfax/mgetty.config

                として、ttyS0 用の設定を以下のように編集。
                
                port ttyS0
                  debug 6
                  direct y
                  data-only y
                  speed 115200
                
                ※debug      => デバグレベル(0〜6: 4がデフォルト) : mgetty.h 参照
                                #define L_FATAL 0
                                #define L_ERROR 1
                                #define L_AUDIT 2
                                #define L_WARN 3
                                #define L_MESG 4
                                #define L_NOISE 5
                                #define L_JUNK 6
                  direct     => モデムを介さない(直結)
                  data-only  => データ着信のみ(FAX・音声不可)
                  speed      => 通信速度(bps)
                  
                ※デバグログは /var/log/mgetty.log.ttyS0 に出力される。
            
            (2) login.config 編集
                
                # vi /etc/mgetty+sendfax/login.config

                として、
                
                    /AutoPPP/ - a_ppp   /usr/sbin/pppd
                
                を追加する。
                
                ※ログイン名 /AutoPPP/ で着信時 mgetty が pppd をコールするように設定。
                ※ pppd のオプションは /etc/ppp/options.ttyS0 で設定する( b)参照)。
                
        b) pppd 設定
            
            (1) options.ttyS0 編集
                
                # vi /etc/ppp/options.ttyS0
                
                として、
                
                    lock
                    default-asyncmap
                    115200
                    nopcomp
                    noaccomp
                    noccp
                    crtscts
                    local
                    require-chap
                    require-pap
                    auth
                    noip
                    +ipv6
                    proxyarp
                    kdebug 7
                    debug
                
                といった内容のファイルを作成する。
                
                ※オプションの詳細は以下のとおり。
                    lock
                        排他制御有効
                    default-asyncmap
                        asyncmap ネゴシエーション無効(双方向)
                        ※全制御文字エスケープ
                    115200
                        通信速度115200(bps)
                    nopcomp
                        プロトコルフィールド圧縮ネゴシエーション無効(双方向)
                    noaccomp
                        Address/Control 圧縮無効(双方向)
                    noccp
                        CCP ネゴシエーション無効
                    crtscts
                        ハードウェアフロー制御(RTS/CTS)有効
                    local
                        モデム制御線(CD)無効
                        ※直結時にはこれを指定しておかないとうまく動かない場合が
                          ある。
                    require-chap
                        CHAP認証有効(+chapと等価)
                        ※認証するクライアント名とパスワードを追加する必要がある。
                          例) クライアント名 ppp パスワード ppp
                            # vi /etc/ppp/chap_secrets
                            として、
                            ppp         *       "ppp"           *
                            のような行を追加する。
                    require-pap
                        PAP認証有効(+papと等価)
                        ※認証するクライアント名とパスワードを追加する必要がある。
                          例) クライアント名 ppp パスワード ppp
                            # vi /etc/ppp/pap_secrets
                            として、
                            ppp         *       "ppp"           *
                            のような行を追加する。
                    auth
                        相手側に自己証明要求
                    noip
                        IPCP/IP無効
                    +ipv6
                        IPv6CP/IPv6有効
                    proxyarp
                        代理応答有り
                        ※IPv6で有効かどうかは不明
                    kdebug 7
                        カーネルレベルのデバッグコード有効
                        ※ 1: 一般情報 2: 受信パケット情報 4: 送信パケット情報
                          として、必要なものを OR して指定
                        ※この場合、
                          # vi /etc/syslog.conf
                          として、
                            daemon.debug  /var/log/messages
                            kern.debug    /var/log/messages
                          を追加し、ログデーモンを再起動すること。
                          # service syslog restart
                    debug
                        デバグ出力有効
                        ※ /var/log/messages に出力される
            
        c) init 設定
        
            (1) /etc/inittab 編集
            
                # vi /etc/inittab
                
                として、
                
                    # Run mgetty in standard runlevels
                    s0:2345:respawn:/sbin/mgetty ttyS0
                
                を追加する(mgettyの起動&再起動設定)。
            
            (2) 変更反映
            
                # init q
                
                として、変更を反映する。
    
    3. クライアント側設定
    
        COMポート(例ではttyUSB0)経由でサーバに対し PPP 接続を行う。
        
        a) pppd 設定
        
            (1) オプションファイル作成
                
                接続用のオプションファイル(例としてusb0)を作成する。
                
                # vi /etc/ppp/peers/usb0
                
                として、
                
                    nodetach
                    lock
                    115200
                    default-asyncmap
                    mru 1500
                    nopcomp
                    noaccomp
                    noccp
                    crtscts
                    connect '/usr/sbin/chat -v -t3 -f usb0.login'
                    user ppp
                    require-chap
                    require-pap
                    noauth
                    /dev/ttyUSB0
                    noip
                    ipv6 ::0200:00ff:fe00:0002
                    defaultroute
                    kdebug 7
                    debug
                
                といった内容のファイルを作成する。
                
                ※オプションの詳細は以下のとおり。
                    nodetach
                        バックグラウンドプロセスにしない
                    lock
                        排他制御有効
                    115200
                        通信速度115200(bps)
                    default-asyncmap
                        asyncmap ネゴシエーション無効(双方向)
                        ※全制御文字エスケープ
                    mru 1500
                        ネゴシエーション時のMRU(Maximum Receive Unit)値設定(バイト)
                    nopcomp
                        プロトコルフィールド圧縮ネゴシエーション無効(双方向)
                    noaccomp
                        Address/Control 圧縮無効(双方向)
                    noccp
                        CCP ネゴシエーション無効
                    crtscts
                        ハードウェアフロー制御(RTS/CTS)有効
                    connect '/usr/sbin/chat -v -t3 -f /etc/ppp/peers/usb0.login'
                        chat を起動
                        ※ chat のオプションは以下のとおり
                            -v : 詳細ログ取得
                            -t3: 文字列受信待ちタイムアウト(3秒)
                            -f : チャットスクリプト指定
                        ※スクリプトは、
                            # vi /etc/ppp/peers/usb0.login
                            として、
                                '' '' 
                                ogin--ogin: '/AutoPPP/'
                            のような内容にする。
                            → 最初に(mgettyが着信直後に回線クリアを待つ為)ダミーで
                               改行を送信(1行目)した後、'login' 文字列を待ってから、
                               '/AutoPPP/'(着信用キー)を送信する。
                        ※実際にはこれが無くても繋がる(LCP ConfReqの再送を利用)が、
                          接続完了までにさらにタイムラグが生じてしまう。
                    user ppp
                        自己証明の際に使用するクライアント名(ここでは ppp とした)指定
                    require-chap
                        CHAP認証有効(+chapと等価)
                        ※認証するクライアント名とパスワードを追加する必要がある。
                          例) クライアント名 ppp パスワード ppp
                            # vi /etc/ppp/chap_secrets
                            として、
                            ppp         *       "ppp"           *
                            のような行を追加する。
                    require-pap
                        PAP認証有効(+papと等価)
                        ※認証するクライアント名とパスワードを追加する必要がある。
                          例) クライアント名 ppp パスワード ppp
                            # vi /etc/ppp/pap_secrets
                            として、
                            ppp         *       "ppp"           *
                            のような行を追加する。
                    noauth
                        相手側に自己証明を要求しない
                        ※これは他の認証オプション(require-chap等)よりも後に記述して
                          おかないと、無効になる場合があるので注意
                    /dev/ttyUSB0
                        使用デバイス名指定
                    noip
                        IPCP/IP無効
                    ipv6 ::0200:00ff:fe00:0002
                        IPv6CP/IPv6有効(自インタフェースIDも指定)
                        ※ ipv6 <local-if-addr>[, <remote-if-addr>]
                    defaultroute
                        相手側をGWとしたデフォルトルート設定
                    kdebug 7
                        カーネルレベルのデバッグコード有効
                    debug
                        デバグ出力有効
            
            (2) 接続
            
                # pppd call usb0
                
                で接続される。
                
                例)
                  【接続時】※ CHAP 認証使用
                  
                    # pppd call usb0
                    Serial connection established.
                    using channel 59
                    Using interface ppp0
                    Connect: ppp0 <--> /dev/ttyUSB0
                    rcvd [LCP ConfReq id=0x1 <auth chap MD5> <magic 0x7b12cbb6>]
                    sent [LCP ConfReq id=0x1 <magic 0x5a87a33b>]
                    sent [LCP ConfAck id=0x1 <auth chap MD5> <magic 0x7b12cbb6>]
                    rcvd [LCP ConfAck id=0x1 <magic 0x5a87a33b>]
                    rcvd [CHAP Challenge id=0x1 <85e587481b0e74e16cb72a7b396ee590d51b22caaca4cd>, name = "l2m-dev1"]
                    sent [CHAP Response id=0x1 <473cf645b8007112bf03f61df9c959b4>, name = "ppp"]
                    rcvd [CHAP Success id=0x1 "Welcome to l2m-dev1."]
                    Remote message: Welcome to l2m-dev1.
                    sent [IPV6CP ConfReq id=0x1 <addr fe80::0200:00ff:fe00:0002>]
                    rcvd [IPV6CP ConfReq id=0x1 <addr fe80::143d:4bb7:2fd4:1c76>]
                    sent [IPV6CP ConfAck id=0x1 <addr fe80::143d:4bb7:2fd4:1c76>]
                    rcvd [IPV6CP ConfAck id=0x1 <addr fe80::0200:00ff:fe00:0002>]
                    local  LL address fe80::0200:00ff:fe00:0002
                    remote LL address fe80::143d:4bb7:2fd4:1c76
                    Script /etc/ppp/ipv6-up started (pid 7761)
                    Script /etc/ppp/ipv6-up finished (pid 7761), status = 0x0
                    
                  【接続時】※ PAP 認証使用(サーバ側でrefuse-chap(-chapと等価)指定)
                    pppd call usb0
                    Serial connection established.
                    using channel 63
                    Using interface ppp0
                    Connect: ppp0 <--> /dev/ttyUSB0
                    rcvd [LCP ConfReq id=0x1 <auth pap> <magic 0xb99d1db2>]
                    sent [LCP ConfReq id=0x1 <magic 0x908d151c>]
                    sent [LCP ConfAck id=0x1 <auth pap> <magic 0xb99d1db2>]
                    rcvd [LCP ConfAck id=0x1 <magic 0x908d151c>]
                    sent [PAP AuthReq id=0x1 user="ppp" password=<hidden>]
                    rcvd [PAP AuthAck id=0x1 "Login ok"]
                    Remote message: Login ok
                    sent [IPV6CP ConfReq id=0x1 <addr fe80::0200:00ff:fe00:0002>]
                    rcvd [IPV6CP ConfReq id=0x1 <addr fe80::f9e8:0be4:0621:ab82>]
                    sent [IPV6CP ConfAck id=0x1 <addr fe80::f9e8:0be4:0621:ab82>]
                    rcvd [IPV6CP ConfAck id=0x1 <addr fe80::0200:00ff:fe00:0002>]
                    local  LL address fe80::0200:00ff:fe00:0002
                    remote LL address fe80::f9e8:0be4:0621:ab82
                    Script /etc/ppp/ipv6-up started (pid 8044)
                    Script /etc/ppp/ipv6-up finished (pid 8044), status = 0x0

                  【デバイス確認】
                  
                    # ifconfig ppp0
                    ppp0      Link encap:Point-to-Point Protocol
                              inet6 addr: fe80::200:ff:fe00:2/10 Scope:Link
                              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
                              RX packets:5 errors:2 dropped:0 overruns:0 frame:0
                              TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
                              collisions:0 txqueuelen:3
                              RX bytes:100 (100.0 b)  TX bytes:100 (100.0 b)
                    
                  【削除時([Ctrl]+[C])】
                  
                    Terminating on signal 2.
                    Script /etc/ppp/ipv6-down started (pid 7787)
                    sent [LCP TermReq id=0x2 "User request"]
                    rcvd [LCP TermAck id=0x2]
                    Connection terminated.
                    Connect time 7.9 minutes.
                    Sent 172 bytes, received 172 bytes.
                    Waiting for 1 child processes...
                      script /etc/ppp/ipv6-down, pid 7787
                    Script /etc/ppp/ipv6-down finished (pid 7787), status = 0x0


  Indexに戻る



ホーム  このページの先頭