68user's page 掲示板

Prev< No. 3741〜3746> Next  [最新発言に戻る] [過去ログ一覧]
No. 3741 # 68user 2004/05/28 (金) 17:59:31
>>3740 瓜倉 茂
> クライアントマシンのIPアドレスを取得するPerlのコードでつまずきました。
IP アドレスは $ENV{REMOTE_ADDR} で取得できますよね。FQDN (ホスト名) の
取得が目的ですか?

それはそれとして、
> プロキシを設定した状態で、クライアントのIPアドレスを取得できる方法が
> ありましたら、ご教示ください。
については
>>3450 68user
の「理屈的には、100% の精度の proxy 判定は不可能です」のくだりを
読んでください。

100% は無理と書きましたが、学内限定でなおかつあなたが管理者の立場なの
であれば、必ず HTTP_X_FORWARDED_FOR を設定させるように proxy サーバの
設定変更するなどの手はあります。

ただ、根本的に信頼性がないので「web で出席を取る」という仕組みが妥当か
どうかは微妙な気がします。

No. 3742 # marlboro 2004/05/28 (金) 22:25:03
>>3733 68user
遅くなりました。すでに確認していただいているのですが。
>調べてみますが、
> - どこからどこ宛の接続なのか (Solaris8 から localhost 宛?)
> - OS 付属の FTP クライアントでは問題ないのか
> - (インターネット上に公開されているサーバであれば) 相手のサーバ名
>を教えていただけると助かります。
あて先は、同じネットワーク内に存在するサーバです。同じくSolaris8です。
UNIXのftpコマンド、Windowsのツール(FFFTP)では問題なく動作します。
#ftpコマンドでPASVで送受信する方法を知らないんですね。。。
サーバ側の問題とも考えにくいです。

No. 3743 # kentarou 2004/05/28 (金) 23:13:18
コマンドを&&でつなぐ件、勉強になりました。
ありがとうございます。

No. 3744 # 瓜倉 茂 [E-mail] 2004/05/28 (金) 23:38:23
68user様
早速のご回答ありがとうございます。Perlの使い方で問題が解決するのかと
思ってましたが、ネットワーク経由だと他のところも絡んでくるのですね。
Webにこだわらないで、出席を取る問題を再考してみます。

No. 3745 # 瓜倉 茂 [E-mail] 2004/05/28 (金) 23:43:36
marlboro様
先ほどのNo.3744の内容は、No. 3742のmarlboro様へのお礼でした。
あて先を間違い失礼しました。改めてmarlboro様の回答にお礼申し
上げます。

No. 3746 # 68user 2004/05/29 (土) 01:03:39
>>3742 marlboro
ProFTPD を相手にすると再現することがわかりました (一番
最初に試すべきことでしたね)。

    % time ./ftp-client -d anonymous foo@example.com ftp.proftpd.org /MIRMON.PROBE
    <-- 220 ProFTPD 1.2.10rc2 Server (proftpd.org Project) [81.223.20.36]
    --> USER anonymous
    <-- 331 Anonymous login ok, send your complete email address as your password.
    --> PASS foo@example.com
    <-- 230 Anonymous access granted, restrictions apply.
    --> PORT aaa,bbb,ccc,ddd,16,36
    <-- 200 PORT command successful
    --> RETR /MIRMON.PROBE
    1085749801
    <-- 150 Opening ASCII mode data connection for /MIRMON.PROBE (11 bytes)
    (ここで6分待たされる)
    <-- 226 Transfer complete.
    --> QUIT
    <-- 221 Goodbye.
    0.000u 0.005s 6:03.75 0.0% 0+0k 0+0io 0pf+0w

対策ですが、
    http://x68000.startshop.co.jp/~68user/net/c-ftp-1.html

        while (1){
                int read_size;
                read_size = read(data_socket, buf, BUF_LEN);
                ...
        }
の後に
        close(data_socket);
を入れることで直るようです。

データコネクションはサーバ側から切ってくれると認識して
いたのですが、間違いなのかもしれません。調査します。

ご指摘いただきありがとうございました。

> #ftpコマンドでPASVで送受信する方法を知らないんですね。。。
Solaris8 の ftp はカスなので、passive モードにできない
と認識しています。GNU モノや BSD モノなら、passive でできます。

Prev< No. 3741〜3746> Next  [最新発言に戻る] [過去ログ一覧]