# OpenVPN + AD 域账号集成部署教程

👌 好的，你想要 **OpenVPN + AD 域账号集成**的完整部署方案。  
下面我给你整理一个基于 **Windows Server 2025 + AD 域**的 OpenVPN 部署教程（也可放在 Linux 上，方法类似）。

---

# 🛠 OpenVPN + AD 域账号集成部署教程

## 一、准备工作

1. 一台 **Windows Server 2025**（可作为 VPN Server）。
    
    
    - 建议安装在 **非 DC 服务器** 上，避免和 AD 冲突。
    - 如果你愿意，也可以用 Linux（CentOS/Ubuntu）作为 VPN Server，思路一样。
2. 已有 **AD 域环境**（例如 `shuncom.local`）。
3. 域用户账号若干（VPN 登录将使用 AD 账号）。
4. 公网 IP 或 NAT 映射端口。

---

## 二、安装 OpenVPN Server

1. 下载 OpenVPN 社区版（免费）：  
    👉 [https://openvpn.net/community-downloads/](https://openvpn.net/community-downloads/)
2. 安装时勾选：
    
    
    - **EasyRSA**（用于证书生成）
    - **OpenVPN Service**（安装为服务）
3. 确认 Windows 防火墙放行：
    
    
    - **UDP 1194**（默认 OpenVPN 端口）
    - 或你自定义的端口

---

## 三、生成证书（CA、Server、Client）

在 `C:\Program Files\OpenVPN\easy-rsa` 下执行：

```powershell
# 初始化 CA
EasyRSA-Start.bat
./easyrsa init-pki
./easyrsa build-ca

# 生成服务器证书
./easyrsa build-server-full server nopass

# 生成客户端证书（例如 user01）
./easyrsa build-client-full user01 nopass

```

证书会在 `pki` 目录生成，复制到 `C:\Program Files\OpenVPN\config`。

---

## 四、配置 OpenVPN 服务端

在 `C:\Program Files\OpenVPN\config\server.ovpn` 添加：

```conf
port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "redirect-gateway def1"
push "dhcp-option DNS 192.168.1.10"   # 你的域控/DNS 服务器 IP

keepalive 10 120
cipher AES-256-GCM
auth SHA256
persist-key
persist-tun
verb 3

# 启用 AD 认证
plugin "C:\\Program Files\\OpenVPN\\lib\\openvpn-auth-ldap.dll" "C:\\Program Files\\OpenVPN\\config\\auth-ldap.conf"

```

---

## 五、配置 AD 认证插件

在 `C:\Program Files\OpenVPN\config\auth-ldap.conf` 写入：

```conf
<LDAP>
    URL             ldap://192.168.1.10:389
    BindDN          CN=vpnbind,OU=ServiceAccounts,DC=shuncom,DC=local
    Password        YourBindPassword
    Timeout         15
    FollowReferrals yes
</LDAP>

<Authorization>
    BaseDN          "OU=Users,DC=shuncom,DC=local"
    SearchFilter    "(sAMAccountName=%u)"
    RequireGroup    false
</Authorization>

```

📌 说明：

- `BindDN`：一个有只读权限的域账号（建议新建 vpnbind 专用用户）。
- `BaseDN`：搜索用户的路径，可以指定 OU。
- `SearchFilter`：匹配域用户登录名。

---

## 六、启动 OpenVPN 服务

```powershell
services.msc

```

找到 **OpenVPNService** → 启动。  
也可用命令行：

```powershell
net start openvpnservice

```

---

## 七、配置客户端

在客户端（Windows/Linux/Mac）导入 `user01.ovpn`：

```conf
client
dev tun
proto udp
remote vpn.shuncom.org 1194
resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
cert user01.crt
key user01.key

auth-user-pass
cipher AES-256-GCM
auth SHA256
verb 3

```

首次连接会提示输入 **AD 域账号 + 密码**。

---

## 八、验证

在服务端执行：

```powershell
"C:\Program Files\OpenVPN\bin\openvpn.exe" --show-status

```

或查看日志 `C:\Program Files\OpenVPN\log\server.log`。

正常时应能看到：

```
LDAP: User user01 authenticated.

```

---

## 九、加固建议

1. **启用 MFA**（可配合 AD FS + Azure MFA 或 Duo）。
2. 只允许 VPN 用户组成员访问 → 在 `auth-ldap.conf` 里启用 `RequireGroup true`。
3. 考虑使用 **IKEv2 或 WireGuard** 替代 OpenVPN，性能更好。

---

要不要我帮你写一份 **auth-ldap.conf 示例（带指定 AD 安全组控制 VPN 登录权限）**？这样你可以限制只有某个 AD 组的成员才能连 VPN。