2014年3月3日月曜日

[Azure] ポイント対サイト接続時のエラー798を回避する

AzureでクライアントVPNを提供するポイント対サイト接続(※2014年3月現在プレビュー版)ですが、MSDNの手順通りに進めても、私の環境ではクライアントからの接続時にエラー798が出て失敗してしまいました。海外のフォーラムでも同じ問題が報告されています。
色々と試行錯誤した結果、問題の回避策を見つけました。上記フォーラムにも投稿していますが、改めて日本語で手順を説明したいと思います。前提として、ルート証明書とクライアント証明書の作成、ルート証明書のアップロード、AzureからダウンロードしたVPNパッケージのインストール等は、MSDNの手順に沿って実施済みとします。
  1. 「ファイル名を指定して実行」から「ncpa.cpl」を実行する。「詳細」ビューに切り替えて、「電話番号またはホスト アドレス」列を参照し、「azuregateway」で始まる接続先を控えておく。
  2. 「ネットワークと共有センター」からVPN接続をセットアップする。「インターネット アドレス」には、控えておいた「azuregateway」で始まる接続先を指定する。
  3. セットアップしたVPN接続のプロパティを開く。
  4. 「セキュリティ」タブの「認証」欄で、「拡張認証プロトコル(EAP)を使う」⇒「Microsoft: スマート カードまたはその他の証明書」を選択する。
  5. 更にプロパティを開き、「接続のための認証方法」で「このコンピューターの証明書を使う」を選択して「OK」ボタンを押す。
  6. 「ネットワーク」タブで「インターネット プロトコル バージョン 4」のプロパティを開く。更に詳細設定を開き、「リモート ネットワークでデフォルト ゲートウェイを使う」のチェックを外す。
  7. 「OK」ボタンで全てのダイアログを閉じる。
  8. VPN接続を開始する。初回には接続先を確認するダイアログが出るが、そのまま進める。クライアント証明書の選択ダイアログが出たら、事前に作成・導入した証明書を選択する。
上記手順でのVPN接続ですが、単にエラーを回避するだけでなく、VPN接続時のDNS指定やDNSへのレコード登録等、さまざまなプロパティを設定できるメリットもあります。私はその点を重宝して、ポイント対サイト接続では専ら上記手順で作成したVPN接続を使用しています。

2014年2月6日木曜日

[SQL Server] ミラーリングされたDBについて、プライマリDBのみトランザクションログバックアップ(切り捨て)を行うT-SQL文

Lync ServerのバックエンドDBをミラーリングした場合、トランザクションログの肥大化による障害を回避するため、定期的なトランザクションログバックアップが必要となります(参考KB)。プライマリとミラーのスイッチを考慮すると、ミラーを構成するSQL Serverの両インスタンスでバックアップを実行するのが確実ですが、その場合ミラーDBに対するバックアップは失敗し、ログにエラーが出力されます。

エラーそのものは製品仕様に基づくため問題ではないものの、他のエラーが埋もれてしまう懸念と気分の問題から、ミラーリングされたDBのステータス(プライマリかミラーか)を取得し、プライマリの場合のみトランザクションログバックアップを実行するT-SQL文を作成しました。これをSQL Server Agentで毎時実行することで、ラボ環境にて余計なエラー出力なくトランザクションログを切り捨てることができています。ラボ環境では切り捨てだけできればよかったのでバックアップ先をnullデバイスにしていますが、バックアップデータが必要な場合でも簡単に変更して再利用可能です。

-- T-SQL文開始 --
declare @database_name sysname
declare principal_databases cursor
    local static read_only forward_only
    for select name
    from sys.databases d, sys.database_mirroring m
    where d.database_id = m.database_id
    and m.mirroring_role_desc like 'PRINCIPAL'
    order by name
open principal_databases
fetch next from principal_databases into @database_name
while @@fetch_status = 0 begin
    backup log @database_name to disk = N'NUL'
    fetch next from principal_databases into @database_name
end
close principal_databases
deallocate principal_databases

-- T-SQL文終了 --

2014年2月4日火曜日

[Lync] ラボ環境でPBXを利用するには

AsteriskNOWとX-Liteを使うことで、Lync Server 2010 / 2013のラボ環境で、PBXを利用した機能検証・テストを手軽に行うことができるようになります。導入・設定までの詳細な手順は、以下の記事が参考になります。

Series: Exchange 2013 and Lync 2013 Integration with AsteriskNOW PBX Pt. 1
Series: Exchange 2013 and Lync 2013 Integration with AsteriskNOW PBX Pt. 2
Series: Exchange 2013 and Lync 2013 Integration with AsteriskNOW PBX Pt. 3

以下、記事に沿ってHyper-V上のラボ環境に導入・設定してみて気づいた注意点です。

  • 記事ではメモリ1GBとありますが、512MBでも設定後の状態で約半分空きがあるので、軽めの利用であればそれで十分そうです。

  • ベースがCentOSであるため、Hyper-Vの統合サービスを簡単に導入できます。それにより、レガシーでないネットワークアダプターも利用できるようになります。

  • インストール時には、ネットワークアダプターがないとインストールが中断されてしまうため、最低1つのレガシーネットワークアダプターが必要です。Hyper-Vの統合サービスを導入してレガシーでないネットワークアダプターを追加した後は、レガシーネットワークアダプターは削除しても問題ありません。

  • レガシーネットワークアダプターはインストール時にeth0として認識され、削除された後もeth0が他のネットワークアダプターに割り当てられることはありません。私はそれが気になったので、以下のファイルでMACアドレスが指定されている個所を編集し、eth0の割り当てを変えました。
    /etc/udev/rules.d/70-persistent-net.rules
    /etc/sysconfig/network-scripts/ifcfg-eth0

  • 私の場合、記事通りの設定ではSIPがTCPでListenしませんでした。記事のコメント欄でも報告されていますが、/etc/asterisk/sip_custom.confにtcpenabled=yesを追加してサービスを再起動したところ、TCPでListenされるようになりました。