{{title AnyConnect ClientをCGIで使う}} !!!ただのメモだよ VPN接続/切断をブラウザーから利用したい? なんでわざわざそんなことする必要があるの? 理由なんてどうでもいい。 それが必要ならここ見といた方がいいよ と言う訳で、CGIから vpncli.exe を利用してVPN接続させてみたんだけど、上手くいかないのよね。 AnyConnect was not able to establish a connection to the specified secure gateway. Please try connecting again. こんなエラーが出るんよね。 *[AnyConnect VPN クライアントのトラブルシューティング ガイド - 一般的な問題|https://www.cisco.com/c/ja_jp/support/docs/security/asa-5500-x-series-next-generation-firewalls/100597-technote-anyconnect-00.html] ここ見て解決できる人は以降見る必要はないよ。 それと、コマンドラインから '''vpncli.exe -s < コマンド設定ファイル''' で正常に接続できない人は接続できるようにするのが先。 ということで、最初の問題点「AnyConnect was not able to establish a connection 〜」っていうエラーの解決策なんだけどね。 まずは、CGI環境から行こうか apache 2.4 + mod_proxy perl 5.24 とりあえずはこれだけ。 つまり、Windows上に構築したWebサーバーをプロキシーとしてVPN-LAN内の他のWebサーバーにアクセスするという悪巧みをする為に構築する環境なんだなw(こういう環境が必要な理由は書かない…書けないw) だから常にVPN接続が可能な環境なら繋ぎっぱなしでいいでしょうけど、まぁ普通は繋ぎっぱなしだと勝手に切断されちゃいますからね。必要な時に接続して、不要になったら切断する方がいいに決まってる。 という仕組み。 CGIの仕組みは単純にね、perl で system関数使って vpncli.exe 実行すればいいわけですよ。 なので、ソースとかは載せない。 でもねぇ、コマンドラインから接続できてもCGI経由だと繋がらないんよね。 この原因がさっぱりわからんかった。 色々と検証したことは伏せるけど、最終的にたどり着いたのは環境変数だった。 とりあえず、コマンドラインで設定されている環境変数で足りなさそうなのを殆ど入れたらVPN接続できるようになった。 で、不要なものを削除して絞り込んだ行くと・・・残ったのは SET SYSTEMDRIVE=C: これだけになったw そう、'''SYSTEMDRIVE''' 環境変数がCGIでは渡されない。しかも vpncli.exe で connect する為には必要な環境変数ということ。 それだけ。 忘れると困るので、ただのメモだしw {{comment}} |