# Ubuntu 24.04 + OpenVPN + AD (LDAP/RADIUS) 集成部署教程

---

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

## 一、环境准备

- **Ubuntu 24.04 LTS** 服务器一台（公网可访问，或 NAT 转发端口）。
- **Windows AD 域控制器**（域名如：`shuncom.local`，DC IP：192.168.1.10）。
- 客户端：Windows 10/11，macOS，Linux，移动端。

---

## 二、安装 OpenVPN 和 Easy-RSA

```bash
sudo apt update
sudo apt install openvpn easy-rsa -y

```

---

## 三、生成证书

1. 创建证书目录：

```bash
make-cadir ~/openvpn-ca
cd ~/openvpn-ca

```

2. 初始化：

```bash
./easyrsa init-pki
./easyrsa build-ca

```

3. 生成服务器证书：

```bash
./easyrsa build-server-full server nopass

```

4. 生成客户端证书：

```bash
./easyrsa build-client-full user01 nopass

```

5. 拷贝到 OpenVPN 配置目录：

```bash
sudo cp pki/ca.crt pki/private/server.key pki/issued/server.crt /etc/openvpn/

```

---

## 四、配置 OpenVPN 服务端

创建配置文件 `/etc/openvpn/server.conf`：

```conf
port 1194
proto udp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh none
auth SHA256
tls-crypt /etc/openvpn/tls-crypt.key

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 192.168.1.10"   # AD DNS

keepalive 10 120
cipher AES-256-GCM
persist-key
persist-tun
user nobody
group nogroup
verb 3

# 启用 LDAP 插件
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
client-cert-not-required
username-as-common-name

```

---

## 五、配置 PAM → LDAP (AD)

安装 LDAP 认证模块：

```bash
sudo apt install libpam-ldapd nslcd -y

```

配置 `/etc/nslcd.conf`：

```conf
uri ldap://192.168.1.10/
base dc=shuncom,dc=local
binddn cn=vpnbind,ou=ServiceAccounts,dc=shuncom,dc=local
bindpw YourPassword
scope sub
filter passwd (sAMAccountName=%u)

```

> 📌 建议在 AD 中创建一个只读账号 `vpnbind` 专门用于 LDAP 查询。

修改 PAM 配置 `/etc/pam.d/openvpn`：

```conf
auth    required        pam_unix.so
auth    sufficient      pam_ldap.so use_first_pass
account sufficient      pam_ldap.so

```

---

## 六、启用并启动 OpenVPN

```bash
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server

```

---

## 七、防火墙 &amp; NAT

```bash
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH

```

启用 NAT 转发：  
编辑 `/etc/sysctl.conf`，取消注释：

```conf
net.ipv4.ip_forward=1

```

生效：

```bash
sudo sysctl -p

```

配置 NAT：

```bash
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

```

---

## 八、客户端配置

生成客户端配置 `user01.ovpn`：

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

remote-cert-tls server
auth-user-pass
cipher AES-256-GCM
verb 3

```

用户连接时输入 **AD 域账号+密码** 即可。

---

## 九、验证

在 OpenVPN 服务端日志 `/var/log/syslog` 或 `/var/log/openvpn.log` 中可以看到：

```
PAM_AUTH: user 'user01' authenticated via LDAP

```

---

## 🔒 加固建议

1. 仅允许 VPN 用户组：在 AD 中新建组 `VPN-Users`，在 `/etc/nslcd.conf` 里加上 `filter` 限制。
2. 建议启用 **MFA**（可配合 FreeRADIUS + Google Authenticator）。
3. 如果性能要求高，可以考虑 **WireGuard + AD 集成**。

---

要不要我帮你写一份 **限制只有 AD 中 “VPN-Users” 组成员能登录 OpenVPN 的配置示例**？这样就能精确控制谁能连 VPN。