系列文章目录
文章目录
VPN部署
前期准备
centos 7
公网IP | 内网IP | 主机名 |
---|---|---|
192.168.15.123 | 172.168.1.123 | VPN |
关闭防火墙
systemctl disable --now firewalld
systemctl status firewalld
关闭selinux
vi /etc/selinux/config
SELINUX=enforcing
修改为
SELINUX=disabled
openvpn安装
下载安装openvpn和证书管理工具
yum -y install openvpn
yum -y install easy-rsa
openvpn的安装
easy-rsa工具安装
准备相关配置文件
切换目录到/etc/openvpn下
cd /etc/openvpn
有服务端和客户端
1、生成服务器配置文件,将配置文件复制到当前所在目录文件下
cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/
2、证书签发文件
cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-server
3、证书签发变量的相关文件
cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-server/vars
4、要修改证书文件配置
vim /etc/openvpn/easy-rsa-server/vars
# ca证书修改
#set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CA_EXPIRE 36500
# 服务器证书修改
#set_var EASYRSA_CERT_EXPIRE 825
set_var EASYRSA_CERT_EXPIRE 3650
初始化PKI并生成PKI相关目录和文件
切换目录到服务端目录
cd /etc/openvpn/easy-rsa-server/3
./easyrsa init-pki
生成CA证书
./easyrsa build-ca nopass
nopass:是代表不加密私钥,主要方便后续到处公钥和颁发服务器证书
格式化输出证书内容
openssl x509 -in pki/ca.crt -noout -text
openssl x509主要用于输出证书信息,也能签署证书请求文件、自签署、转换证书格式等
-in 指定证书输入文件
-noount 默认out选项为指定输出文件,noout为默认不输出到文件
-text 以text格式输出证书内容,即以最全格式输出
创建服务端证书申请
./easyrsa gen-req server nopass
签发服务端证书
./easyrsa sign server server
对比两个文件密码是否一致
注意:1F20FC89EFA287F7721DD2B500131E8.pem不同,需自行查看进行比对
diff pki/certs_by_serial/F1F20FC89EFA287F7721DD2B500131E8.pem pki/issued/server.crt
创建Diffie-Hellman密钥
生成dh.pem文件
./easyrsa gen-dh
客户端证书环境
cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-client
cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-client/3/vars
cd /etc/openvpn/easy-rsa-client/3
初始化客户端证书目录
cd /etc/openvpn/easy-rsa-client/3
./easyrsa init-pki
生成用户raoxurou的请求文件和key文件
./easyrsa gen-req raoxurou nopass
切换目录到服务端中,
cd /etc/openvpn/easy-rsa-server/3
./easyrsa import-req /etc/openvpn/easy-rsa-client/3/pki/reqs/raoxurou.req raoxurou
签发客户端证书
./easyrsa sign client raoxurou
将CA和服务器证书相关文件复制到服务端响应目录
mkdir /etc/openvpn/certs
cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/certs/
cp /etc/openvpn/easy-rsa-server/3/pki/issued/server.crt /etc/openvpn/certs/
cp /etc/openvpn/easy-rsa-server/3/pki/private/server.key /etc/openvpn/certs/
cp /etc/openvpn/easy-rsa-server/3/pki/dh.pem /etc/openvpn/certs/
ls /etc/openvpn/certs/
将客户端私钥与证书相关的文件复制到服务器相关目录
mkdir /etc/openvpn/client/raoxurou
find /etc/openvpn/ \( -name "raoxurou.key" -o -name "raoxurou.crt" -o -name ca.crt \) -exec cp {} /etc/openvpn/client/raoxurou \;
cd /etc/openvpn/client/raoxurou
服务端配置文件
cp server.conf server.conf.bak #备份文件
>server.conf #清空配置内容
vi server.conf
# 指定默认端口号
port 1194
# 指定vpn使用的协议为tcp,生产环境推荐使用
proto tcp
# 创建一个路由IP隧道,生产环境推荐使用tun
dev tun
# 指定ca证书文件
ca /etc/openvpn/certs/ca.crt
# 指定服务器证书文件
cert /etc/openvpn/certs/server.crt
# 指定服务器私钥文件
key /etc/openvpn/certs/server.key
# 指定dh参数文件
dh /etc/openvpn/certs/dh.pem
# 指定客户端连接后分配ip的地址池,服务器默认会占用第一个ip作为网关
server 10.8.0.0 255.255.255.0
# 推送路由信息到客户端,以允许客户端能够连接到服务器背后的其他私有子网
push "route 172.168.1.0 255.255.255.0"
# 设置服务端检测的间隔和超时时间,10秒ping一次,120秒没回应则认为对方down
keepalive 10 120
# 加密算法
cipher AES-256-CBC
# 启用openvpn新版压缩算法
compress lz4-v2
# 推送客户端使用新版压缩算法,不能和comp-lzo同时使用
push "compress lz4-v2"
# 最大客户端数
max-clients 2048
# 运行openvpn服务的用户和组
user openvpn
group openvpn
# openvpn状态记录文件,每分钟记录一次
status /var/log/openvpn/openvpn-status.log
# 指定日志路径,生产环境建议使用
log-append /var/log/openvpn/openvpn.log
# 设置日志级别,数字越大记录的内容越详细
verb 3
# 相同类别信息只有前20条会输出到日志文件中
mute 20
创建日志文件夹
getent passwd openvpn
mkdir /var/log/openvpn/
修改文件夹权限
chown openvpn.openvpn /var/log/openvpn
客户端配置文件
vi /etc/openvpn/client/raoxurou/raoxurou.ovpn
client
dev tun
proto tcp
remote 192.168.15.123 1194
resolv-retry infinite
nobind
# persist-key
# persist-tun
ca ca.crt
cert raoxurou.crt
key raoxurou.key
remote-cert-tls server
# tls-auth ta.key 1
cipher AES-256-CBC
verb 3
compress lz4-v2
安装iptables
yum -y install iptables-services
添加路由
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
开启防火墙
systemctl start iptables
查看防火墙策略
iptables -nvL -t nat
清空防火墙策略
iptables -F
修改内核参数
cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
启动Vpn
systemctl daemon-reload
systemctl enable --now openvpn@server
将先前生成的用户命名的文件夹下载下来
scp -r root@192.168.15.123:/etc/openvpn/client/raoxurou /Users/raoxurou/Desktop/
Mac使用的vpn连接软件
Tunnelblick Mac版
https://github.com/Tunnelblick/Tunnelblick/releases
将生成的文件夹里的内容删除,复制自己生成的文件
双击打开.ovpn结尾的文件,选择所有用户可用,输入mac电脑密码
选择连接
通过内网连接成功