2007-03-31

λ SBS2003 整備

VPNで接続ができなかった問題

認証は通るもののVPNでのログイン後に切断されてしまっていた。 イベントビューアを確認するとIPアドレスの割り当てに失敗している。

DHCP経由でのIPアドレス割り当てになっていたのだが、DHCPが対象にしているスコープが 192.168.255.0/30 で確かに割り当てるのは無理だ。 このネットワークはLoopbackデバイスを利用してVirtualServerによるホストマシンとゲストマシンをつないでいるもの。 192.168.255.0/24 に広げて対応することにした。 あまりネットワークアドレスをケチるのも考えものだ。

VPN接続後のルーティング

VPN接続すると、VPNの経路がDefault Routeとして優先されるといういつもの問題。 [VPNで作ったネットワーク]のプロパティ-[ネットワーク]タブ-[インターネット プロトコル(TCP/IP)]のプロパティ-[詳細設定]-[全般]タブ] -[リモートネットワークでデフォルトゲートウェイを使う] のチェックボックス をオフにする

...画像を簡単に貼り付けたいなあ。

VPN接続後の名前解決

VPN接続前の外部から利用する際のホスト名はFQDNにしたいので dc01.example.com のように設定しているのだが、 VPN接続後にVPN経由でアクセスする際には同じ名前を使う訳にはいかない。

Outlookから接続する際には、FQDNではなくマシン名だけ指定したい。 のだがマシン名だけで設定しようとしても、Exchangeサーバ名としては勝手にFQDNに展開して設定しようとする。

結果として

  • VPN接続1回目は外部DNSサーバを利用して成功する
  • 接続してしまうとVPN経由での名前解決により、接続用のIPアドレスまで内部アドレスになってしまう
  • なので切断-直後に再接続 しようとすると失敗。自分で ipconfig /flushdns とかしないといけない。

という状況に。

VPN接続用の名前として dc01-vpn.example.com といった別の名前を割り振ることにした。

SMTP経由でのメール送信

外部にメール送信できなくて RT57i のパケットダンプとかしてしまった。 OP25Bだ。ポート25だけ外部への接続は出来ない。受信は出来ていたので油断した。

そして Exchange Server 2003 は、スマートホストの設定で接続先のポート番号を変更することがどうも出来そうになくて困った。 最初に設定したのは Exchange のシステムマネージャで

  • サイト名-[コネクタ]-[Small Business SMTP コネクタ]のプロパティ-[全般]タブ で[このコネクタから次のスマートホストにすべてのメールを転送する] でSMTPサーバ指定。
  • 上記[Small Business SMTP コネクタ]のプロパティ-[詳細設定]タブ EHLOの代わりにHELOを送信 はチェックを外す
  • 上記[Small Business SMTP コネクタ]のプロパティ-[詳細設定]タブ-[送信セキュリティ]ボタン で基本認証を選択、ユーザ名とパスワードを設定
  • 上記[Small Business SMTP コネクタ]のプロパティ-[詳細設定]タブ ETRN/TURN を送信しない
  • 上記[Small Business SMTP コネクタ]のプロパティ-[詳細設定]タブ TLS暗号化のところは接続先の設定に合わせる

ポート番号を指定するには以下の場所の設定をする。[既定のSMTP仮想サーバー]は上記[Small Business SMTP コネクタ]において、ローカルブリッジヘッドサーバとして設定されているもの。 ポート番号以外の設定はしない。

  • サイト名-[サーバー]-自分のサーバ名-[プロトコル]-[SMTP]-[既定のSMTP仮想サーバー]のプロパティ-[配信タブ]
    • [送信セキュリティ]ボタン 匿名アクセス のままにする(この設定は無視されるようだ)
    • [送信接続]ボタン TCPポートに 587 を指定
    • [詳細設定]ボタン にスマートホスト は空のままにする(この設定は無視されるようだ)

確認作業はキューを見る

  • サイト名-[サーバー]-自分のサーバ名-[キュー]

Exchange Server 2007 なら Set-SendConnector -port ポート番号 で変更できるようだ。

λ hi-ho のメールサーバで スマートホストの指定を FQDN にした時の挙動

smtp.example.com の解決結果が 192.0.2.147 だったとして、最初の SYN パケットは 192.0.2.147 という正しいIPに接続しようとするのに、 次に接続する際は 192.0.2.197 に接続しようとして失敗するという謎挙動。

更にIPアドレスで指定したところ、「リモート SMTP サービスは AUTH ネゴシエーションを拒否しました」というエラー。 ポートの次はSASL認証方法にも齟齬か? と思ったが、パケットキャプチャをすると、AUTH LOGIN でやりとりは普通にしている。 が、Exchange Server 2003から渡しているユーザ名とパスワードの最後が切れている! なんじゃそら。ワケワカメ過ぎだ。

もういいや。面倒なので mimori.org 経由で送信することにした。 DNSとメールの維持には固定IPのついた環境は必須だな。

λ bind9 動的ゾーンの jnl ファイルを消す

jnlファイル(Journalファイル)は動的変更の履歴を保持しているファイルだが、jnlファイルの中身を現在の状態をゾーンファイルに反映させてファイルを消すには、 rndc freeze rndc thaw を連続して実行する。

が、Bind 9.3.x の場合、rndc freeze だけでは駄目で、ゾーンを指定する必要がある。 しかも view を利用して接続元IPアドレスによる返答分岐をしている場合は、view名も指定する必要がある。

rndc のヘルプ表示:

freeze zone [class [view]]
              Suspend updates to a dynamic zone.
thaw zone [class [view]]
              Enable updates to a frozen dynamic zone and reload it.

ここで class が何なのか分からなくて悩んだ。DNSにおける query class は "IN" だ。

view の名前に outside を利用している場合は以下のようなコマンドを実行する。

% sudo rndc freeze example.com IN outside; sudo rndc thaw example.com IN outside

ゾーンファイルを手で書き換える場合は、freeze した後に実行するもの、ではあるのだが、 動的更新を有効にしてるんだったら nsupdate だけで設定変更を頑張るのが筋というものだろう。

Bind 9.4.0 のリリースノートによると、rndc freeze rndc thaw だけで全ゾーンが対象になるらしい。

[]