[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/