m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

プローブURLでどんなヘッダー投げているか確認

プローブURLって

どんなことするのかわからないので・・・

ドキュメントの情報としては

https://developer.apple.com/documentation/devicemanagement/vpn/vpn/ondemandruleselement/actionparameters?changes=latest_minor

An HTTP or HTTPS (preferred) URL to probe, using a GET request. If the URL's hostname cannot be resolved, if the server is unreachable, or if the server does not respond with a 200 HTTP status code, a VPN connection is established in response. Note: This key is valid only if the value of DomainAction is ConnectIfNeeded.

200OK返せとか、200OK以外返して判断するみたいなのであまり 仕組みについては細かく言及していない感じ

ググってみたところ 以下より抜粋
無線LAN - ネットワークエンジニアを目指して 無線LAN - ネットワークエンジニアを目指して

とのこと

うーーーーーーーーーーーーーん VPN通信可能チェック用の簡易APIと考えれば良いのか・・・

今回、実際のプローブレスポンスはできなくとも似た感じの挙動で対応できれば問題ないからよいかな

iphone側でGETリクエストで送信するのでURLを工夫してVPNからの接続検査を制御する感じになるのか・・・ 実際にどんなヘッダーが来るのかも気になったので簡単なコードで確認してみた

これ(Node.js の mocky を使用し スタブREST API を作成してみる

var mocky = require('mocky');
var fs = require('fs');
var url = require('url');
var querystring = require('querystring');

mocky.createServer([{
  // Users
  url: "/test1",
  method: 'get',
  res: function(req, res, callback) {
    //iconsole.log(req.socket);
    console.log(req.rawHeaders);
    callback(null, {
      status: 500,
      body: "error"
    });
  }
}
]).listen(4321);

出たログ

[mocksrv] [req 10] [Thu, 04 May 2023 08:54:11 GMT] method: GET url: /test1 req.body:
[
  'Host',
  '192.168.123.51:4321',
  'Accept',
  '*/*',
  'Accept-Language',
  'en-US,en;q=0.9',
  'Connection',
  'keep-alive',
  'Accept-Encoding',
  'gzip, deflate',
  'User-Agent',
  'nesessionmanager (unknown version) CFNetwork/1399 Darwin/22.1.0'
]

CFNetwork | Apple Developer Documentation

なるほど、、、ネットワークの構成変更時の処理だからこの機能で処理されるのか 内部的な意味は分かってないけど ひとまずはここまでとする

プローブリクエストは別途あらためて勉強しておこう