2010/02/11

IPv6 + TCP Wrapperでのnetmaskの取り扱いについて

LAN内部での事ですが、DNSにAAAAレコードを追加し、Ipv6を使ってサーバに接続するようになりました。 しかしAlixで作成したゲートウェイにIPv6経由でSSH接続したときだけ、タイムアウトをしているかのような動きになったので原因を追ってみました。

エラーの内容::クライアント編

サーバ側に出力されたログでは、原因が直感的にはわかりませんでした。 一般的にサーバ側は誰かに管理されていて、ログをみたり設定の変更ができる事は少ないですよね。 そんなわけでsshで困った時にはクライアント側で-vオプションを使うのがお勧めです。

$ ssh -v 2001:03xx:xxxx:1::c0a8:0101

出力されたエラーの内容

OpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /home/yasu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 2001:03xx:xxxx:1::c0a8:0a01 [2001:03xx:xxxx:1::c0a8:0a01] port 22.
debug1: Connection established.
debug1: identity file /home/yasu/.ssh/identity type 0
debug1: identity file /home/yasu/.ssh/id_rsa type -1
debug1: identity file /home/yasu/.ssh/id_dsa type 2
ssh_exchange_identification: Connection closed by remote host

エラーの内容::サーバ編

ちなみにサーバ側では次のようなログでした。

サーバ側の/var/log/auth.logファイル抜粋

Feb 11 18:07:56 xxxxxxxx sshd[5424]: refused connect from 2001:03xx:xxxx:1::xxxx (2001:03xx:xxxx:1::xxxx)

サーバ側で接続を拒否しているかのような動きですが、すぐには原因が思いつきませんでした。

解決編

結局のところ原因は、/etc/hosts.allowにIPv4用のTCP Wrapper(libwrap)の設定を書いていたことでした。

原因がわかればなんてこともないのですけどね。 修正内容はhosts.allowにIPv6用の設定を追加しただけなのですが、ネットマスクを使ったルールの書式が少し判りずらいかなと感じました。

追加した/etc/hosts.allowファイル

ALL: 192.168.1.0/24 192.168.10.0/24 [2001:03xx:xxxx::]/48

ブランケットの中に/48を入れてしまうとうまく動きません。

今回はiptablesの保険として設定しておいたTCP Wrapperがちゃんと仕事をしてくれた事でトラブルになってしまいました。 まぁIPv6用の設定方法もわかったし、良しとしましょう。

0 件のコメント: