外部から自宅にアクセスできるように
LinuxマシンをPPPサーバーに仕立てる


(着信監視にuugettyを使う)


 サーバー側マシンでモデムの着信を検出する方法としてuugettyを使った場合のサーバーとクライアントの設定です。

 Linux環境は,サーバークライアントとも Slackware3.1(ppp 2.2.0f)+kernel 2.0.30 です。またモデムはどちらもttyS1(com2)に接続してしてあるものとしています。サーバークライアントともPPPのカーネルドライバを組み込んでおきます。

サーバーの設定

  1. /etc/inittabの設定を変更
    # Serial lines
    #s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
    #s2:12345:respawn:/sbin/agetty 19200 ttyS1 vt100
    s2:345:respawn:/sbin/uugetty ttyS1 38400 vt100     
    

  2. /etc/default/uugetty.ttyS1にモデム初期化コマンド他オプションを設定
    CLEAR=NO
    HANGUP=YES
    ALTLOCK=cua1
    INIT="" ATZ\r OK ATS0=2\r OK              
    WAITFOR=RING
    CONNECT="" ATA\r CONNECT
    TIMEOUT=60
    

  3. /etc/gettydefsの設定を変更
    #  Modem locked at 38400
    #
    38400# B38400 CS8 CRTSCTS # B38400 SANE -ISTRIP CRTSCTS #@S login: #38400
    

  4. /etc/passwdにpppユーザーを登録
    ppp:password:uid:gid:ppp client:/tmp:/etc/ppp/ppp-server     
    
     パスワード,ユーザーID,グループIDはマシン環境に合わせて適切に設定してください。ホームディレクトリは/tmp,ログインシェルは/etc/ppp/ppp-serverとします。

  5. /etc/ppp/ppp-server(ユーザーpppのログインシェル)の作成
    #!/bin/sh
    #
    #      login shell for ppp user
    #
    LOCAL_IP=192.168.1.100		<---このIPアドレスはマシン環境に合わせて
    REMOTE_IP=192.168.1.101		    変更してください
    
    exec /usr/sbin/pppd passive debug modem lock crtscts $LOCAL_IP:$REMOTE_IP   
    
     このファイルには実行属性を設定しておきます。


     サーバー側の設定は以上です。
     シリアルポートが38400bpsの指定の時に115200bpsの速度で動作するようにsetserialコマンドを入力します。
      setserial  /dev/ttyS1  spd_vhi

     initを起動し直し,uugettyを起動します。
      init  q

     uugettyがシリアルポートに繋がったモデムの着信の監視を始めます。uugettyはアクセスがあるとログインプロセスを発行します。アクセスしたユーザーがpppのユーザー名でログインに成功すると/etc/ppp/ppp-serverが起動され,以降PPPでの通信が可能となります。


クライアントの設定

  1. /usr/sbin/ppp-onの設定を変更
    TELEPHONE=078-XXX-XXXX	<--- サーバー側の電話番号
    ACCOUNT=ppp		<--- ユーザー名は ppp とする
    PASSWORD=password	<--- サーバー側で設定したpppユーザーのパスワード   
    LOCAL_IP=0.0.0.0
    REMOTE_IP=0.0.0.0
    NETMASK=255.255.255.0
    export TELEPHONE ACCOUNT PASSWORD
    DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
    exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS1 38400 \
    	asyncmap 0 $LOCAL_IP:$REMOTE_IP \
    	noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
    

  2. /etc/ppp/ppp-on-dialerを次のとおり設定
    #!/bin/sh
    exec chat -v				\
    	TIMEOUT		3		\
    	ABORT		'\nBUSY\r'	\
    	ABORT		'\nNO ANSWER\r' \
    	ABORT		'\nRING\r\n\r\nRING\r' \
    	''		\\rATZ		\
    	'OK-+++\c-OK'	ATH0		\
    	TIMEOUT		60		\
    	OK		ATDT$TELEPHONE	\    <-- パルスダイヤルならATDP  
    	CONNECT		''		\
    	ogin:--ogin	$ACCOUNT	\
    	word:		$PASSWORD
    


     クライアント側の設定は以上です。
     シリアルポートが38400bpsの指定の時に115200bpsの速度で動作するようにsetserialコマンドを入力します。
      setserial  /dev/ttyS1  spd_vhi

     次にppp-onを起動します。
      tail -f /var/log/messages; ppp-on

     PPP接続を切断する場合にはppp-offコマンドを入力します。


Windows95でアクセスする場合にはちょっと注意が必要!!

 上で示したpppサーバーにWindows95のダイヤルアップネットワークの機能を使って接続する場合には注意が必要です。ダイヤルアップネットワークを普通に設定しただけでは,サーバーが実行するログインプロセスにうまく応答できません。

 Windows95のダイヤルアップネットワークではモデムがサーバーモデムに接続するとpppパケットをいきなり送信します。サーバーへのログオンのための認証については,サーバーから要求されるpppによるPAP認証に答えるようになっています。サーバー側のuugettyはモデムが接続すると/bin/loginを起動しますので,"login:","password:"プロンプトによるログインプロセスが失敗し,サーバー側から回線を切断してしまいます。

 このためWindows95のダイヤルアップネットワークでアクセスするためには,ダイヤルアップネットワークのプロパティで「接続の方法」の「設定」をクリック,「オプション設定」タブの「接続の管理」で「呼び出してからターミナルウィンドウを表示」オプションをチェックします。サーバーモデムと接続するとターミナルウィンドウが表示されるようになりますので,このウィンドウの中で手動にてユーザーIDやパスワードを入力します。この後「続行」をクリックすればPPPの接続ができるようになります。
 
 サーバー側の着信検出にmgettyを使った場合には,このようにIDやパスワードを手動で入力しなくてもPAP認証を使って自動で接続することができるようになります。



戻る