[7973] wforum.cgiのVer3.24で、LAN内アクセスが遅い。改造するとセキュリティ上、マズイでしょうか。 投稿者:鷹の巣 投稿日:02/20-23:43 <URL>
自宅サーバーを立てています。
環境は、
OS:windows 2000 Professional build 2195 SP2
Webサーバー:AN HTTPd1.36b
CGI:ActivePerl-5.6.1.631-MSWin32-x86.zip
です。

wforum.cgiのバージョン3.23と3.24をLAN内で、アクセスすると
最初に掲示板が表示されるまでに10秒以上かかります。
ブラウザのプロキシ設定を行って外部より、アクセスすると直ぐに
掲示板が表示されます。

wforum.cgi で、下記の様に一行をコメント化すると、LAN環境でもアクセスが10秒以上かからなくなります。セキュリティ上、マズイでしょうか。

#----------------#
# ホスト名取得 #
#----------------#
sub get_host {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};

if ($host eq "" || $host eq $addr) {
# $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
}
}

[7985] Re: wforum.cgiのVer3.24で、LAN内アクセスが遅い。改造するとセキュリティ上、マズイでしょうか。 投稿者:たいふ〜ん! 投稿日:02/21-02:01 <URL>
> 自宅サーバーを立てています。
> 環境は、
> OS:windows 2000 Professional build 2195 SP2
> Webサーバー:AN HTTPd1.36b
> CGI:ActivePerl-5.6.1.631-MSWin32-x86.zip
> です。
>
> wforum.cgiのバージョン3.23と3.24をLAN内で、アクセスすると
> 最初に掲示板が表示されるまでに10秒以上かかります。
> ブラウザのプロキシ設定を行って外部より、アクセスすると直ぐに
> 掲示板が表示されます。
>
> wforum.cgi で、下記の様に一行をコメント化すると、LAN環境でもアクセスが10秒以上かからなくなります。セキュリティ上、マズイでしょうか。
>
> #----------------#
> # ホスト名取得 #
> #----------------#
> sub get_host {
> $host = $ENV{'REMOTE_HOST'};
> $addr = $ENV{'REMOTE_ADDR'};
>
> if ($host eq "" || $host eq $addr) {
> # $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
> }
> }

10秒以上かかるって方が謎ですが(ネームサーバ探しに行ってるのかな?)
(10秒かかればホスト名の変換ができてるのか知りたい所・・・)
・・・まあ、問題ないでしょう。
ただ、それやるなら、

# if ($host eq "" || $host eq $addr) {
# $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
# }
if ($host eq "") { $host = $addr; }

のように、3行消して1行追加しといた方がいいです。

[7995] 色々教えて頂いてありがとうございました。 投稿者:鷹の巣 投稿日:02/21-13:04 <URL>
> 10秒以上かかるって方が謎ですが(ネームサーバ探しに行ってるのかな?)
> (10秒かかればホスト名の変換ができてるのか知りたい所・・・)


セキュリティ上自宅サーバーのLAN内の名前解決を行っていないため、
gethostbyaddrの逆引きでtime outになります。


> ・・・まあ、問題ないでしょう。
> ただ、それやるなら、
>
> # if ($host eq "" || $host eq $addr) {
> # $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
> # }
> if ($host eq "") { $host = $addr; }
>
> のように、3行消して1行追加しといた方がいいです。


色々教えて頂いてありがとうございました。
nslookupコマンドで、逆引きが使用できるOS(PC-UNIX , MAC OSX , windows NT/2000/XP)の方には、ご指示頂いた方法で改造するように推奨します。


nslookupコマンドで、逆引きが使用できないOS(windows 95/98/Me , MAC)の方には、下記の様に改造するように推奨します。

#----------------#
# ホスト名取得 #
#----------------#
sub get_host {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};

# ------- 追加開始 ------
# LAN 内のプライベートセグメントアドレスを192.168.1.0に設定して、
# LAN 内からのアクセスに対して、gethostbyaddrが実行されないようにします。
if (pack("C3", split(/\./, '192.168.1.0')) eq pack("C3", split(/\./, $addr))) {
$host = $addr;
} elsif ($host eq "" || $host eq $addr) {
# ------- 追加終了 ------
# 変更 if ($host eq "" || $host eq $addr) {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
}
}

[前ページ] [次ページ] [検索ページ] [掲示板]