文章目录
Ubuntu 搭建openVpn服务端,多客户端‘
OpenVPN 是一种开源的虚拟专用网络(VPN)解决方案,它可以建立安全的点对点或站点到站点连接,通过公共网络(如互联网)进行加密通信。
OpenVPN 可以用于多种场景,包括远程访问、安全通信、跨地域网络连接等,是一个广泛使用和信赖的VPN解决方案。
1. 安装 openvpn libssl-dev openssl
openvpn 是要安装的主要软件包,用于实现虚拟私人网络(VPN)功能。 libssl-dev 是 OpenSSL
开发库,通常在需要进行与加密相关的开发时需要安装。 openssl 是一个强大的加密工具和库。
2 安装easy-rsa
easy-rsa是用来制作openvpn相关证书的。
进入Easy-RSA到这个目录:
sudoapt update
sudoapt-getinstall easy-rsa
3 设置openvpn环境变量
cd ~ /usr/share/easy-rsa
编辑vars文件,设置证书参数:
vim vars
exportEASYRSA_REQ_COUNTRY="CN"exportEASYRSA_REQ_PROVINCE="YC"exportEASYRSA_REQ_CITY="YICHANG"exportEASYRSA_REQ_ORG="YUSU"exportEASYRSA_REQ_EMAIL="[email protected]"exportEASYRSA_REQ_OU="YUSU"exportKEY_NAME="server"
4 制作相关证书
4.1 加载变量并初始化pki
执行./easyrsa init-pki命令会在当前目录创建一个pki目录,用于存储一些中间变量及最终生成的证书。
source vars
cd ~ /usr/share/easy-rsa
./easyrsa init-pki
4 .2生成ca证书
CA 证书在 OpenVPN
等安全通信中起着重要作用,它包含了证书颁发机构的信息,用于对其他证书(如服务器证书、客户端证书等)进行签名和验证,以确保证书的真实性和可靠性。
./easyrsa build-ca nopass
4 .3生成dh证书
./easyrsa gen-dh
./easyrsa gen-dh 命令用于生成 Diffie-Hellman(DH)参数。在使用 Easy-RSA 进行证书相关操作时,生成
DH 参数是一个重要的步骤。DH 参数通常仅由 TLS 服务器使用,它用于确保密钥可以穿越不安全网络。虽然 CA 的 PKI
也可以生成这个,但在服务器本身上执行生成更有意义,以避免生成后将文件发送到另一个系统。 执行该命令后,会在相应的目录(例如 Easy-RSA
初始化时创建的 pki 目录)中生成 dh.pem 文件,该文件即包含了生成的 DH 参数。
4.4 生成服务端证书
使用默认方式生成服务器端证书,过期时间为825天(推荐使用自定义):
./easyrsa build-server-full vpn-server nopass
使用自定义过期时间3650天:
easyrsa_cert_expire=3650 ./easyrsa build-server-full server nopass
./easyrsa build-server-full vpn-server nopass 命令用于生成 OpenVPN
服务端的相关证书和密钥。 easyrsa:是一个用于管理证书颁发机构(CA)和生成证书的工具。
build-server-full:表示构建完整的服务器证书。 vpn-server:是为生成的服务器证书指定的名称,这里将其命名为
vpn-server。 nopass:表示不使用密码保护生成的私钥。 执行该命令后,会在相应的目录(通常是 Easy-RSA 初始化时创建的
pki 目录)中生成服务端的证书和私钥文件。
4.5生成客户端证书
使用默认过期时间825天(推荐使用自定义):
./easyrsa build-client-full user01 nopass
./easyrsa build-client-full user02 nopass
./easyrsa build-client-full user03 nopass
自定义过期时间3650天:
easyrsa_cert_expire=3650 ./easyrsa build-client-full user02 nopass
这三条命令用于分别为 user01、user02 和 user03和user04 生成完整的客户端证书。 ./easyrsa
build-client-full 表示构建完整的客户端证书,nopass 表示私钥不设置密码。 执行这些命令后,会在相应的目录(通常是
Easy-RSA 初始化时创建的 pki 目录)中为每个用户生成对应的证书和私钥文件。
这些生成的证书和私钥在配置客户端与服务端的连接时会被使用,以确保客户端与服务端之间通信的安全性和身份验证。
4. 6 生成ta.key
openvpn --genkey--secret pki/ta.key
openvpn --genkey --secret pki/ta.key 这条命令用于生成 OpenVPN 的静态密钥文件 ta.key
并将其保存到 pki 目录下。这个静态密钥通常用于在 OpenVPN 服务器和客户端之间建立隧道时进行额外的加密和认证。 例如,在配置
OpenVPN 服务器和客户端时,需要在相应的配置文件中指定这个静态密钥的路径,以启用相关的加密和认证功能,增强通信的安全性。
// 将所有的配置文件都转移到etc/openvpn目录下面
cp pki/ca.crt /etc/openvpn/ca.crt
cp pki/dh.pem /etc/openvpn/dh.pem
cp pki/issued/vpn-server.crt /etc/openvpn/server.crt
cp pki/private/vpn-server.key /etc/openvpn/server.key
cp pki/ta.key /etc/openvpn/ta.key
4.7 设置服务端配置文件
创建一个配置文件 /etc/openvpn/server.conf:
cd /etc/openvpn
vim server.conf
配置文件包含的内容
- 协议,端口,保持时间,客户端最大连接数
- 各个证书
- 加密信息和加密算法
- ip地址池 设置,将ip地址持久化到本地ipp.txt文件中
- 启动lzo压缩
- 日志设置
# Secure OpenVPN Server Config# Basic Connection Config
dev tun
proto udp
port 1194
keepalive 10120
max-clients 10# Certs
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0# Ciphers and Hardening#reneg-sec 0#remote-cert-tls client
tls-version-min 1.2
cipher AES-256-CBC
data-ciphers-fallback AES-256-CBC
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
# Drop Privs#user nobody#group nobody# IP pool
server 192.168.100.0 255.255.255.0
topology subnet
ifconfig-pool-persist ipp.txt
#client-config-dir client# Misc
persist-key
persist-tun
comp-lzo
# DHCP Push options force all traffic through VPN and sets DNS servers
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"# Logging
log-append /var/log/openvpn.log
verb 3
~
5. 后台启动openvpn服务
nohup /usr/sbin/openvpn --config /etc/openvpn/server.conf &
记得开启openvpn端口和
6. 服务端连接windows连接
6.1 客户端配置文件导入
打开openvpn软件的配置文件文件夹,将服务端生成的证书添加到对应目录
Ca.key
Client.key
Client.crt
Ta.key
6.2 客户端配置文件添加
在客户端配置文件夹中创建client.ovpn文件,并写入以下内容 一定要修改配置文件中的服务端的ip地址!!
# Secure OpenVPN Client Config#viscosity dns full#viscosity usepeerdns true#viscosity dhcp true
tls-client
pull
client
dev tun
proto udp
remote 服务器的公网ipv4地址(或者ipv6) 1194
redirect-gateway def1
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1
remote-cert-tls server
ns-cert-type server
key-direction 1
cipher AES-256-CBC
tls-version-min 1.2
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
版权归原作者 XJzz3 所有, 如有侵权,请联系我们删除。