Diald Control

Linux + IP Masquerade + Diald + Diald Control


since
09/Apr/1998

English Page is here


Linux kernelの持つ IP Masquerade機能を使って、Home LAN全体をプロバイダにPPP接続するという 環境が一般的になってきました。

このような環境では、 dialdを使って、動的発呼(インターネット接続が必要になったときに、 自動的にPPP(or SLIP)接続し、一定時間使われなくなったら自動的に回線を 切断)させると非常に快適な環境が構築できます。

しかし、dialdの動的発呼の機能だけでは不便な場合があります。例えば、電話を 使いたいのに、dialdがPPP接続しようとして勝手に電話をかけてしまう場合や、 逆に、少しの間ネットワークが使われなかったために、回線を切断しようとして しまう場合など、強制的にdialdの接続制御を人間が奪い取りたいときがあります。 このような要求に答えて、dialdには名前付きパイプを通して機能を制御する仕組み があり、dialdのパッケージにはtcl/tkのGUIベースの制御クライアント(dctrl)が付属 しています。

ここで問題になるのは、dialdに標準付属のdctrlではこの制御を名前付きパイプを 通して行うために LANに接続された他の端末からはこの制御機能を利用する ことができないということです。これは、IP Masqueradeを用いている環境では 非常に不便です。

そこで、LAN上のクライアントから制御できるようにするために、 クライアント・サーバー パッケージ Diald Control を作りました。 Diald Controlパッケージはクライアントからのソケットによる接続を扱う サーバー(dcntls)と Java(applet、application両対応)によるGUIベースの制御クライアント(DcntlClient) からなり、サーバーはクライアントからの制御をdialdに中継し、dialdからの 接続情報をクライアントに転送する簡単なプロキシーサーバーです。下の図は、 クライアントの実行画面です。
このクライアントは、Javaで書いてあるため、WindowsでもMacでも、もちろん Linuxからでも使うことができます。さらに、アプレットとしても、アプリケーション としても動作します。JDK1.1以上が必要ですが、NetscapeやIE等からも、 Java Plug-inを用いることで JDK1.1のアプレットを利用することができます。Netscape4.06以降ではJava Plug-in は必要ないようです。Linuxでも利用できます。

dcntlc


ソースコード

Package

diald-control.tgz

コンパイル、インストール

  1. diald-control.tgz をダウンロードして、 tarファイルを展開してください。
           % zcat diald-control.tgz | tar xvf -
    
  2. Makefileの先頭で、 DCNTLDIR, SBINDIR, BINDIR, SERVER_ADDR, PORT_NUM を適切に設定してください。

  3. make および、 make install
           % make
           % su root
           # make install
           

  4. /etc/rc.d/rc.local に以下の内容を記述してください。
           # Start dcntls
           if [ -f /usr/sbin/dcntls ]; then
              /usr/sbin/dcntls ;
              echo -n "dcntls ";
           fi
           


実行

  1. Diald Controlサーバーを起動します。/etc/rc.d/rc.local ですでに起動している場合は必要ありません。
    # /usr/sbin/dcntls
  2. stand aloneのクライアントを実行します。
    % /usr/local/bin/dcntlc 
  3. ブラウザからAppletとして実行します。
    http://your-Diald-Control-Server-address/dcntl/index.html
    をブラウザから開きます。Web Serverのアドレスを正しく指定してください。

セキュリティに関する設定

Diald Controlではクライアントの認証を行っていませんが、 外部ネットワークからdialdの制御をコントロールされるかもしれない という問題は、IP firewall 機能を用いて避けることができます。

# /sbin/ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 8972 -W ppp0

をroot権限で実行すると、ppp0を通して外部からポート8972(Diald Controlが 使うポート) への接続をすべて拒否します。内部のネットワークからはppp0ではなく、 eth0等を通すので、利用可能となります。
同様に、ローカルネットワークの特定のホストからの接続拒否の設定も 可能です。たとえば、サーバーのアドレスが192.168.0.1で、対象とする ホストが 192.168.0.2 だとすると、

# /sbin/ipfwadm -I -a deny -P tcp -S 192.168.0.2 -D 192.168.0.1 8972

とすればよいでしょう。 このコマンドを /etc/rc.d/rc.local 等に書いておけば安心でしょう。


Related Links


Last Modified:

Yoshiaki Shinmi
shinmi@ueda.info.waseda.ac.jp