OpenVPNマニュアルには、現在、次のように記載されています。

This is a partial list of options which can currently be pushed: --route, --route-gateway, --route-delay, --redirect-gateway, --ip-win32, --dhcp-option, --inactive, --ping, --ping-exit, --ping-restart, --setenv, --persist-key, --persist-tun, --echo, --comp-lzo, --socket-flags, --sndbuf, --rcvbuf

しかし、クライアントにプッシュできるオプションの完全なリストを取得するにはどうすればよいですか?

answer

一般的な方法は、コードを調べることです。

init.cのメソッドpull_permission_maskは、有効なフラグのリストが含まれています(現在の2.3リリースでここに引用されています)。

unsigned int flags =
      OPT_P_UP
    | OPT_P_ROUTE_EXTRAS
    | OPT_P_SOCKBUF
    | OPT_P_SOCKFLAGS
    | OPT_P_SETENV
    | OPT_P_SHAPER
    | OPT_P_TIMER
    | OPT_P_COMP
    | OPT_P_PERSIST
    | OPT_P_MESSAGES
    | OPT_P_EXPLICIT_NOTIFY
    | OPT_P_ECHO
    | OPT_P_PULL_MODE
    | OPT_P_PEER_ID;

--route-nopullクライアント側でが設定されていない場合、現在、次のフラグが追加で受け入れられます。

flags |= (OPT_P_ROUTE | OPT_P_IPWIN32);

次に、これをoptions.cのオプションと照合する必要があります上記のフラグの1つが含まれている各オプションは、VERIFY_PERMISSION理論的にはクライアントにプッシュできます。もちろん、comp-lzoと同様に問題が発生する可能性があります

例として、options.cの次のスニペットを参照してください。

else if (streq (p[0], "topology") && p[1])
    {
      VERIFY_PERMISSION (OPT_P_UP);
      options->topology = parse_topology (p[1], msglevel);
    }

OPT_P_UP上記のフラグのリストにあるため、「トポロジ」がクライアントにプッシュされる場合があります。