OpenVPN手册目前仅说明:
这是当前可以推送的选项的部分列表:--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
但是我如何获得可以推送给客户的完整选项列表?
答案1
通用的方法是查看代码。
方法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);
现在我们必须将其与以下选项进行匹配选项.c理论上,每个带有上述标志的选项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
位于上述标志列表中,“拓扑”可能会被推送给客户端。