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
sudo apt update
sudo apt install openvpn easy-rsa -y
三、生成证书
-
创建证书目录:
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
-
初始化:
./easyrsa init-pki
./easyrsa build-ca
-
生成服务器证书:
./easyrsa build-server-full server nopass
-
生成客户端证书:
./easyrsa build-client-full user01 nopass
-
拷贝到 OpenVPN 配置目录:
sudo cp pki/ca.crt pki/private/server.key pki/issued/server.crt /etc/openvpn/
四、配置 OpenVPN 服务端
创建配置文件 /etc/openvpn/server.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 认证模块:
sudo apt install libpam-ldapd nslcd -y
配置 /etc/nslcd.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
:
auth required pam_unix.so
auth sufficient pam_ldap.so use_first_pass
account sufficient pam_ldap.so
六、启用并启动 OpenVPN
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server
七、防火墙 & NAT
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
启用 NAT 转发:
编辑 /etc/sysctl.conf
,取消注释:
net.ipv4.ip_forward=1
生效:
sudo sysctl -p
配置 NAT:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
八、客户端配置
生成客户端配置 user01.ovpn
:
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
🔒 加固建议
-
仅允许 VPN 用户组:在 AD 中新建组
VPN-Users
,在/etc/nslcd.conf
里加上filter
限制。 -
建议启用 MFA(可配合 FreeRADIUS + Google Authenticator)。
-
如果性能要求高,可以考虑 WireGuard + AD 集成。
要不要我帮你写一份 限制只有 AD 中 “VPN-Users” 组成员能登录 OpenVPN 的配置示例?这样就能精确控制谁能连 VPN。
No Comments