[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:29029] Re: [PPxP] Communication is failed



土屋です。

やっとのことで接続に成功しました。まだ本当の原因ははっきりしないのです
が、どうも ppxp に問題がありそうです。


>> On Sat, 30 Jun 2001 13:06:53 +0900
>> 「土」== tsuchiya@xxxxxxxxxxxxxxxxxxxxxxx (TSUCHIYA Masatoshi) said as follows:

安> ~$ apt-cache show ppxp |grep Version
安> Version: 0.99120923-1

土> potato の PPxP で再チャレンジしてみます。

してみました。で、今度は接続自体には成功したのですが、ip-start スクリ
プト中で ssh[1] が実行できないようになりました。

    setgid 0: Operation not permitted

という謎なエラーメッセージが出力されます。

[1] 大学の WS に Maildir 形式でメールを貯めていて、接続時に ssh +
    rsync で取り込んでます。


それで仕方がないので、改めて unstable の ppxp (0.2001051623-1) をイン
ストールし、

    CONFIG_PACKET=y
    CONFIG_NETLINK=y
    CONFIG_RTNETLINK=y
    CONFIG_NETLINK_DEV=y
    CONFIG_TUN=m
    # CONFIG_ETHERTAP is not set

と、『netlink_dev 組み込み済、tun device のみサポート』というカーネル
を作成しました。その上で ppxp を起動すると、

    [amaru:~]$ ppxp
    PPxP version 2001051623
    interface: tap0

と、本来存在しないはずの tap0 が使われてしまい、このまま接続しようとす
ると、[debian-users:28951] で報告した以下のエラーが発生します。

    Jun 26 05:47:22 [453] ERROR: SIOCSIFADDR(123.123.123.123): No such device
    Jun 26 05:47:22 [453] ERROR: SysIpRoute SIOCADDRT: No such device

sudo rm -rf /deb/tap* しても効果ありません。/var/log/syslog には以下の
ような記録が残っていました。

    Jun 30 21:24:00 amaru modprobe: modprobe: Can't locate module userlink
    Jun 30 21:24:00 amaru modprobe: modprobe: Can't locate module ethertap
    Jun 30 21:24:00 amaru modprobe: modprobe: Can't locate module tap0
    Jun 30 21:24:00 amaru ppxpd[6777]: ERROR: EthertapOpen SIOCGIFHWADDR: No such device 
    Jun 30 21:24:00 amaru ppxpd[6782]: ERROR: /etc/ppxp/conf/ppxprc: No such file or directory 
    Jun 30 21:24:01 amaru ppxpd[6782]: ERROR: /etc/ppxp/passwd: No such file or directory 
    Jun 30 21:24:01 amaru ppxpd[6782]: OS   : PPxP version 2001051623 using tap0 

というわけで、ppxp がデバイスの判定を間違えるのが問題である、というこ
とのようです。


それでは、この問題はどうやったら回避できるのか検討してみました。

利用できるデバイスは、ppxp/OS/Linux/netif.c 中の SysIfOpen() 関数で判
定されているのですが、特に、tun デバイスが利用できるか判定している部分
は次のようになっています。

    #ifdef HAVE_LINUX_IF_TUN_H
        /* search tun >= 1.3 (misc type driver) */
        minor = SearchMajor(miscFp, "net/tun");
        if (minor < 0) minor = TUN_MINOR;
        ifFd = MiscTunOpen(minor, ifname, ifnp);
        if (ifFd >= 0) goto End;
    #endif

で、HAVE_LINUX_IF_TUN_H というマクロは configure スクリプトによって決
定され、ppxp/lib/config.h で定義されます。

したがって、上記マクロがきちんと定義されるような環境で ppxp パッケージ
を作り直すと、なんとかうまく接続されるようになりました。

というわけで、結論としては

    kernel-2.4.x で ppxp を利用した通信に失敗した場合は、
    kernel-headers-2.4.x をインストールし、linux/if_tun.h が参照できる
    ようにして、ppxp パッケージを作り直しましょう。

ということになるのですが…。これって、やっぱりパッケージのバグでしょうか。

-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )
    http://www-nagao.kuee.kyoto-u.ac.jp/member/tsuchiya/