dポイントプレゼントキャンペーン実施中!

WindowsXP(192.168.1.12)からSuSE Linux(192.168.1.5)に対してVNCでログインしています。
この192.168.1.12以外からはVNCでログインできないようにするために、hosts.allowとhosts.denyを以下のように書き換えました。

・/etc/hosts.deny
ALL : ALL

・/etc/hosts.allow
ALL : 192.168.1.12

この状態でWindows(192.168.1.12)からVNCでアクセスすると、エラーメッセージが表示されてログインできません。
The connection closed unexpectedly
Do you wish to attempt to reconnect to 192.168.1.5:5901?


hosts.allowを以下のように書き換えると、VNCでログインできるようになります。
・/etc/hosts.allow
ALL : ALL

192.168.1.12からだけのアクセスを許可させるには、どのようにすればよいのでしょうか?


■環境
SuSE Linux10.0
WindowsXP SP2
VNC Viewer Free Edition 4.1.1

A 回答 (4件)

>もしよろしければ、理由を教えていただけませんでしょうか?



当方もSuseLinux10でVNCを動かしています。
理由、と言うほどでもありません。
VNCの起動スクリプトとログファイルのエラーをみればすぐに分かることです。


理由1 vnc本体(Xvnc)を起動するオプションで、XDMCPプロトコルの接続元がlocalhostになっている。

# cat /etc/xinetd.d/vnc

service vnc1
{
  server_args = :42 -inetd -once -query localhost
}


# Xvnc -help
-query host-name    contact named host for XDMCP


理由2 VNCクライアントから接続エラーの時の、/var/log/messagesファイルを確認すると、
   localhost(127.0.0.1)からの接続が拒否されている。

Apr 9 00:11:01 sv gdm[4714]: ホスト ::ffff:127.0.0.1 の XDMCP 要求を拒否しました


結論
VNCを使うには、/etc/hosts.allow で127.0.0.1からのXDMCP接続を許可する必要がある。
    • good
    • 0
この回答へのお礼

理解はできてないですが、勉強していきます。
ログの保存先も知らなかったくらいなので。

ありがとうございます。
助かりました。

お礼日時:2006/04/08 18:25

自分自身(127.0.0.1)を許可したらどうなりますか?




/etc/hosts.allow

ALL : 192.168.1.12 127.0.0.1
    • good
    • 0
この回答へのお礼

教えてもらった方法で、できました。
この設定で、192.168.1.12からはログインでき、192.168.1.14からはエラーになります。
想定どおりの動作をしています。

もしよろしければ、理由を教えていただけませんでしょうか?

お礼日時:2006/04/08 14:27

参考になりますかどうか。



--------------
「自宅サーバーであそぼ」より引用。

inetd経由サービスへのアクセスを制限
in.qpopperとsshd,swat,VNCへのアクセスはローカルホスト(127.0.0.1), サブネット内(例えば192.168.0.0/255.255.255.0)からのみ許可とする。それ以外のサービス、ホストからのアクセスは拒否。 (sshdは、inetdから起動させているわけではないが、host.allow,host.denyを参照している。)

[/etc/hosts.deny]
swat:ALL → ALL:ALL

[/etc/hosts.allow]
swat:localhost 192.168.0.0/255.255.255.0
in.qpopper:localhost 192.168.0.0/255.255.255.0
sshd:localhost 192.168.0.0/255.255.255.0
Xvnc: localhost 192.168.0.0/255.255.255.0
(注意) 行に改行がないとその行は無効になってしまうので注意! tcpdchkでhost.allow,host.denyにミスがないか確認。ただしsshdはないといわれるが、このメッセージは無視。 tcpdmatchで指定IPアドレスからのアクセス(許可:granted,拒否:denyed)を確認。

(例) # tcpdmatch in.qpopper 192.168.0.1
間違いがなければinetdをリスタート

# /etc/rc.d/init.d/inet restart

この回答への補足

ありがとうございます。

教えていただいた情報を参考に色々試行錯誤してみましたが、やはり駄目です。

で、今まではSuSE10.0でしたが、別PCにSuSE9.3を導入して同じことやってみると、あっけなく指定IPだけを通す設定ができました。
最悪はSuSE9.3にバージョンダウンしょうと考えてます。しかし、SuSE9.3では別の問題が発生して、別件で質問しています。

補足日時:2006/04/07 18:17
    • good
    • 0

VNCの種類が解りかねますが、


hosts.allowに「Xvnc:許可したいPCのIP」の行を追加してみてください。

この回答への補足

回答ありがとうございます。
すみません、種類を確認する方法がわかりません。
SuSE LinuxのYaSTから導入したVNCです。

hosts.allowには、「Xvnc:192.168.1.12」も、「Xvnc:192.168.1.12:ALLOW」も「ALL:192.168.1.12/255.255.255.0」も試してみましたが、エラー(上の質問参照)になります。

エラーにならない組み合わせは、「ALL:ALL」だけです。
これだと、ほかのPCからもVNCでログインできてしまうので困っています。

補足日時:2006/04/07 00:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!