OpenVPN 是一款开源的虚拟专用网络 (VPN) 软件,广泛用于保护互联网连接安全、隐藏 IP 地址、远程访问公司或家庭网络等。OpenVPN 支持多种加密方式,提供了灵活的配置和较高的安全性。通过 OpenVPN,可以建立一个加密隧道,确保数据在传输过程中的隐私和安全。它可以在 Windows、Linux、macOS 以及 Android、iOS 等多个平台上运行。

常规配置项

client                # 声明此配置为客户端配置
dev tun               # 选择 VPN 虚拟网络设备类型,通常为 tun (TUN/TAP)
proto udp             # 使用的协议,可选择 UDP 或 TCP
remote example.com 1194 # 远程服务器地址和端口号

nobind                # 客户端不绑定到特定的本地端口
persist-key           # 保持密钥文件,在重新连接时不重新生成密钥
persist-tun           # 保持 tun 设备,在重连时不重新初始化

ca ca.crt             # CA 证书文件,用于验证服务器的身份
cert client.crt       # 客户端证书文件,用于客户端身份认证
key client.key        # 客户端私钥文件

remote-cert-tls server # 强制服务器证书验证以确保安全
auth SHA256           # 指定认证算法,一般为 SHA256
cipher AES-256-CBC    # 指定加密算法,如 AES-256-CBC
tls-auth ta.key 1     # 使用 TLS 认证文件,进一步提高安全性

comp-lzo              # 启用数据压缩,提高传输效率
verb 3                # 日志详细度,1 为错误信息,3 为一般信息

配置文件说明

client:声明此配置文件用于客户端。
dev:指定虚拟网络设备,
tun 用于点对点隧道。
proto:选择传输协议,UDP 更快,但 TCP 更稳定。
remote:服务器的域名或 IP 地址,以及端口号。
nobind:不绑定到本地特定端口,使得客户端可以动态分配端口。
cacertkey:这些选项指向证书和密钥文件,用于身份认证。
remote-cert-tls:确保连接到的服务器具有有效证书。
authcipher:指定认证算法和加密算法,确保连接的加密安全性。
tls-auth:双向 TLS 认证,增强连接安全。
comp-lzo:启用数据压缩,减少带宽消耗。
verb:日志详细级别,用于调试和监控。

实用配置

客户端配置静态路由,使连接VPN后,指定到哪些网络使用VPN 或者走VPN。

route-nopull # 客户端连接openvpn后 不从服务端获取路由
max-routes 1000 # 设置路由的最大条数,默认是100,这里可以根据需求修改
route 192.168.0.0 255.255.0.0 net_gateway # 使192.168.0.0/24网段,不走vpn网关
route 192.168.1.0 255.255.0.0 vpn_gateway # 使192.168.1.0/24网段,走vpn网关

服务端配置(服务端推送至客户端)

push "route 192.168.0.0 255.255.0.0 net_gateway" # 将引号中的路由推送到客户端
push "route 192.168.1.0 255.255.0.0 vpn_gateway " # 将引号中的路由推送到客户端

自定义DNS

pull-filter ignore "dhcp-option DNS" # 不使用DHCP的DNS
dhcp-option DNS 8.8.8.8
dhcp-option DNS 223.5.5.5