キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
4228
閲覧回数
10
いいね!
2
返信

AnyConnectのVPN接続時の接続先名前解決と接続先IPのキャッシュについて

jtniscisco
Level 1
Level 1

お世話になっております。

AnyConnectでのVPN接続時、接続先のDNS名前解決とグローバルIPについての質問です。

 

DNSでAnyConnectの接続先FQDNに対して複数IPを登録し、DNSラウンドロビンで接続先分散を行っています。

以下の例ではvpn.abcd-dummy.jpというFQDNにx.x.x.xとy.y.y.yの2つのAレコードを登録しています。

 vpn.abcd-dummy.jp. 600 IN A x.x.x.x

 vpn.abcd-dummy.jp. 600 IN A y.y.y.y

 

質問①

DNSラウンドロビンなので、VPN起動の度に名前解決すれば応答IPは固定されないと思いますが、なぜか

Aさんはx.x.x.x、Bさんはy.y.y.yのように、ユーザ毎に常に同じ方に接続されるケースが多いようです。

nslookupでは応答IPは交互になっています。

AnyConnect内で接続先IPのキャッシュや接続履歴での優先度のような制御がされているのでしょうか?

 

質問②

DNS参照でx.x.x.xとy.y.y.yが交互に応答される前提で、偶発的に片系x.x.x.xへアクセス偏りが発生し

同時接続数上限まで達してしまった場合、かつ別系y.y.y.yには同時接続数の余裕がある場合、何度か

再接続すれば別系y.y.y.yに接続できると期待してよいでしょうか?

 

質問③

サーバメンテナンス時などに、一方のDNSレコードを一時的に削除して、片系運用を行おうとしています。

以下の例ではx.x.x.xのレコードを削除してy.y.y.yのレコードのみにしています。

 vpn.abcd-dummy.jp. 600 IN A y.y.y.y

DNSが更新されDNS参照でy.y.y.yが応答される前提で、x.x.x.x接続中のVPNを強制切断し再接続させた場合、

正しくDNS参照をしなおしてy.y.y.yに再接続されると期待してよいでしょうか?

 

よろしくお願い申し上げます。

2件の返信2

Akira Muranaka
Level 8
Level 8

こんばんは。

 

質問①については、Windowsの場合は以下ドキュメントの「この IE 設定は AnyConnect にどのように影響しますか。」に記載がありますが、AnyConnectの接続時は Windowsなら「WinInet」などOSが本来持つ機能を利用して動作してるようなので、DNSもWindows側の機能で処理してるのではないかな、と思います。また、下記で紹介するURLにも「client DNS resolver」と記載あるとおり、Client OSのDNS機能により左右されると記載あります。(製品設計的にもOS付属のデフォルト機能を利用したほうが、相性問題とか発生を気にしなくてよいですし。) そのため、ご利用のOSのDNS機能の動作や、CacheのTTLとかの影響で偏ってる可能性が高いのではと思います。


https://community.cisco.com/t5/-/-/ta-p/3108856


抜粋:
この IE 設定は AnyConnect にどのように影響しますか。
SVC と同様、AnyConnect は WinInet を使用してプリトンネル接続を行います。この接続は、初期認証とアップデートのダウンロードを実行するときに使用されます。WinInet は、Internet Explorer が内部で使用するプログラム インターフェイスです。


質問②は、要検証なきもしますが、片方が接続数溢れても、端末がキャッシュを持ってるとずっと同じIPに接続しに行くと思うので、回復しないんじゃないかな、とおもいます。DNSラウンドロビンは簡単な仕組みなので、その限界の1つかと思います。

 

質問③も、要検証なきがしますが、端末が 再度Domain Lookupをしてくれるなら y.y.y.yに接続しなおしてくれるとおもいます。逆に端末側でキャッシュが残っていれば 接続してくれないと思います。そのため、これもDNSラウンドロビンを利用した場合の限界の1つかと思います。


端末側のDNS処理やキャッシュ処理の不確定要素により発生する質問①②③のトラブルを避け、複数ASAで公平にセッションを分散するには、「VPNロードバランシング」という より高度な機能をASAは持っているので、そちらを利用されたほうが良いかと思います。シスコさんのパフォーマンスや設計ガイドなどにもVPNロードバランシング利用を案内する記事が多いです。こちらの利用のほうが一般的でスケールするかと思います。ご検討ください。
https://community.cisco.com/t5/-/-/ta-p/4061565#toc-hId-1487317205

https://www.cisco.com/c/ja_jp/support/docs/security/anyconnect-secure-mobility-client/215331-anyconnect-implementation-and-performanc.html#anc14

https://qiita.com/tatskoba27/items/7133fd9957106e97db8b


以下URLのデザイン例紹介に記載ありますが、DNS RoundRobinは偏りの原因になると記載あるので、仮に当方式を利用する場合は、このデメリットも考慮の上 利用が必要のようです。

https://www.cisco.com/c/en/us/td/docs/security/asa/misc/anyconnect-faq/anyconnect-faq.html

Using DNS to Scale Out Your Remote Access VPN Deployment

Cons:
May not give equal load-balancing result. It will depend on the client DNS resolver, the DNS filtering/caching policies of service providers, and so on.

 

ご参考になれば!

詳細な回答と貴重なアドバイス、ありがとうございます。

たいへん参考になりました。

 

クライアントは全てWindows10を利用しているので、OSの動作の方も調べてみようと思います。

キャッシュクリアの可否や方法にしてもOS依存になりそうですね。

 

実はDNSラウンドロビンで登録してある接続先はDR対策も含めて東日本/西日本で分散しており、東日本/西日本は

それぞれで複数ASAを並べたロードバランス構成を組んでいます。

これを機に、DNSラウンドロビンのような陳腐な分散ではなく、GSLB(広域負荷分散)などもっと高度な構成を

検討する流れに持っていきたいと考えています。

 

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