type
status
date
slug
summary
tags
category
icon
password
OpenVPN 的运行逻辑 (连接建立和数据传输流程)
OpenVPN 的运行逻辑可以概括为建立一个安全的、加密的隧道,将客户端的网络流量安全地传输到 VPN 服务器,并最终到达目标网络或互联网。 其核心流程如下:
  1. 客户端发起连接 (Client Initiates Connection):
      • OpenVPN 客户端程序启动,根据配置文件 (.ovpn 文件) 中的信息,解析服务器地址、端口、协议等。
      • 客户端向 OpenVPN 服务器的指定地址和端口发起连接请求。
  1. 服务器监听和响应 (Server Listens and Responds):
      • OpenVPN 服务器程序在指定的端口上监听来自客户端的连接请求。
      • 接收到客户端的连接请求后,服务器开始与客户端进行握手协商。
  1. TLS/SSL 握手 (TLS/SSL Handshake - Key Exchange and Authentication):
      • 密钥交换 (Key Exchange): OpenVPN 使用 TLS/SSL 协议进行安全通信的建立。客户端和服务器之间进行密钥交换,协商出一个用于后续数据加密的 会话密钥 (Session Key)。 常用的密钥交换算法包括 Diffie-Hellman (DH) 或 Elliptic Curve Diffie-Hellman (ECDH)。
      • 服务器身份验证 (Server Authentication): 客户端验证服务器的身份,确保连接的是合法的 VPN 服务器,而不是中间人攻击者。这通常通过 服务器证书 (Server Certificate) 完成。客户端会验证服务器证书的有效性,例如证书是否由受信任的 CA (Certificate Authority) 签发,证书是否过期等。
      • 客户端身份验证 (Client Authentication - 可选但常用): 服务器验证客户端的身份,确保只有授权用户才能连接 VPN。常见的客户端身份验证方式包括:
        • 用户名/密码 (Username/Password): 客户端提供用户名和密码进行验证。
        • 客户端证书 (Client Certificate): 客户端提供自己的证书进行验证,通常配合密码使用或单独使用。
        • 预共享密钥 (Pre-Shared Key - PSK): 客户端和服务器预先共享一个相同的密钥,用于身份验证(安全性较低,不常用在公共 VPN 服务中)。
  1. 建立安全隧道 (Establish Secure Tunnel):
      • 密钥交换和身份验证成功后,客户端和服务器之间就建立了一个安全的、加密的 TLS/SSL 连接。
      • 这个 TLS/SSL 连接就构成了 VPN 的 加密隧道 (Encrypted Tunnel)。所有后续的数据都会通过这个隧道传输,并使用协商好的会话密钥进行加密和解密。
  1. 数据传输 (Data Transmission):
      • 一旦隧道建立,客户端的所有网络流量 (或者根据配置,部分流量) 都会被 封装 (Encapsulated) 在 VPN 协议中,并通过加密隧道发送到 VPN 服务器。
      • 数据封装: 原始的网络数据包 (例如 TCP/IP 数据包) 会被包装在 OpenVPN 协议头中,然后使用协商好的加密算法进行加密。
      • 服务器解密和转发: VPN 服务器接收到加密的数据包后,进行解密,还原出原始的网络数据包。
      • 网络地址转换 (NAT) 和路由: VPN 服务器通常会执行网络地址转换 (NAT),将客户端的私有 IP 地址转换成服务器的公网 IP 地址,使得客户端可以访问互联网或目标网络。服务器还会根据路由配置,将解密后的数据包转发到目标网络或互联网。
      • 反向过程: 从目标网络或互联网返回的数据,会先到达 VPN 服务器,服务器再进行加密和封装,通过隧道发送回客户端,客户端解密后得到原始数据。
  1. 连接维护和断开 (Connection Maintenance and Disconnection):
      • OpenVPN 连接会保持活跃状态,直到客户端主动断开连接,或者网络出现问题导致连接中断。
      • OpenVPN 会定期发送 心跳包 (Keep-Alive Packets) 来检测连接是否仍然有效。
      • 断开连接时,客户端和服务器会进行握手,优雅地关闭 TLS/SSL 连接和 VPN 隧道。
OpenVPN 需要配置什么?
OpenVPN 的配置主要包括服务器端配置和客户端配置。核心配置信息通常包含在配置文件中 (server.conf 和 client.conf 或 .ovpn 文件)。
服务器端配置 (server.conf - 示例关键配置项):
  • 端口和协议 (Port and Protocol):
    • port 1194 (默认端口,可以修改)
    • proto udp 或 proto tcp (选择 UDP 或 TCP 协议,UDP 速度快但可能不可靠,TCP 可靠但速度稍慢)
  • 设备类型 (Device Type):
    • dev tun (路由模式,创建虚拟网卡,常用) 或 dev tap (桥接模式,模拟网桥,较少用)
  • 服务器模式 (Server Mode):
    • server 10.8.0.0 255.255.255.0 (配置 VPN 服务器的虚拟 IP 地址范围和子网掩码)
  • 证书和密钥 (Certificates and Keys):
    • ca ca.crt (CA 证书文件路径)
    • cert server.crt (服务器证书文件路径)
    • key server.key (服务器私钥文件路径)
    • dh dh2048.pem (Diffie-Hellman 参数文件路径)
  • 客户端配置推送 (Client Configuration Push):
    • push "route 192.168.1.0 255.255.255.0" (推送路由信息给客户端,例如让客户端访问服务器内网)
    • push "dhcp-option DNS 8.8.8.8" (推送 DNS 服务器地址给客户端)
  • 客户端认证方式 (Client Authentication):
    • auth-user-pass (启用用户名/密码认证)
    • client-cert-not-required (不强制要求客户端证书,如果使用用户名/密码认证) 或 client-cert-required (强制要求客户端证书)
  • 加密算法和哈希算法 (Cipher and Hash Algorithm):
    • cipher AES-256-CBC (选择加密算法,例如 AES-256-CBC)
    • auth SHA256 (选择哈希算法,例如 SHA256)
  • 压缩 (Compression):
    • comp-lzo (启用 LZO 压缩,可以提高速度,但安全性稍有降低)
客户端配置 (.ovpn 文件 - 示例关键配置项):
  • 客户端配置继承自服务器: 客户端的很多配置会从 .ovpn 文件中继承,而 .ovpn 文件通常包含服务器端配置的必要信息。
  • 客户端指令 (Client Directives):
    • client (声明为客户端模式)
    • dev tun (设备类型,与服务器端一致)
    • proto udp (协议,与服务器端一致)
    • remote your_server_ip 1194 (VPN 服务器的公网 IP 地址和端口)
    • resolv-retry infinite (断线重连)
    • nobind (不绑定本地端口)
    • persist-key (保持密钥持久化)
    • persist-tun (保持 tun 设备持久化)
    • ca ca.crt (CA 证书文件内容或路径)
    • cert client.crt (客户端证书文件内容或路径,如果使用客户端证书认证)
    • key client.key (客户端私钥文件内容或路径,如果使用客户端证书认证)
    • auth-user-pass (启用用户名/密码认证,并提示输入用户名和密码)
    • cipher AES-256-CBC (加密算法,与服务器端一致)
    • auth SHA256 (哈希算法,与服务器端一致)
    • comp-lzo (压缩,与服务器端一致)
    • verb 3 (日志级别,可以调整)
OpenVPN 的原理 (核心技术和概念)
OpenVPN 的核心原理可以归纳为以下几个关键点:
  1. VPN (Virtual Private Network) 技术: OpenVPN 本质上是一种 VPN 技术,其目的是在公共网络 (如互联网) 上建立一个私有的、安全的网络连接。
  1. 隧道技术 (Tunneling): OpenVPN 使用隧道技术,将客户端的网络流量封装在一个加密的隧道中进行传输。这个隧道就像一条虚拟的专用线路,保证数据传输的私密性和安全性。
  1. TLS/SSL 协议 (Transport Layer Security/Secure Sockets Layer): OpenVPN 的安全基础是 TLS/SSL 协议。TLS/SSL 协议提供了以下关键功能:
      • 加密 (Encryption): 使用对称加密算法 (如 AES, Blowfish 等) 对数据进行加密,防止数据在传输过程中被窃听。
      • 身份验证 (Authentication): 使用证书和密钥等机制验证客户端和服务器的身份,防止中间人攻击和冒充。
      • 完整性 (Integrity): 使用哈希算法 (如 SHA, MD5 等) 验证数据的完整性,防止数据在传输过程中被篡改。
  1. 虚拟网卡 (Virtual Network Interface Card): OpenVPN 在客户端和服务器端都会创建虚拟网卡 (例如 tun 或 tap 设备)。
      • tun 设备 (路由模式): 工作在网络层 (IP 层),处理 IP 数据包。OpenVPN 将原始 IP 数据包封装在 VPN 协议中,通过 tun 设备发送出去。
      • tap 设备 (桥接模式): 工作在数据链路层 (MAC 层),处理以太网帧。OpenVPN 可以模拟一个网桥,将客户端的网络流量桥接到 VPN 服务器所在的局域网。
  1. 路由和网络地址转换 (Routing and NAT):
      • 路由: OpenVPN 通过配置路由表,将需要通过 VPN 隧道的流量路由到虚拟网卡上。
      • NAT: VPN 服务器通常会执行 NAT,将连接到 VPN 的客户端的私有 IP 地址转换成服务器的公网 IP 地址,使得客户端可以访问互联网或目标网络。
  1. 跨平台和灵活性 (Cross-Platform and Flexibility): OpenVPN 具有良好的跨平台性,支持 Windows, Linux, macOS, Android, iOS 等多种操作系统。同时,OpenVPN 的配置非常灵活,可以根据不同的需求进行定制,选择不同的协议、端口、加密算法、认证方式等。
 
Kali的安装Nmap扫描
  • Twikoo