本参数根据OpenVPN 2.4.11 版本编写
一、通用选项
- –config file:从文件中读取配置选项。
- 说明:通过指定一个配置文件,OpenVPN 可以从该文件中读取各种设置,而不是在命令行中逐个指定所有选项。
- 示例:
openvpn --config myconfig.ovpn
,这里myconfig.ovpn
是一个包含 OpenVPN 各种配置选项的文件。
- –help:显示选项。
- 说明:当你不确定某个选项的具体作用或者需要查看所有可用选项时,可以使用这个参数来获取帮助信息。
- 示例:
openvpn --help
,执行后会显示 OpenVPN 的所有可用选项及其说明。
- –version:显示版权和版本信息。
- 说明:这个选项用于查看当前安装的 OpenVPN 版本以及版权相关信息。
- 示例:
openvpn --version
,输出会包含 OpenVPN 的版本号、构建日期以及版权声明等内容。
二、隧道选项
- –local host:本地主机名或 IP 地址。隐含
--bind
。- 说明:指定本地设备用于建立 VPN 连接的 IP 地址或主机名。当使用这个选项时,OpenVPN 会绑定到指定的本地地址。
- 示例:
openvpn --local 192.168.1.100
,这里将本地地址设置为192.168.1.100
。
- –remote host [port]:远程主机名或 IP 地址及端口号(可选)。
- 说明:指定要连接的远程 VPN 服务器的主机名或 IP 地址。如果不指定端口号,默认使用
1194
端口。 - 示例:
openvpn --remote vpn.example.com
或openvpn --remote vpn.example.com 1234
,前者使用默认端口,后者指定了端口号1234
。
- 说明:指定要连接的远程 VPN 服务器的主机名或 IP 地址。如果不指定端口号,默认使用
- –remote-random:如果指定了多个
--remote
选项,随机选择一个进行连接。- 说明:当有多个远程服务器可供选择时,OpenVPN 会随机选择一个服务器进行连接,增加连接的灵活性和可靠性。
- 示例:
openvpn --remote server1.example.com --remote server2.example.com --remote-random
,在server1.example.com
和server2.example.com
中随机选择一个进行连接。
- –remote-random-hostname:在远程 DNS 名称中添加随机字符串。
- 说明:这个选项可以增加连接的随机性,对于一些需要动态连接的场景可能有用。
- 示例:
openvpn --remote vpn.example.com --remote-random-hostname
,连接时会在vpn.example.com
的基础上添加随机字符串。
- –mode m:主要模式,
m
可以是'p2p'
(默认,点对点)或'server'
。- 说明:设置 OpenVPN 的运行模式。如果是
p2p
模式,通常用于两个端点之间的直接连接;如果是server
模式,则作为服务器运行,接受多个客户端的连接。 - 示例:
openvpn --mode server
,将 OpenVPN 配置为服务器模式。
- 说明:设置 OpenVPN 的运行模式。如果是
- –proto p:使用协议
p
与对等方通信。p
可以是udp
(默认)、tcp-server
或tcp-client
。- 说明:指定用于建立 VPN 连接的传输协议。
udp
通常速度较快但可能不太稳定;tcp
在某些网络环境下可能更可靠。 - 示例:
openvpn --proto tcp-client
,使用 TCP 作为客户端连接协议。
- 说明:指定用于建立 VPN 连接的传输协议。
- –proto-force p:在连接配置文件列表中仅考虑协议
p
。p
可以是udp6
、tcp6-server
或tcp6-client
(IPv6)。- 说明:强制使用特定的协议进行连接,特别是对于 IPv6 环境下的特定协议需求。
- 示例:
openvpn --proto-force tcp6-client
,强制使用 IPv6 的 TCP 客户端协议进行连接。
- –connect-retry n [m]:对于客户端,在连接重试之间等待
n
秒(默认 = 5)。在重复重试时,等待时间呈指数增长,最大为m
(默认 = 300)。- 说明:当客户端连接失败时,指定重试的时间间隔和最大等待时间。有助于在网络不稳定的情况下自动尝试重新连接。
- 示例:
openvpn --connect-retry 10 60
,表示初始重试间隔为 10 秒,最大等待时间为 60 秒。
- –connect-retry-max n:最大连接尝试重试次数,默认无限。
- 说明:设置客户端连接重试的最大次数,防止无限重试。
- 示例:
openvpn --connect-retry-max 10
,表示最多尝试连接 10 次。
- –http-proxy s p [up] [auth]:通过位于地址
s
和端口p
的 HTTP 代理连接到远程主机。如果代理需要身份验证,up
是一个包含用户名/密码的文件(在两行上),或者是stdin
以从控制台提示。如果代理需要 NTLM 身份验证,则添加auth='ntlm'
。
- 说明:当需要通过 HTTP 代理连接到远程 VPN 服务器时使用这个选项。可以指定代理的地址、端口以及身份验证信息。
- 示例:
openvpn --http-proxy proxy.example.com 8080 myauthfile.txt
,这里通过proxy.example.com
的8080
端口进行连接,并从myauthfile.txt
文件中读取代理的用户名和密码。
- –http-proxy s p ‘auto[-nct]’:与上述指令类似,但自动确定身份验证方法,并在需要时自动查询用户名/密码。
auto-nct
禁用弱代理身份验证方法。
- 说明:自动检测代理的身份验证方法,更加方便使用代理进行连接。
- 示例:
openvpn --http-proxy proxy.example.com 8080 'auto'
,自动检测代理的身份验证方法并进行连接。
- –http-proxy-option type [parm]:设置扩展 HTTP 代理选项。可以重复设置多个选项。
VERSION version
(默认 = 1.0),AGENT user-agent
。
- 说明:用于设置更高级的 HTTP 代理选项,如指定代理的版本或用户代理字符串。
- 示例:
openvpn --http-proxy-option VERSION 2.0 --http-proxy-option AGENT 'MyCustomAgent'
,设置代理版本为 2.0 并指定用户代理为MyCustomAgent
。
- –socks-proxy s [p] [up]:通过位于地址
s
和端口p
(默认端口 = 1080)的 Socks5 代理连接到远程主机。如果代理需要身份验证,up
是一个包含用户名/密码的文件(在两行上),或者是stdin
以从控制台提示。
- 说明:与
--http-proxy
类似,但用于通过 Socks5 代理进行连接。 - 示例:
openvpn --socks-proxy socks.example.com myauthfile.txt
,通过socks.example.com
的默认端口(1080)进行连接,并从myauthfile.txt
文件中读取代理的用户名和密码。
- –socks-proxy-retry:在 Socks 代理错误时无限重试。
- 说明:当使用 Socks 代理连接失败时,自动不断重试,直到连接成功。
- 示例:
openvpn --socks-proxy socks.example.com --socks-proxy-retry
,使用 Socks 代理并在出错时无限重试。
- –resolv-retry n:如果
--remote
的主机名解析失败,在失败前重试解析n
秒(默认禁用)。设置n="infinite"
以无限重试。
- 说明:当无法解析远程服务器的主机名时,指定重试解析的时间。有助于在 DNS 出现问题时自动尝试重新解析。
- 示例:
openvpn --resolv-retry 60
,表示如果主机名解析失败,重试解析 60 秒。
- –float:允许远程更改其 IP 地址/端口,例如通过 DHCP(如果未使用
--remote
,这是默认设置)。
- 说明:在某些动态网络环境下,允许远程服务器的 IP 地址或端口发生变化。
- 示例:
openvpn --float
,启用此功能以适应动态网络环境。
- –ipchange cmd:在远程 IP 地址初始设置或更改时运行命令
cmd
——执行方式为:cmd ip-address port#
。
- 说明:当远程服务器的 IP 地址或端口发生变化时,可以执行指定的命令。例如,可以通知其他程序或进行一些特定的配置调整。
- 示例:
openvpn --ipchange 'notify_script.sh %IP% %PORT%'
,这里当远程 IP 地址或端口变化时,执行notify_script.sh
脚本,并将新的 IP 地址和端口作为参数传递给脚本。
- –port port:用于本地和远程的 TCP/UDP 端口号。
- 说明:指定一个特定的端口号用于 VPN 连接,本地和远程都使用这个端口。
- 示例:
openvpn --port 1234
,将 VPN 连接的端口设置为1234
。
- –lport port:本地的 TCP/UDP 端口号(默认 = 1194)。隐含
--bind
。
- 说明:专门指定本地设备用于接收连接的端口号。如果不指定,默认使用
1194
端口。 - 示例:
openvpn --lport 5678
,将本地端口设置为5678
。
- –rport port:远程的 TCP/UDP 端口号(默认 = 1194)。
- 说明:指定远程服务器的端口号。如果不指定,默认使用
1194
端口。 - 示例:
openvpn --rport 4567
,将远程端口设置为4567
。
- –bind:绑定到本地地址和端口。(如果未使用
--proto tcp-client
或--http-proxy
或--socks-proxy
,这是默认设置)。
- 说明:将 OpenVPN 绑定到指定的本地地址和端口,以便接收和发送数据。
- 示例:
openvpn --bind 192.168.1.100:1234
,绑定到192.168.1.100
地址的1234
端口。
- –nobind:不绑定到本地地址和端口。
- 说明:与
--bind
相反,不将 OpenVPN 绑定到特定的本地地址和端口,让系统自动选择可用的地址和端口。 - 示例:
openvpn --nobind
,不进行绑定操作。
- –dev tunX|tapX:
tun/tap
设备(X
可以省略以使用动态设备)。
- 说明:指定要使用的虚拟网络设备类型,可以是
tun
(网络隧道)或tap
(以太网桥接)。如果省略X
,则由系统自动分配一个设备名称。 - 示例:
openvpn --dev tun0
,使用名为tun0
的隧道设备。
- –dev-type dt:我们正在使用哪种设备类型?(
dt
=tun
或tap
)仅当与--dev
一起使用的tun/tap
设备不以“tun”或“tap”开头时才使用此选项。
- 说明:当虚拟设备的名称不明确表示其类型时,可以使用这个选项明确指定设备类型。
- 示例:
openvpn --dev myvpndevice --dev-type tun
,指定名为myvpndevice
的设备为隧道设备。
- –dev-node node:显式设置设备节点,而不是使用
/dev/net/tun
、/dev/tun
、/dev/tap
等。
- 说明:可以直接指定虚拟设备的节点名称,而不是使用默认的设备路径。
- 示例:
openvpn --dev-node /dev/customvpnnode
,使用特定的设备节点。
- –lladdr hw:设置
tap
设备的链路层地址。
- 说明:仅适用于
tap
设备,用于设置设备的物理地址(MAC 地址)。 - 示例:
openvpn --dev tap0 --lladdr 00:11:22:33:44:55
,设置tap0
设备的 MAC 地址为00:11:22:33:44:55
。
- –topology t:设置
--dev tun
的拓扑结构:'net30'
、'p2p'
或'subnet'
。
- 说明:对于
tun
设备,可以设置不同的拓扑结构,以适应不同的网络需求。 - 示例:
openvpn --dev tun0 --topology net30
,将tun0
设备的拓扑结构设置为net30
。
- –ifconfig l rn:对于 TUN:将设备配置为使用 IP 地址
l
作为本地端点,rn
作为远程端点。在另一个对等方上,l
和rn
应该交换。l
和rn
必须是对等方都未使用的子网之外的私有地址。对于 TAP:将设备配置为使用 IP 地址l
作为本地端点,rn
作为子网掩码。
- 说明:指定虚拟网络设备的本地和远程 IP 地址(对于 TUN)或本地 IP 地址和子网掩码(对于 TAP)。
- 示例:
openvpn --ifconfig 10.0.0.1 10.0.0.2
,对于 TUN 设备,将本地 IP 设置为10.0.0.1
,远程 IP 设置为10.0.0.2
。
- –ifconfig-ipv6 l r:配置设备使用 IPv6 地址
l
作为本地端点(作为/64),r
作为远程端点。
- 说明:用于设置 IPv6 环境下虚拟设备的本地和远程 IP 地址。
- 示例:
openvpn --ifconfig-ipv6 2001:db8::1 2001:db8::2
,设置 IPv6 地址。
- –ifconfig-noexec:不要实际执行
ifconfig/netsh
命令,而是通过环境变量将--ifconfig
参数传递给脚本。
- 说明:在某些情况下,可能不希望直接执行网络配置命令,而是将参数传递给脚本进行处理。
- 示例:
openvpn --ifconfig-noexec
,启用此功能。
- –ifconfig-nowarn:如果连接的此侧的
--ifconfig
选项与远程侧不匹配,不要警告。
- 说明:防止在本地和远程的网络配置不匹配时显示警告信息。
- 示例:
openvpn --ifconfig-nowarn
,忽略不匹配的警告。
- –route network [netmask] [gateway] [metric]:在连接建立后将路由添加到路由表中。可以指定多个路由。网掩码默认值:255.255.255.255;网关默认值:从
--route-gateway
或--ifconfig
中获取;通过留空或设置为“nil”来指定默认值。
- 说明:添加一条路由到系统的路由表中,以便将特定的网络流量通过 VPN 进行路由。可以指定网络地址、子网掩码、网关和路由度量。
- 示例:
openvpn --route 192.168.2.0 255.255.255.0
,添加一条路由,将目标为192.168.2.0/24
的网络流量通过 VPN 进行路由。
- –route-ipv6 network/bits [gateway] [metric]:在连接建立后将 IPv6 路由添加到路由表中。可以指定多个路由。网关默认值:从
--ifconfig-ipv6
中的’remote’获取。
- 说明:与
--route
类似,但用于添加 IPv6 路由。 - 示例:
openvpn --route-ipv6 2001:db8::/64
,添加一个 IPv6 路由。
- –route-gateway gw|‘dhcp’:指定用于
--route
的默认网关。
- 说明:为通过
--route
添加的路由指定默认网关。可以是一个具体的 IP 地址或使用'dhcp'
表示通过 DHCP 获取网关。 - 示例:
openvpn --route-gateway 192.168.1.1
,指定192.168.1.1
为默认网关。
- –route-metric m:指定用于
--route
的默认度量值。
- 说明:设置通过
--route
添加的路由的度量值,用于路由选择的优先级判断。 - 示例:
openvpn --route-metric 10
,将路由度量值设置为 10。
- –route-delay n [w]:连接初始化后延迟
n
秒再添加路由(可以为 0)。如果未指定,路由将在tun/tap
打开后立即添加。在 Windows 上,等待最多w
秒让 TUN/TAP 适配器启动。
- 说明:可以延迟添加路由的时间,以便在特定的时间点或等待某些条件满足后再进行路由设置。
- 示例:
openvpn --route-delay 10
,延迟 10 秒添加路由。
- –route-up cmd:在添加路由后运行命令
cmd
。
- 说明:当路由添加完成后,可以执行一个指定的命令,例如进行一些额外的配置或通知其他程序。
- 示例:
openvpn --route-up 'notify_routes_added.sh'
,在添加路由后执行notify_routes_added.sh
脚本。
- –route-pre-down cmd:在删除路由之前运行命令
cmd
。
- 说明:在关闭 VPN 连接并删除路由之前,可以执行一个指定的命令进行一些清理工作。
- 示例:
openvpn --route-pre-down 'cleanup_routes.sh'
,在删除路由前执行cleanup_routes.sh
脚本。
- –route-noexec:不要自动添加路由。而是通过环境变量将路由传递给
--route-up
脚本。
- 说明:不自动添加路由,而是将路由信息传递给通过
--route-up
指定的脚本,由脚本决定如何处理路由。 - 示例:
openvpn --route-noexec
,启用此功能。
- –route-nopull:当与
--client
或--pull
一起使用时,接受服务器推送的选项,但不包括路由和 DHCP 选项。
- 说明:在客户端模式下,控制是否接受服务器推送的路由和 DHCP 选项。
- 示例:
openvpn --client --route-nopull
,客户端连接时不接受服务器推送的路由和 DHCP 选项。
- –allow-pull-fqdn:允许客户端从服务器拉取用于
--ifconfig
、--route
和--route-gateway
的 DNS 名称。
- 说明:在某些情况下,允许客户端从服务器获取用于网络配置的 DNS 名称,增强灵活性。
- 示例:
openvpn --allow-pull-fqdn
,启用此功能。
- –redirect-gateway [flags]:自动执行路由命令以将所有外出 IP 流量通过 VPN 重定向。添加
local
标志如果两个 OpenVPN 服务器直接通过公共子网连接,例如通过 WiFi。添加def1
标志以使用 0.0.0.0/1 和 128.0.0.0/1 而不是 0.0.0.0/0 设置默认路由。添加bypass-dhcp
标志以添加直接路由到 DHCP 服务器,绕过隧道。添加bypass-dns
标志以类似方式绕过隧道用于 DNS。
- 说明:用于将所有的网络流量通过 VPN 进行路由,并且可以通过不同的标志进行一些特定的配置调整。
- 示例:
openvpn --redirect-gateway local
,当两个服务器通过本地子网连接时使用此选项。
- –redirect-private [flags]:与
--redirect-gateway
类似,但省略实际更改默认网关。在推送私有子网时很有用。
- 说明:类似于
--redirect-gateway
,但不更改默认网关,适用于特定的网络环境。 - 示例:
openvpn --redirect-private
,在需要推送私有子网时使用。
- –client-nat snat|dnat network netmask alias:在客户端添加一对一 NAT 规则。
- 说明:在客户端上设置网络地址转换(NAT)规则,用于特定的网络配置需求。
- 示例:
openvpn --client-nat snat 192.168.3.0 255.255.255.0 10.0.0.1
,在客户端上设置源地址转换规则。
- –push-peer-info:(仅客户端)将客户端信息推送到服务器。
- 说明:客户端可以将自身的一些信息推送给服务器,以便服务器进行更好的管理和配置。
- 示例:
openvpn --push-peer-info
,客户端启用此功能。
- –setenv name value:设置自定义环境变量以传递给脚本。
- 说明:可以设置自定义的环境变量,这些变量可以在执行脚本时使用。
- 示例:
openvpn --setenv MY_VAR value123
,设置名为MY_VAR
的环境变量为value123
。
- –setenv FORWARD_COMPATIBLE 1:放宽配置文件语法检查,以允许忽略未来 OpenVPN 版本的指令。
- 说明:使 OpenVPN 在解析配置文件时更加宽松,忽略一些可能是未来版本的指令,以保持兼容性。
- 示例:
openvpn --setenv FORWARD_COMPATIBLE 1
,启用此功能。
- –ignore-unkown-option opt1 opt2…:放宽配置文件语法。允许这些选项在未知时被忽略。
- 说明:当配置文件中出现未知选项时,可以选择忽略这些选项,而不是报错。
- 示例:
openvpn --ignore-unkown-option option1 option2
,指定要忽略的未知选项。
- –script-security level:其中
level
可以是:
- 0 - 严格不调用外部程序。
- 1 -(默认)仅调用内置程序,如
ifconfig
。 - 2 - 允许调用内置程序和脚本。
- 3 - 允许通过环境变量将密码传递给脚本。
- 说明:用于控制 OpenVPN 在执行脚本时的安全级别,限制外部程序的调用和密码的传递方式。
- 示例:
openvpn --script-security 2
,允许调用内置程序和脚本。
- –shaper n:将输出限制为每秒
n
字节到对等方。
- 说明:可以限制发送到对等方的数据速率,用于带宽控制。
- 示例:
openvpn --shaper 1024
,将输出限制为每秒 1024 字节。
- –keepalive n m:用于在服务器模式下设置超时的辅助选项。每
n
秒发送一次 ping,在m
秒内未收到 ping 时重新启动。
- 说明:在服务器模式下,用于保持连接的活性,通过定期发送 ping 消息并在超时未收到响应时进行重新启动操作。
- 示例:
openvpn --keepalive 10 60
,每 10 秒发送一次 ping,在 60 秒内未收到 ping 时重新启动。
- –inactive n [bytes]:在
tun/tap
设备上n
秒无活动或产生的总输入/输出字节数小于bytes
时退出。
- 说明:可以根据设备的活动情况或字节传输量来自动退出 OpenVPN,用于一些特定的场景,如节省资源或自动管理连接。
- 示例:
openvpn --inactive 300 1024
,如果在 300 秒内tun/tap
设备无活动或总字节数小于 1024,则退出。
- –ping-exit n:如果
n
秒内未收到远程 ping,则退出。
- 说明:设置一个超时时间,在未收到远程 ping 消息时自动退出。
- 示例:
openvpn --ping-exit 60
,如果 60 秒内未收到远程 ping,则退出。
- –ping-restart n:如果
n
秒内未收到远程 ping,则重新启动。
- 说明:与
--ping-exit
类似,但在超时未收到远程 ping 时进行重新启动操作,而不是退出。 - 示例:
openvpn --ping-restart 60
,如果 60 秒内未收到远程 ping,则重新启动。
- –ping-timer-rem:仅当我们有远程地址时才运行
--ping-exit/--ping-restart
计时器。
- 说明:控制
--ping-exit
和--ping-restart
计时器的触发条件,仅在有远程地址时才生效。 - 示例:
openvpn --ping-timer-rem
,启用此功能。
- –ping n:每
n
秒通过 TCP/UDP 端口向远程发送一次 ping。
- 说明:设置向远程发送 ping 消息的时间间隔,用于检测连接的活性。
- 示例:
openvpn --ping 15
,每 15 秒向远程发送一次 ping。
- –multihome:配置多宿主 UDP 服务器。
- 说明:在服务器端,可以配置为多宿主模式,以便接受来自不同网络接口的连接。
- 示例:
openvpn --mode server --multihome
,在服务器模式下启用多宿主功能。
- –fast-io:(实验性)优化 TUN/TAP/UDP 写入。
- 说明:这是一个实验性的选项,用于优化数据的写入操作,可能会提高性能,但也可能带来一些不稳定因素。
- 示例:
openvpn --fast-io
,尝试启用此功能。
- –remap-usr1 s:在收到 SIGUSR1 信号时,重新映射信号(
s='SIGHUP'
或'SIGTERM'
)。
- 说明:可以在接收到特定信号时重新映射信号的处理方式,用于定制化的信号处理逻辑。
- 示例:
openvpn --remap-usr1 SIGHUP
,当收到 SIGUSR1 信号时,将其重新映射为 SIGHUP 信号进行处理。
- –persist-tun:在收到 SIGUSR1 或
--ping-restart
时保持tun/tap
设备打开。
- 说明:即使收到特定的信号,也保持虚拟网络设备打开,避免频繁的设备重新打开操作。
- 示例:
openvpn --persist-tun
,启用此功能。
- –persist-remote-ip:在收到 SIGUSR1 或
--ping-restart
时保持远程 IP 地址。
- 说明:在特定情况下保持远程 IP 地址不变,避免重新连接时的地址变化。
- 示例:
openvpn --persist-remote-ip
,启用此功能。
- –persist-local-ip:在收到 SIGUSR1 或
--ping-restart
时保持本地 IP 地址。
- 说明:与
--persist-remote-ip
类似,保持本地 IP 地址不变。 - 示例:
openvpn --persist-local-ip
,启用此功能。
- –persist-key:在收到 SIGUSR1 或
--ping-restart
时不要重新读取密钥文件。
- 说明:避免在特定情况下重新读取密钥文件,提高性能和稳定性。
- 示例:
openvpn --persist-key
,启用此功能。
- –passtos:TOS(Type of Service)传递(仅适用于 IPv4)。
- 说明:在 IPv4 环境下,可以传递服务类型信息,用于网络流量的优先级处理。
- 示例:
openvpn --passtos
,启用此功能。
- –tun-mtu n:将
tun/tap
设备的 MTU 设置为n
,并从它推导 TCP/UDP MTU(默认 = 1500)。
- 说明:设置虚拟网络设备的最大传输单元(MTU)大小,影响数据传输的效率和性能。
- 示例:
openvpn --tun-mtu 1400
,将设备 MTU 设置为 1400。
- –tun-mtu-extra n:假设
tun/tap
设备在读取时可能返回比tun-mtu
大小多n
字节的数据(默认 TUN = 0,TAP = 32)。
- 说明:用于考虑设备在读取数据时可能超出预期的情况,设置额外的缓冲区大小。
- 示例:
openvpn --tun-mtu-extra 16
,设置额外的读取缓冲区大小为 16 字节。
- –link-mtu n:将 TCP/UDP 设备的 MTU 设置为
n
,并从它推导tun
设备的 MTU。
- 说明:与
--tun-mtu
相反,从 TCP/UDP 设备的 MTU 推导tun
设备的 MTU。 - 示例:
openvpn --link-mtu 1200
,设置 TCP/UDP 设备的 MTU 为 1200,并影响tun
设备的 MTU。
- –mtu-disc type:我们是否应该在 TCP/UDP 通道上进行路径 MTU 发现?
no
- 从不发送 DF(不分片)帧。maybe
- 使用每个路由的提示。yes
- 始终发送 DF(不分片)帧。- 说明:用于控制是否进行路径最大传输单元(MTU)发现,以适应不同的网络环境和需求。
- 示例:
openvpn --mtu-disc maybe
,根据每个路由的提示进行路径 MTU 发现。
- –mtu-test:通过实际测量和报告 MTU。
- 说明:用于测试和报告网络的 MTU 大小,以便进行优化和故障排除。
- 示例:
openvpn --mtu-test
,进行 MTU 测试。
- –fragment max:启用内部数据报分片,以便没有大于
max
字节的 UDP 数据报被发送。每个数据报增加 4 字节的开销。
- 说明:在需要时对数据进行分片,以适应网络的限制,但会增加一些开销。
- 示例:
openvpn --fragment 1024
,设置最大分片大小为 1024 字节。
- –mssfix [n]:设置 TCP MSS 的上限,默认值为
tun-mtu
大小或--fragment max
值,取两者中较低的值。
- 说明:用于调整 TCP 最大段大小(MSS),以适应 VPN 连接的 MTU 设置。
- 示例:
openvpn --mssfix 1200
,将 TCP MSS 设置为 1200 字节。
- –sndbuf size:设置 TCP/UDP 发送缓冲区大小。
- 说明:调整发送数据的缓冲区大小,影响数据发送的效率和性能。
- 示例:
openvpn --sndbuf 65536
,设置发送缓冲区大小为 65536 字节。
- –rcvbuf size:设置 TCP/UDP 接收缓冲区大小。
- 说明:与
--sndbuf
类似,调整接收数据的缓冲区大小。 - 示例:
openvpn --rcvbuf 65536
,设置接收缓冲区大小为 65536 字节。
- –mark value:用值
value
标记发送的加密数据包。标记值可以在策略路由和数据包过滤规则中匹配。
- 说明:为数据包设置一个标记值,以便在网络中进行特定的路由或过滤处理。
- 示例:
openvpn --mark 123
,为数据包设置标记值为 123。
- –txqueuelen n:将
tun/tap
的 TX 队列长度设置为n
(仅适用于 Linux)。
- 说明:在 Linux 系统上,设置
tun/tap
设备的发送队列长度。 - 示例:
openvpn --txqueuelen 100
,设置发送队列长度为 100。
- –memstats file:将实时使用统计信息写入内存映射二进制文件。
- 说明:用于记录 OpenVPN 的内存使用情况和其他运行时统计信息到指定的文件中,方便进行性能分析和故障排查。
- 示例:
openvpn --memstats stats.bin
,将统计信息写入名为stats.bin
的文件。
- –mlock:禁用分页——确保密钥材料和隧道数据永远不会写入磁盘。
- 说明:这个选项可以防止关键的加密材料和隧道数据被交换到磁盘上,提高安全性。
- 示例:
openvpn --mlock
,启用此功能。
- –up cmd:在成功打开
tun
设备后运行命令cmd
。执行方式为:cmd tun/tap-dev tun-mtu link-mtu ifconfig-local-ip ifconfig-remote-ip
(在--user
或--group
更改 UID/GID 之前)。
- 说明:在
tun
设备成功打开后执行指定的命令,可以用于进行一些额外的网络配置或通知其他程序。 - 示例:
openvpn --up 'my_setup_script.sh'
,在tun
设备打开后执行my_setup_script.sh
脚本。
- –up-delay:延迟
tun/tap
设备的打开以及可能的--up
脚本执行,直到与对等方建立 TCP/UDP 连接。
- 说明:可以延迟
tun/tap
设备的初始化和相关脚本的执行,直到与远程对等方建立连接,以确保在合适的时机进行配置。 - 示例:
openvpn --up-delay
,启用延迟功能。
- –down cmd:在
tun
设备关闭后运行命令cmd
。(在--user/--group
更改 UID/GID 和/或--chroot
之后)(命令参数与--up
选项相同)。
- 说明:在 VPN 连接关闭时执行指定的命令,用于进行清理工作或通知其他程序。
- 示例:
openvpn --down 'cleanup_script.sh'
,在tun
设备关闭后执行清理脚本。
- –down-pre:在
tun/tap
关闭之前运行--down
命令。
- 说明:在关闭
tun/tap
设备之前提前执行--down
命令中的操作。 - 示例:
openvpn --down-pre
,启用此功能。
- –up-restart:对于所有重新启动(包括由
--ping-restart
或 SIGUSR1 引起的重新启动),运行up/down
命令。
- 说明:确保在各种重新启动情况下都执行
up
和down
命令,保持配置的一致性。 - 示例:
openvpn --up-restart
,启用此功能。
- –user user:在初始化后将 UID 设置为
user
。
- 说明:在 OpenVPN 启动后,将进程的用户 ID 设置为指定的用户,用于权限控制。
- 示例:
openvpn --user myuser
,将运行 OpenVPN 的用户设置为myuser
。
- –group group:在初始化后将 GID 设置为
group
。
- 说明:与
--user
类似,将进程的组 ID 设置为指定的组。 - 示例:
openvpn --group mygroup
,将运行 OpenVPN 的组设置为mygroup
。
- –chroot dir:在初始化后切换到这个目录。
- 说明:将 OpenVPN 的运行环境切换到指定的目录,增强安全性。
- 示例:
openvpn --chroot /mychrootdir
,切换到指定的目录。
- –cd dir:在初始化之前切换到这个目录。
- 说明:在 OpenVPN 启动之前切换到指定的目录,可能用于加载特定的配置文件或资源。
- 示例:
openvpn --cd /mydir
,在启动前切换到指定目录。
- –daemon [name]:在初始化后成为守护进程。可选的
name
参数将作为程序名传递给系统日志记录器。
- 说明:使 OpenVPN 在后台以守护进程的方式运行,不占用终端窗口。可以指定一个名称用于日志记录。
- 示例:
openvpn --daemon myvpn
,以守护进程方式运行,并在日志中使用myvpn
作为程序名。
- –syslog [name]:输出到系统日志,但不成为守护进程。关于
name
参数的描述请参见--daemon
。
- 说明:将 OpenVPN 的日志输出到系统日志,但不成为守护进程,方便查看日志而不占用终端。
- 示例:
openvpn --syslog myvpnlog
,将日志输出到系统日志,并使用myvpnlog
作为标识。
- –inetd [name] [‘wait’|‘nowait’]:作为 inetd 或 xinetd 服务器运行。关于
name
参数的描述请参见--daemon
。
- 说明:可以在 inetd 或 xinetd 服务管理下运行 OpenVPN,通过指定不同的参数来控制等待行为。
- 示例:
openvpn --inetd myvpn 'wait'
,在 inetd 下运行,并等待连接。
- –log file:将日志输出到文件,该文件在打开时创建/截断。
- 说明:将 OpenVPN 的运行日志输出到指定的文件中,方便查看和分析。
- 示例:
openvpn --log myvpn.log
,将日志写入myvpn.log
文件。
- –log-append file:将日志追加到文件中,如果文件不存在则创建。
- 说明:与
--log
不同,这个选项会将日志追加到已有文件中,而不是创建新文件或截断旧文件。 - 示例:
openvpn --log-append myvpn_append.log
,将日志追加到指定文件。
- –suppress-timestamps:不要将时间戳记录到标准输出/标准错误输出。
- 说明:在输出日志时不显示时间戳,使日志更加简洁。
- 示例:
openvpn --suppress-timestamps
,禁用时间戳输出。
- –machine-readable-output:始终将时间戳、消息标志记录到标准输出/标准错误输出。
- 说明:以机器可读的格式输出日志信息,包括时间戳和消息标志,方便自动化处理。
- 示例:
openvpn --machine-readable-output
,启用此功能。
- –writepid file:将主进程 ID 写入文件。
- 说明:将 OpenVPN 的主进程 ID 写入指定的文件,方便其他程序进行监控或管理。
- 示例:
openvpn --writepid pidfile.txt
,将进程 ID 写入pidfile.txt
文件。
- –nice n:更改进程优先级(>0 = 降低,<0 = 提高)。
- 说明:调整 OpenVPN 进程的优先级,以影响系统资源的分配。
- 示例:
openvpn --nice -5
,提高进程优先级。
- –echo [parms…]:将参数回显到日志输出。
- 说明:可以将指定的参数输出到日志中,方便调试和查看配置信息。
- 示例:
openvpn --echo myparam1 myparam2
,将参数回显到日志。
- –verb n:将输出详细程度设置为
n
(默认 = 1):
- 0 - 除了严重错误外不输出任何内容。
- 1 - 启动信息 + 连接初始化消息 + 非致命加密和网络错误。
- 2、3 - 显示 TLS 协商和路由信息。
- 4 - 显示参数。
- 5 - 在控制台为每个从 TCP/UDP(大写)或
tun/tap
(小写)发送和接收的数据包显示RrWw
字符。 - 6 到 11 - 逐渐增加详细程度的调试消息。
- 说明:控制 OpenVPN 的日志输出详细程度,根据需要调整以获取不同级别的信息。
- 示例:
openvpn --verb 3
,设置日志详细程度为 3。
- –mute n:在同一类别中最多记录
n
个连续消息。
- 说明:用于限制同一类型的消息在日志中的重复输出数量,避免日志过于冗长。
- 示例:
openvpn --mute 5
,限制同一类别消息最多输出 5 个。
- –status file n:每
n
秒将操作状态写入文件。
- 说明:定期将 OpenVPN 的运行状态写入指定的文件,方便监控和管理。
- 示例:
openvpn --status status.txt 30
,每 30 秒将状态写入status.txt
文件。
- –status-version [n]:选择状态文件格式版本号。目前,
n
可以是 1、2 或 3(默认 = 1)。
- 说明:用于指定状态文件的格式版本,以适应不同的需求和兼容性要求。
- 示例:
openvpn --status-version 2
,选择状态文件格式版本 2。
- –disable-occ:禁用对等方之间的选项一致性检查。
- 说明:在某些情况下,可能不需要严格检查对等方之间的配置选项一致性,可以使用这个选项禁用检查。
- 示例:
openvpn --disable-occ
,禁用一致性检查。
- –gremlin mask:特殊的压力测试模式(仅用于调试)。
- 说明:用于进行特殊的压力测试和调试,不适合在正常运行环境中使用。
- 示例:
openvpn --gremlin 0xffff
,进行特定的压力测试。
- –compress alg:使用压缩算法
alg
。
- 说明:指定用于数据压缩的算法,以减少网络传输的数据量。
- 示例:
openvpn --compress lz4
,使用 LZ4 压缩算法。
- –comp-lzo:使用 LZO 压缩——对于不可压缩的数据可能会增加最多 1 字节/数据包。
- 说明:启用 LZO 压缩算法,在一定程度上减少数据传输量,但对于不可压缩的数据可能会有少量额外开销。
- 示例:
openvpn --comp-lzo
,启用 LZO 压缩。
- –comp-noadapt:在指定
--comp-lzo
时,不要使用自适应压缩。
- 说明:控制 LZO 压缩的行为,禁用自适应压缩功能。
- 示例:
openvpn --comp-lzo --comp-noadapt
,启用 LZO 压缩但不使用自适应压缩。
- –management ip port [pass]:在
ip:port
上启用一个 TCP 服务器来处理管理功能。pass
是一个密码文件或stdin
以从控制台提示。要在 Unix 域套接字上监听,请在ip
位置指定路径名,并使用unix
作为端口号。
- 说明:启用一个管理接口,允许通过 TCP 连接进行管理操作,如查询状态、控制连接等。可以指定密码文件或从控制台获取密码。
- 示例:
openvpn --management 127.0.0.1 7505 mypassfile.txt
,在本地地址上启用管理接口,并使用密码文件进行身份验证。
- –management-client:管理接口将作为 TCP 客户端连接到
ip/port
,而不是作为 TCP 服务器监听。
- 说明:使管理接口以客户端的方式连接到远程的管理服务器,而不是作为服务器监听连接。
- 示例:
openvpn --management-client 192.168.1.100:7505
,作为客户端连接到指定的管理服务器。
- –management-query-passwords:通过管理通道查询私钥和
auth-user-pass
密码。
- 说明:在管理接口中查询用于身份验证的密码信息。
- 示例:
openvpn --management-query-passwords
,启用此功能。
- –management-query-proxy:通过管理通道查询代理信息。
- 说明:在管理接口中查询代理配置信息。
- 示例:
openvpn --management-query-proxy
,查询代理信息。
- –management-query-remote:通过管理通道查询
--remote
指令。
- 说明:在管理接口中查询远程服务器的配置信息。
- 示例:
openvpn --management-query-remote
,查询远程服务器信息。
- –management-hold:以休眠状态启动 OpenVPN,直到管理接口的客户端明确启动它。
- 说明:使 OpenVPN 在启动时处于等待状态,等待管理接口的指令来启动实际的连接。
- 示例:
openvpn --management-hold
,启用休眠模式。
- –management-signal:当管理连接断开事件发生时发出 SIGUSR1 信号。
- 说明:在管理连接断开时发送特定的信号,以便进行相应的处理。
- 示例:
openvpn --management-signal
,启用信号发送功能。
- –management-forget-disconnect:当管理连接断开事件发生时忘记密码。
- 说明:在管理连接断开时清除保存的密码信息,提高安全性。
- 示例:
openvpn --management-forget-disconnect
,启用此功能。
- –management-up-down:向管理接口报告隧道的上线/下线事件。
- 说明:将隧道的连接状态变化通知给管理接口,方便监控和管理。
- 示例:
openvpn --management-up-down
,启用状态报告功能。
- –management-log-cache n:缓存
n
行日志文件历史记录以供管理通道使用。
- 说明:用于管理接口中缓存一定数量的日志记录,方便查看历史信息。
- 示例:
openvpn --management-log-cache 100
,缓存 100 行日志记录。
- –management-client-user u:当管理接口是 Unix 套接字时,仅允许用户
u
进行连接。
- 说明:限制管理接口的连接用户,提高安全性。
- 示例:
openvpn --management-client-user myuser
,仅允许myuser
用户连接管理接口。
- –management-client-group g:当管理接口是 Unix 套接字时,仅允许组
g
进行连接。
- 说明:与
--management-client-user
类似,限制连接管理接口的用户组。 - 示例:
openvpn --management-client-group mygroup
,仅允许mygroup
组的用户连接管理接口。
- –management-client-auth:赋予管理接口客户端在其客户端证书验证后负责验证客户端的责任。
- 说明:在管理接口中,使客户端在证书验证后负责进一步的客户端身份验证。
- 示例:
openvpn --management-client-auth
,启用此功能。
- –management-client-pf:管理接口客户端必须为每个连接的客户端指定一个数据包过滤器文件。
- 说明:要求管理接口的客户端为连接的客户端提供数据包过滤器文件,用于网络流量的过滤。
- 示例:
openvpn --management-client-pf
,启用此功能并要求提供过滤器文件。
- –plugin m [str]:加载插件模块
m
,并将str
作为参数传递给其初始化函数。
- 说明:可以加载外部插件来扩展 OpenVPN 的功能,通过指定插件模块名称和初始化参数来实现。
- 示例:
openvpn --plugin myplugin.so myparam
,加载名为myplugin.so
的插件,并传递参数myparam
。
三、多客户端服务器选项(当使用--mode server
时)
- –server network netmask:辅助选项,用于轻松配置服务器模式。
- 说明:简化服务器模式的配置,指定服务器监听的网络地址和子网掩码。
- 示例:
openvpn --mode server --server 10.0.0.0 255.255.255.0
,配置服务器监听10.0.0.0/24
网络。
- –server-ipv6 network/bits:配置 IPv6 服务器模式。
- 说明:用于在 IPv6 环境下配置服务器模式,指定服务器监听的 IPv6 网络地址和前缀长度。
- 示例:
openvpn --mode server --server-ipv6 2001:db8::/64
,配置 IPv6 服务器监听2001:db8::/64
网络。
- –server-bridge [IP netmask pool-start-IP pool-end-IP]:辅助选项,用于轻松配置以太网桥接服务器模式。
- 说明:这个选项用于快速设置以太网桥接模式的服务器,允许将多个客户端连接到同一个虚拟网络中,就像在一个本地以太网中一样。可以指定桥接的 IP 地址、子网掩码以及 IP 地址池的范围。
- 示例:
openvpn --mode server --server-bridge 192.168.100.1 255.255.255.0 192.168.100.100 192.168.100.200
,设置以太网桥接服务器,桥接 IP 为 192.168.100.1,子网掩码为 255.255.255.0,IP 地址池从 192.168.100.100 到 192.168.100.200。
- –push “option”:将配置文件选项推送到对等方,以便在远程执行。对等方必须在其配置文件中指定
--pull
。- 说明:服务器可以将特定的配置选项推送到客户端,使客户端自动应用这些选项。客户端需要使用
--pull
选项来接受服务器推送的选项。 - 示例:
openvpn --mode server --push "route 192.168.2.0 255.255.255.0"
,服务器将路由选项推送到客户端。
- 说明:服务器可以将特定的配置选项推送到客户端,使客户端自动应用这些选项。客户端需要使用
- –push-reset:对于特定的客户端实例,不继承全局推送列表。
- 说明:在某些情况下,可能不希望特定的客户端继承服务器的全局推送选项,可以使用这个选项重置推送列表。
- 示例:
openvpn --mode server --push-reset
,在服务器端为特定客户端禁用全局推送选项。
- –ifconfig-pool start-IP end-IP [netmask]:留出一个子网池,以便动态分配给连接的客户端。
- 说明:服务器可以配置一个 IP 地址池,当客户端连接时,从池中动态分配一个 IP 地址给客户端。可以指定地址池的范围和子网掩码(可选)。
- 示例:
openvpn --mode server --ifconfig-pool 10.0.0.100 10.0.0.200 255.255.255.0
,设置 IP 地址池从 10.0.0.100 到 10.0.0.200,子网掩码为 255.255.255.0。
- –ifconfig-pool-linear:(已过时)在
tun
模式下使用单个地址而不是/30 子网。与 Windows 客户端不兼容。- 说明:这个选项在旧版本中使用,但现在已不推荐使用,因为它与 Windows 客户端不兼容且功能有限。
- 示例:不建议使用此选项。
- –ifconfig-pool-persist file [seconds]:将
ifconfig-pool
数据持久化到文件,每隔seconds
秒进行一次(默认 = 600)。如果seconds
= 0,文件将被视为只读。- 说明:可以将 IP 地址池的数据保存到文件中,以便在服务器重启后恢复。可以指定保存的时间间隔,如果设置为 0,则文件被视为只读,不进行自动保存。
- 示例:
openvpn --mode server --ifconfig-pool-persist pool_data.txt 300
,每 300 秒将 IP 地址池数据保存到pool_data.txt
文件中。
- –ifconfig-ipv6-pool base-IP/bits:留出一个 IPv6 网络块,以便动态分配给连接的客户端。
- 说明:与
--ifconfig-pool
类似,但用于 IPv6 地址的分配。指定一个 IPv6 网络地址和前缀长度,作为客户端的 IP 地址池。 - 示例:
openvpn --mode server --ifconfig-ipv6-pool 2001:db8::/60
,设置 IPv6 地址池为2001:db8::/60
。
- 说明:与
- –ifconfig-push local remote-netmask:将
ifconfig
选项推送到远程,覆盖--ifconfig-pool
的动态分配。仅在客户端特定的配置文件中有效。
- 说明:在服务器端,可以针对特定的客户端推送特定的
ifconfig
选项,覆盖动态分配的 IP 地址。这个选项只能在客户端特定的配置文件中使用。 - 示例:
openvpn --mode server --ifconfig-push 10.0.0.50 255.255.255.0
,为特定客户端推送 IP 地址为 10.0.0.50 的配置。
- –ifconfig-ipv6-push local/bits remote:将
ifconfig-ipv6
选项推送到远程,覆盖--ifconfig-ipv6-pool
的分配。仅在客户端特定的配置文件中有效。
- 说明:与
--ifconfig-push
类似,但用于 IPv6 地址的推送。 - 示例:
openvpn --mode server --ifconfig-ipv6-push 2001:db8::50/64
,为特定客户端推送 IPv6 地址配置。
- –iroute network [netmask]:将子网路由到客户端。
- 说明:服务器可以将特定的子网路由到客户端,使客户端能够访问该子网中的资源。可以指定子网地址和子网掩码(可选)。
- 示例:
openvpn --mode server --iroute 192.168.3.0 255.255.255.0
,将192.168.3.0/24
子网路由到客户端。
- –iroute-ipv6 network/bits:将 IPv6 子网路由到客户端。仅设置内部路由。仅在客户端特定的配置文件中有效。
- 说明:与
--iroute
类似,但用于 IPv6 子网的路由。 - 示例:
openvpn --mode server --iroute-ipv6 2001:db8::/64
,将 IPv6 子网路由到客户端。
- –disable:客户端被禁用。仅在客户端特定的配置文件中有效。
- 说明:可以在服务器端禁用特定的客户端,使其无法连接。
- 示例:
openvpn --mode server --disable
,在服务器端禁用某个客户端。
- –client-cert-not-required:(已过时)不要求客户端证书,客户端将使用用户名/密码进行身份验证。
- 说明:这个选项在旧版本中使用,但现在已不推荐使用,因为安全性较低。建议使用更安全的身份验证方式。
- 示例:不建议使用此选项。
- –verify-client-cert [none|optional|require]:执行无、可选或强制的客户端证书验证。默认是要求客户端提供证书。
- 说明:用于控制服务器对客户端证书的验证级别,可以选择不验证、可选验证或强制验证。
- 示例:
openvpn --mode server --verify-client-cert optional
,设置服务器对客户端证书进行可选验证。
- –username-as-common-name:对于
auth-user-pass
身份验证,使用已认证的用户名作为通用名称,而不是客户端证书中的通用名称。
- 说明:在使用用户名/密码身份验证时,可以将用户名作为通用名称,而不是依赖客户端证书中的通用名称。
- 示例:
openvpn --mode server --username-as-common-name
,启用此功能。
- –auth-user-pass-verify cmd method:查询客户端的用户名/密码,并运行命令
cmd
进行验证。如果method='via-env'
,通过环境变量传递用户/密码;如果method='via-file'
,通过临时文件传递用户/密码。
- 说明:服务器可以通过执行特定的命令来验证客户端提供的用户名和密码,可以选择通过环境变量或临时文件传递这些信息。
- 示例:
openvpn --mode server --auth-user-pass-verify myauthscript.sh via-file
,使用指定的脚本通过临时文件验证用户名和密码。
- –auth-gen-token [lifetime]:生成一个随机身份验证令牌,并推送到每个客户端,替代密码。当使用基于一次性密码(OTP)的双因素身份验证机制且启用了
--reneg-*
选项时很有用。可选地,可以设置生成的令牌的生存期(以秒为单位)。
- 说明:可以生成随机的身份验证令牌,发送给客户端,用于增强安全性。可以指定令牌的生存期。
- 示例:
openvpn --mode server --auth-gen-token 3600
,生成生存期为 3600 秒的身份验证令牌。
- –opt-verify:如果连接的客户端的选项与服务器不兼容,客户端将被断开连接。
- 说明:确保客户端的配置选项与服务器兼容,提高系统的稳定性和安全性。
- 示例:
openvpn --mode server --opt-verify
,启用选项验证功能。
- –auth-user-pass-optional:允许未指定用户名/密码的客户端进行连接。
- 说明:在某些情况下,可能允许客户端在不提供用户名和密码的情况下连接,但这可能会降低安全性。
- 示例:
openvpn --mode server --auth-user-pass-optional
,允许无用户名/密码的客户端连接。
- –no-name-remapping:(已过时)允许通用名称和 X509 主题包含任何可打印字符。
- 说明:这个选项在旧版本中使用,但现在已不推荐使用,因为可能会带来安全风险。
- 示例:不建议使用此选项。
- –client-to-client:在内部路由客户端到客户端的流量。
- 说明:启用这个选项后,服务器可以在连接的客户端之间路由流量,使客户端能够直接通信。
- 示例:
openvpn --mode server --client-to-client
,启用客户端到客户端的路由。
- –duplicate-cn:允许具有相同通用名称的多个客户端同时连接。
- 说明:在某些情况下,可能需要允许多个客户端使用相同的通用名称进行连接。
- 示例:
openvpn --mode server --duplicate-cn
,允许相同通用名称的客户端连接。
- –client-connect cmd:在客户端连接时运行命令
cmd
。
- 说明:当有客户端连接到服务器时,可以执行一个特定的命令,例如进行一些记录或通知操作。
- 示例:
openvpn --mode server --client-connect myconnectscript.sh
,在客户端连接时执行指定的脚本。
- –client-disconnect cmd:在客户端断开连接时运行命令
cmd
。
- 说明:与
--client-connect
类似,但在客户端断开连接时执行命令。 - 示例:
openvpn --mode server --client-disconnect mydisconnectscript.sh
,在客户端断开连接时执行指定的脚本。
- –client-config-dir dir:用于自定义客户端配置文件的目录。
- 说明:可以指定一个目录,用于存放不同客户端的自定义配置文件,以便对不同的客户端进行个性化配置。
- 示例:
openvpn --mode server --client-config-dir /etc/openvpn/client_configs
,指定客户端配置文件目录。
- –ccd-exclusive:如果未找到自定义客户端配置,则拒绝连接。
- 说明:强制要求客户端必须有对应的自定义配置文件,否则拒绝连接,提高系统的可控性。
- 示例:
openvpn --mode server --ccd-exclusive
,启用此功能。
- –tmp-dir dir:临时目录,用于
--client-connect
返回文件和插件通信。
- 说明:指定一个临时目录,用于存储一些临时文件或进行插件之间的通信。
- 示例:
openvpn --mode server --tmp-dir /tmp/openvpn_tmp
,设置临时目录。
- –hash-size r v:将实际地址哈希表的大小设置为
r
,将虚拟地址表的大小设置为v
。
- 说明:用于调整 OpenVPN 内部使用的哈希表大小,以优化地址的存储和查找。
- 示例:
openvpn --mode server --hash-size 1024 2048
,设置实际地址哈希表大小为 1024,虚拟地址表大小为 2048。
- –bcast-buffers n:分配
n
个广播缓冲区。
- 说明:调整广播缓冲区的数量,影响广播数据包的处理能力。
- 示例:
openvpn --mode server --bcast-buffers 100
,分配 100 个广播缓冲区。
- –tcp-queue-limit n:最大 TCP 输出数据包队列长度。
- 说明:限制服务器端 TCP 输出数据包的队列长度,防止队列过长导致性能问题。
- 示例:
openvpn --mode server --tcp-queue-limit 1000
,设置最大队列长度为 1000。
- –tcp-nodelay:宏,设置服务器的 TCP_NODELAY 套接字标志,并推送到连接的客户端。
- 说明:启用这个选项后,服务器和客户端之间的 TCP 连接将禁用 Nagle 算法,减少延迟,但可能会增加网络流量。
- 示例:
openvpn --mode server --tcp-nodelay
,启用此功能。
- –learn-address cmd:运行命令
cmd
以验证客户端的虚拟地址。
- 说明:可以通过执行特定的命令来验证客户端的虚拟地址,确保地址的合法性。
- 示例:
openvpn --mode server --learn-address myaddressverifyscript.sh
,使用指定的脚本验证客户端虚拟地址。
- –connect-freq n s:允许在
s
秒内最多n
个新连接。
- 说明:限制服务器在一定时间内接受的新连接数量,防止过多的连接导致服务器过载。
- 示例:
openvpn --mode server --connect-freq 10 60
,表示在 60 秒内最多允许 10 个新连接。
- –max-clients n:允许最多
n
个同时连接的客户端。
- 说明:设置服务器允许的最大同时连接的客户端数量。
- 示例:
openvpn --mode server --max-clients 100
,允许最多 100 个客户端同时连接。
- –max-routes-per-client n:允许每个客户端最多
n
个内部路由。
- 说明:限制每个客户端可以配置的内部路由数量,防止客户端配置过多的路由导致服务器性能下降。
- 示例:
openvpn --mode server --max-routes-per-client 10
,每个客户端最多允许 10 个内部路由。
- –stale-routes-check n [t]:删除活动时间戳早于
n
秒的路由。每隔t
秒运行一次此检查(默认为n
)。
- 说明:定期检查并删除长时间未使用的路由,以保持系统的高效性。可以指定检查的时间间隔。
- 示例:
openvpn --mode server --stale-routes-check 3600 300
,表示删除活动时间超过 3600 秒的路由,每隔 300 秒检查一次。
- –explicit-exit-notify [n]:在 UDP 服务器模式下,在退出/重新启动时向连接的客户端发送[RESTART]命令。
n
= 1 - 重新连接到同一服务器,2 - 前进到下一个服务器,默认 = 1。
- 说明:当服务器退出或重新启动时,可以通知客户端进行相应的操作,如重新连接到同一服务器或尝试连接下一个服务器。
- 示例:
openvpn --mode server --explicit-exit-notify 2
,通知客户端在服务器退出时尝试连接下一个服务器。
- –port-share host port [dir]:当在 TCP 模式下运行时,将传入的 HTTPS 会话代理到位于
host:port
的 Web 服务器。dir
指定一个可选的目录,用于写入源 IP:端口数据。
- 说明:可以将传入的 HTTPS 流量代理到指定的 Web 服务器,同时可以指定一个目录用于记录源 IP 和端口信息。
- 示例:
openvpn --mode server --port-share mywebserver.com 443 /tmp/logdir
,将 HTTPS 流量代理到mywebserver.com
的 443 端口,并将日志写入/tmp/logdir
目录。
四、客户端选项(当连接到多客户端服务器时)
- –client:辅助选项,用于轻松配置客户端模式。
- 说明:这个选项可以快速设置 OpenVPN 以客户端模式运行,方便用户在连接到多客户端服务器时进行配置。
- 示例:
openvpn --client
,启用客户端模式。
- –auth-user-pass [up]:使用用户名/密码向服务器进行身份验证。
up
是一个包含用户名在第一行、密码在第二行的文件。如果密码或用户名和密码都省略,OpenVPN 将从控制台提示输入。- 说明:客户端可以通过提供用户名和密码来进行身份验证,以便连接到服务器。可以从文件中读取用户名和密码,或者在需要时由用户在控制台输入。
- 示例:
openvpn --auth-user-pass myauthfile.txt
,从文件中读取用户名和密码进行身份验证。或者openvpn --auth-user-pass
,在控制台提示输入用户名和密码。
- –pull:接受来自对等方(服务器)的某些配置文件选项,就像它们是本地配置文件的一部分。在连接到
--mode server
的远程主机时必须指定。- 说明:客户端可以从服务器拉取一些配置选项,使其配置更加灵活。在连接到服务器模式的 OpenVPN 时,这个选项是必需的。
- 示例:
openvpn --client --pull
,在客户端模式下启用从服务器拉取配置选项的功能。
- –pull-filter accept|ignore|reject t:如果从服务器接收到的选项以文本
t
开头,则过滤每个选项。动作标志accept
、ignore
或reject
导致选项被允许、删除或因错误而被拒绝。可以多次指定,并且每个过滤器将按照出现的顺序应用。- 说明:客户端可以根据特定的规则过滤从服务器拉取的配置选项,控制哪些选项被接受、忽略或拒绝。
- 示例:
openvpn --client --pull-filter accept option1 --pull-filter ignore option2
,接受以option1
开头的选项,忽略以option2
开头的选项。
- –auth-retry t:如何处理身份验证失败。将
t
设置为none
(默认)、interact
或nointeract
。- 说明:指定在身份验证失败时的处理方式。可以选择不重试(
none
)、交互式重试(interact
)或非交互式重试(nointeract
)。 - 示例:
openvpn --client --auth-retry interact
,在身份验证失败时进行交互式重试。
- 说明:指定在身份验证失败时的处理方式。可以选择不重试(
- –static-challenge t e:使用挑战文本
t
和回声标志e
(0|1)启用静态挑战/响应协议。- 说明:可以设置静态的挑战/响应协议,用于增强身份验证的安全性。回声标志决定是否在挑战中显示用户输入。
- 示例:
openvpn --client --static-challenge mychallenge 1
,启用静态挑战/响应协议,回声标志为 1(显示用户输入)。
- –connect-timeout n:当以轮询方式连接可能的远程服务器时,在等待响应时花费不超过
n
秒,然后尝试下一个服务器。- 说明:设置客户端在连接到多个可能的服务器时的超时时间,避免长时间等待无响应的服务器。
- 示例:
openvpn --client --connect-timeout 15
,设置连接超时时间为 15 秒。
- –allow-recursive-routing:当设置此选项时,OpenVPN 将不会丢弃具有与主机相同目的地的传入
tun
数据包。- 说明:在某些特殊的网络配置下,允许 OpenVPN 处理具有相同目的地的数据包,避免数据包被丢弃。
- 示例:
openvpn --client --allow-recursive-routing
,启用此功能。
- –explicit-exit-notify [n]:在退出/重新启动时,向服务器发送退出信号。
n
表示重试次数,默认 = 1。- 说明:客户端在退出或重新启动时,可以通知服务器,并且可以指定重试的次数。
- 示例:
openvpn --client --explicit-exit-notify 2
,在退出时通知服务器,并设置重试次数为 2。
五、数据通道加密选项(必须在对等方之间兼容)
- –secret f [d]:启用静态密钥加密模式(非 TLS)。使用共享密钥文件
f
,通过--genkey
生成。可选的d
参数控制密钥的方向性。如果指定了d
,在连接的一侧使用单独的密钥,在一侧设置d = 0
,在另一侧设置d = 1
。- 说明:在不使用 TLS 的情况下,可以使用静态密钥加密数据通道。共享密钥文件需要通过
--genkey
生成,并且可以设置密钥的方向性以增强安全性。 - 示例:
openvpn --secret mysecret.key 0
,在一侧设置静态密钥加密,并指定密钥方向性为 0。
- 说明:在不使用 TLS 的情况下,可以使用静态密钥加密数据通道。共享密钥文件需要通过
- –auth alg:使用消息摘要算法
alg
对数据包进行身份验证。默认是 SHA1。(通常每个数据包增加 16 或 20 字节)设置alg = none
以禁用身份验证。- 说明:可以选择不同的消息摘要算法对数据包进行身份验证,以确保数据的完整性。如果不需要身份验证,可以设置为
none
。 - 示例:
openvpn --auth SHA256
,使用 SHA256 算法进行数据包身份验证。
- 说明:可以选择不同的消息摘要算法对数据包进行身份验证,以确保数据的完整性。如果不需要身份验证,可以设置为
- –cipher alg:使用加密算法
alg
对数据包进行加密。默认是 BF-CBC。设置alg = none
以禁用加密。- 说明:选择加密算法对数据进行加密,保护数据的机密性。可以根据需要选择不同的算法,或者禁用加密。
- 示例:
openvpn --cipher AES-256-CBC
,使用 AES-256-CBC 加密算法。
- –ncp-ciphers list:允许协商的密码列表。
- 说明:指定在连接建立时可以协商的加密密码列表,增加灵活性和兼容性。
- 示例:
openvpn --ncp-ciphers AES-256-GCM:AES-128-GCM
,指定允许协商的加密密码为 AES-256-GCM 和 AES-128-GCM。
- –ncp-disable:禁用密码协商。
- 说明:如果不希望进行密码协商,可以使用这个选项禁用密码协商功能。
- 示例:
openvpn --ncp-disable
,禁用密码协商。
- –prng alg [nsl]:对于伪随机数生成器(PRNG),使用摘要算法
alg
和非对称密钥长度nsl
。设置alg = none
以禁用 PRNG。- 说明:配置伪随机数生成器的算法和参数,用于生成加密所需的随机数。可以选择不同的算法或禁用 PRNG。
- 示例:
openvpn --prng SHA256 32
,使用 SHA256 算法和 32 字节的非对称密钥长度配置 PRNG。
- –keysize n:(已过时)密码密钥的大小(以位为单位)(可选)。如果未指定,将使用密码特定的默认大小。
- 说明:这个选项在旧版本中使用,但现在已不推荐使用,因为密钥大小通常由加密算法自动确定。
- 示例:不建议使用此选项。
- –engine [name]:启用 OpenSSL 硬件加密引擎功能。
- 说明:如果系统支持硬件加密引擎,可以使用这个选项启用硬件加速的加密功能,提高性能。
- 示例:
openvpn --engine myengine
,启用名为myengine
的硬件加密引擎。
- –no-replay:(已过时)禁用重放保护。
- 说明:这个选项在旧版本中使用,但现在已不推荐使用,因为重放保护通常是必需的安全功能。
- 示例:不建议使用此选项。
- –mute-replay-warnings:沉默重放警告的输出到日志文件。
- 说明:如果不希望在日志中显示重放警告信息,可以使用这个选项禁用重放警告的输出。
- 示例:
openvpn --mute-replay-warnings
,禁用重放警告的日志输出。
- –replay-window n [t]:使用大小为
n
的重放保护滑动窗口和t
秒的时间窗口。默认n = 64
,t = 15
。
- 说明:配置重放保护的窗口大小和时间窗口,以防止重放攻击。
- 示例:
openvpn --replay-window 128 30
,设置重放保护窗口大小为 128,时间窗口为 30 秒。
- –no-iv:禁用密码的初始化向量——仅允许与 CBC 模式的密码一起使用。
- 说明:在某些情况下,可以禁用加密算法的初始化向量,但这只适用于特定的密码模式(如 CBC 模式)。
- 示例:
openvpn --cipher BF-CBC --no-iv
,在使用 BF-CBC 加密算法时禁用初始化向量。
- –replay-persist file:使用文件持久化重放保护状态,以便在不同的会话之间保持状态。
- 说明:可以将重放保护的状态保存到文件中,以便在不同的 OpenVPN 会话之间保持状态,提高安全性。
- 示例:
openvpn --replay-persist replay_state.txt
,将重放保护状态保存到指定文件。
- –test-crypto:运行加密功能的自测试。仅用于调试。
- 说明:用于测试 OpenVPN 的加密功能是否正常工作,仅在调试时使用。
- 示例:
openvpn --test-crypto
,进行加密功能的自测试。
六、TLS 密钥协商选项
- –tls-server:启用 TLS 并在 TLS 握手期间承担服务器角色。
- 说明:如果 OpenVPN 作为服务器运行,并且要使用 TLS 进行密钥协商,则需要启用这个选项。
- 示例:
openvpn --mode server --tls-server
,在服务器模式下启用 TLS。
- –tls-client:启用 TLS 并在 TLS 握手期间承担客户端角色。
- 说明:当 OpenVPN 作为客户端连接到使用 TLS 的服务器时,需要启用这个选项。
- 示例:
openvpn --tls-client
,在客户端模式下启用 TLS。
- –key-method m:(已过时)数据通道密钥交换方法。
m
应该是方法编号,例如 1(默认)、2 等。- 说明:这个选项在旧版本中使用,但现在已不推荐使用,因为密钥交换方法通常由 OpenVPN 自动选择。
- 示例:不建议使用此选项。
- –ca file:证书颁发机构文件,以.pem 格式包含根证书。
- 说明:指定证书颁发机构(CA)的文件,用于验证服务器和客户端的证书。
- 示例:
openvpn --ca myca.pem
,指定 CA 文件。
- –capath dir:受信任证书的目录(CA 和 CRL)。
- 说明:可以指定一个目录,其中包含多个受信任的证书颁发机构证书和证书吊销列表(CRL)。
- 示例:
openvpn --capath /etc/openvpn/certs
,指定证书目录。
- –dh file:包含 Diffie-Hellman 参数的文件,以.pem 格式(仅适用于
--tls-server
)。可以使用“openssl dhparam -out dh1024.pem 1024”生成。- 说明:在服务器端,用于 Diffie-Hellman 密钥交换的参数文件。
- 示例:
openvpn --tls-server --dh mydh.pem
,指定 Diffie-Hellman 参数文件。
- –cert file:本地证书,以.pem 格式——必须由
--ca file
中的证书颁发机构签名。- 说明:指定本地的证书文件,用于身份验证。
- 示例:
openvpn --cert mycert.pem
,指定本地证书。
- –extra-certs file:一个或多个 PEM 证书,用于完成证书链。
- 说明:如果需要额外的证书来完成证书链,可以指定这些证书文件。
- 示例:
openvpn --extra-certs myextra_certs.pem
,指定额外的证书文件。
- –key file:本地私钥,以.pem 格式。
- 说明:指定本地的私钥文件,用于身份验证。
- 示例:
openvpn --key mykey.pem
,指定本地私钥。
- –tls-version-min [‘or-highest’]:设置我们将接受的来自对等方的最小 TLS 版本。如果版本无法识别且指定了“or-highest”,则要求使用 SSL 实现支持的最大 TLS 版本。
- 说明:可以限制 OpenVPN 接受的最小 TLS 版本,以确保安全性和兼容性。
- 示例:
openvpn --tls-version-min TLSv1.2
,要求最小 TLS 版本为 1.2。
- –tls-version-max :设置我们将使用的最大 TLS 版本。
- 说明:限制 OpenVPN 使用的最大 TLS 版本,以控制安全性和兼容性。
- 示例:
openvpn --tls-version-max TLSv1.3
,设置最大 TLS 版本为 1.3。
- –pkcs12 file:PKCS#12 文件,包含本地私钥、本地证书以及可选的根 CA 证书。
- 说明:可以使用 PKCS#12 格式的文件来包含所有必要的证书和私钥信息。
- 示例:
openvpn --pkcs12 mypkcs12.p12
,指定 PKCS#12 文件。
- –verify-hash hash [algo]:指定级别 1 证书的指纹。有效的算法标志是 SHA1 和 SHA256。
- 说明:用于验证证书的指纹,以确保证书的完整性和真实性。
- 示例:
openvpn --verify-hash myhash SHA256
,使用 SHA256 算法验证证书指纹。
- –tls-cipher l:一个允许的 TLS 密码列表,以
:
分隔(可选)。使用--show-tls
查看支持的 TLS 密码列表。
- 说明:可以指定允许的 TLS 密码,以增强安全性和兼容性。
- 示例:
openvpn --tls-cipher TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
,指定允许的 TLS 密码。
- –tls-cert-profile p:设置允许的证书加密算法配置文件(默认 = legacy)。
- 说明:用于选择证书的加密算法配置文件,以满足不同的安全需求。
- 示例:
openvpn --tls-cert-profile modern
,选择现代的证书加密算法配置文件。
- –tls-timeout n:如果在
n
秒内未从远程收到 ACK,则在 TLS 控制通道上进行数据包重传超时。默认 = 2。
- 说明:设置 TLS 控制通道上的超时时间,以确保连接的稳定性。
- 示例:
openvpn --tls-timeout 5
,设置超时时间为 5 秒。
- –reneg-bytes n:在发送和接收
n
字节后重新协商数据通道密钥。
- 说明:可以根据传输的数据量自动重新协商密钥,以增强安全性。
- 示例:
openvpn --reneg-bytes 1048576
,在发送和接收 1MB 数据后重新协商密钥。
- –reneg-pkts n:在发送和接收
n
个数据包后重新协商数据通道密钥。
- 说明:与
--reneg-bytes
类似,但根据数据包数量进行密钥重新协商。 - 示例:
openvpn --reneg-pkts 1000
,在发送和接收 1000 个数据包后重新协商密钥。
- –reneg-sec n:在
n
秒后重新协商数据通道密钥(默认 = 3600)。
- 说明:设置时间间隔,在经过指定时间后自动重新协商密钥。
- 示例:
openvpn --reneg-sec 1800
,在 1800 秒后重新协商密钥。
- –hand-window n:数据通道密钥交换必须在任何对等方发起握手后的
n
秒内完成。默认 = 60。
- 说明:限制密钥交换的时间,以确保连接的快速建立。
- 示例:
openvpn --hand-window 30
,设置密钥交换时间为 30 秒。
- –tran-window n:过渡窗口——在新密钥重新协商开始后,旧密钥可以存活
n
秒。默认 = 3600。
- 说明:在密钥重新协商过程中,设置旧密钥的过渡时间,以确保连接的平滑过渡。
- 示例:
openvpn --tran-window 1200
,设置旧密钥在新密钥协商开始后存活 1200 秒。
- –single-session:只允许一个会话(在重新启动时重置状态)。
- 说明:启用这个选项后,OpenVPN 将只允许一个会话,在重新启动时会重置所有状态,确保每次连接都是全新的。
- 示例:
openvpn --single-session
,启用单会话模式。
- –tls-exit:在 TLS 协商失败时退出。
- 说明:如果 TLS 密钥协商失败,OpenVPN 将立即退出,以确保连接的安全性。
- 示例:
openvpn --tls-exit
,在 TLS 协商失败时强制退出。
- –tls-auth f [d]:在 TLS 控制通道上添加额外的一层身份验证,以保护 TLS 堆栈免受攻击并防止 DoS 攻击。
f
(必需)是一个共享密钥文件。可选的d
参数控制密钥的方向性,参见--secret
选项以获取更多信息。
- 说明:为 TLS 控制通道提供额外的身份验证层,增强安全性。可以使用共享密钥文件进行身份验证,并可以设置密钥的方向性。
- 示例:
openvpn --tls-auth mytlsauth.key 0
,使用共享密钥文件进行额外的 TLS 身份验证,并设置密钥方向性为 0。
- –tls-crypt key:在 TLS 控制通道上添加额外的一层经过身份验证的加密,以隐藏 TLS 证书、提供基本的后量子安全性并保护 TLS 堆栈免受攻击和 DoS 攻击。
key
(必需)提供预共享密钥文件。参见--secret
选项以获取更多信息。
- 说明:为 TLS 控制通道添加额外的加密层,提高安全性,特别是对于未来可能的量子计算攻击。
- 示例:
openvpn --tls-crypt mytlsencrypt.key
,使用预共享密钥文件为 TLS 控制通道添加加密。
- –askpass [file]:在守护进程化之前,从控制终端获取 PEM 密码。
- 说明:如果密码被加密存储在 PEM 文件中,可以使用这个选项从控制终端获取密码。也可以指定一个文件,从文件中读取密码提示信息。
- 示例:
openvpn --askpass mypasswordprompt.txt
,从指定文件中读取密码提示信息并从控制终端获取密码。
- –auth-nocache:不要缓存
--askpass
或--auth-user-pass
密码。
- 说明:为了提高安全性,不缓存通过
--askpass
或--auth-user-pass
获取的密码。 - 示例:
openvpn --auth-nocache
,禁用密码缓存。
- –crl-verify crl [‘dir’]:根据 CRL(证书吊销列表)检查对等方证书。
- 说明:使用证书吊销列表来验证对等方的证书是否已被吊销,确保连接的安全性。可以指定 CRL 文件和一个可选的目录(用于存储临时文件或其他相关信息)。
- 示例:
openvpn --crl-verify mycrl.pem /tmp/crl_temp
,使用指定的 CRL 文件进行证书验证,并将临时文件存储在指定目录中。
- –tls-verify cmd:运行命令
cmd
来验证挂起的 TLS 连接的 X509 名称,该连接已经通过了所有其他的证书验证测试。cmd
应该返回 0 以允许 TLS 握手继续进行,或者返回 1 以失败。(cmd
以cmd certificate_depth subject
的形式执行)。
- 说明:可以通过执行一个自定义的命令来进一步验证 TLS 连接的 X509 名称,以满足特定的安全需求。命令的返回值决定了 TLS 握手是否继续进行。
- 示例:
openvpn --tls-verify myverifyscript.sh
,使用指定的脚本进行额外的 TLS 连接验证。
- –tls-export-cert [directory]:以 PEM 格式获取对等方证书并将其存储在一个 OpenVPN 临时文件中,位于[directory]中。对等方证书在
tls-verify
脚本执行之前存储,并在执行后删除。
- 说明:可以将对等方的证书导出到一个临时文件中,以便进行进一步的分析或验证。指定的目录用于存储临时文件。
- 示例:
openvpn --tls-export-cert /tmp/cert_export
,将对等方证书导出到指定目录的临时文件中。
- –verify-x509-name name:仅接受来自具有 X509 主题 DN 名称为
name
的主机的连接。远程主机还必须通过所有其他的验证测试。
- 说明:可以限制连接只接受来自具有特定 X509 主题名称的主机,增强连接的安全性和可控性。
- 示例:
openvpn --verify-x509-name myservername.example.com
,只接受来自具有特定名称的服务器的连接。
- –ns-cert-type t:(已过时)要求对等方证书使用显式的
nsCertType
指定t
='client'|'server'
。
- 说明:这个选项在旧版本中使用,但现在已不推荐使用,因为有更好的方法来验证证书的类型。
- 示例:不建议使用此选项。
- –x509-track x:将对等方 X509 属性
x
保存到环境中,以供插件和管理接口使用。
- 说明:可以将对等方的特定 X509 属性保存到环境变量中,以便插件或管理接口可以访问这些信息。
- 示例:
openvpn --x509-track subjectAltName
,将对等方的主题备用名称属性保存到环境中。
- –keying-material-exporter label len:根据标签
label
保存长度为len
字节的导出密钥材料(RFC5705)到环境中,以供插件使用。
- 说明:可以将导出的密钥材料保存到环境变量中,以便插件可以使用这些材料进行进一步的加密或其他操作。
- 示例:
openvpn --keying-material-exporter mylabel 32
,保存长度为 32 字节的密钥材料,并使用指定的标签。
- –remote-cert-ku v…:要求对等方证书使用显式的密钥用法进行签名,可以指定多个值。值应以十六进制格式给出。
- 说明:可以限制对等方的证书必须使用特定的密钥用法进行签名,增强证书的安全性和合法性。
- 示例:
openvpn --remote-cert-ku 0x01 0x02
,要求对等方证书使用特定的密钥用法进行签名。
- –remote-cert-eku oid:要求对等方证书使用显式的扩展密钥用法进行签名。扩展密钥用法可以编码为对象标识符或 OpenSSL 字符串表示。
- 说明:与
--remote-cert-ku
类似,但针对扩展密钥用法进行限制。 - 示例:
openvpn --remote-cert-eku 1.3.6.1.5.5.7.3.1
,要求对等方证书使用特定的扩展密钥用法进行签名。
- –remote-cert-tls t:要求对等方证书使用显式的密钥用法和扩展密钥用法基于 RFC3280 TLS 规则进行签名。
t = 'client'|'server'
。
- 说明:根据 RFC3280 TLS 规则,要求对等方证书使用特定的密钥用法和扩展密钥用法进行签名,并指定证书的类型为客户端或服务器。
- 示例:
openvpn --remote-cert-tls client
,要求对等方证书为客户端类型,并符合特定的签名规则。
七、SSL 库信息
- –show-ciphers:显示用于
--cipher
选项的密码算法。- 说明:这个选项可以列出 OpenSSL 库中可用的密码算法,以便用户在配置
--cipher
选项时进行选择。 - 示例:
openvpn --show-ciphers
,显示可用的密码算法列表。
- 说明:这个选项可以列出 OpenSSL 库中可用的密码算法,以便用户在配置
- –show-digests:显示用于
--auth
选项的消息摘要算法。- 说明:列出 OpenSSL 库中可用的消息摘要算法,供用户在配置
--auth
选项时参考。 - 示例:
openvpn --show-digests
,显示可用的消息摘要算法列表。
- 说明:列出 OpenSSL 库中可用的消息摘要算法,供用户在配置
- –show-engines:显示硬件加密加速器引擎(如果可用)。
- 说明:如果系统中存在硬件加密加速器引擎,这个选项可以列出它们,以便用户在配置
--engine
选项时使用。 - 示例:
openvpn --show-engines
,显示可用的硬件加密引擎列表。
- 说明:如果系统中存在硬件加密加速器引擎,这个选项可以列出它们,以便用户在配置
- –show-tls:显示所有 TLS 密码(仅当 TLS 用作控制通道时)。
- 说明:列出 OpenSSL 库中可用的 TLS 密码,用于配置 TLS 连接的安全性。
- 示例:
openvpn --show-tls
,显示可用的 TLS 密码列表。
八、生成随机密钥(仅用于非 TLS 静态密钥加密模式)
- –genkey:生成一个随机密钥,用于作为共享秘密,与
--secret
选项一起使用。- 说明:在非 TLS 的静态密钥加密模式下,使用这个选项生成一个随机密钥,用于加密数据通道。
- 示例:
openvpn --genkey
,生成随机密钥。
- –secret file:将密钥写入文件。
- 说明:将生成的密钥写入指定的文件,以便在配置 OpenVPN 时使用。
- 示例:
openvpn --genkey --secret mysecret.key
,生成密钥并写入指定文件。
九、Tun/tap 配置模式(适用于 Linux 2.4 及更高版本)
- –mktun:创建一个持久化的隧道。
- 说明:在 Linux 系统上,可以使用这个选项创建一个持久化的虚拟网络隧道设备。
- 示例:
openvpn --mktun
,创建持久化隧道。
- –rmtun:删除一个持久化的隧道。
- 说明:用于删除已经创建的持久化隧道设备。
- 示例:
openvpn --rmtun
,删除持久化隧道。
- –dev tunX|tapX:tun/tap 设备。(
X
可以省略以使用动态设备)。- 说明:与前面的隧道选项中的
--dev
相同,用于指定虚拟网络设备的类型和名称。 - 示例:
openvpn --dev tun0
,使用名为tun0
的隧道设备。
- 说明:与前面的隧道选项中的
- –dev-type dt:我们正在使用哪种设备类型?(
dt
=tun
或tap
)仅当与--dev
一起使用的tun/tap
设备不以“tun”或“tap”开头时才使用此选项。- 说明:与前面的隧道选项中的
--dev-type
相同,用于明确指定设备类型。 - 示例:
openvpn --dev myvpndevice --dev-type tun
,指定名为myvpndevice
的设备为隧道设备。
- 说明:与前面的隧道选项中的
- –user user:将权限设置为用户
user
。- 说明:在创建或操作虚拟网络设备时,可以设置特定的用户权限。
- 示例:
openvpn --user myuser
,将设备的权限设置为myuser
。
- –group group:将权限设置为组
group
。- 说明:与
--user
类似,设置设备的组权限。 - 示例:
openvpn --group mygroup
,将设备的权限设置为mygroup
。
- 说明:与
十、通用独立选项
- –show-gateway:显示有关默认网关的信息。
- 说明:这个选项可以显示系统当前的默认网关信息,对于网络配置和故障排除很有用。
- 示例:
openvpn --show-gateway
,显示默认网关信息。