OpenVPN 环境部署

2019年7月26日 0 条评论 508 次阅读 0 人点赞

OpenVPN安装部署


  • 安装 openssl 依赖
yum -y install openssl openssl-devel
  • 安装 lzo 依赖
yum -y install lzo
  • 安装 openvpn 以及加密工具
yum -y install openvpn easy-rsa

OpenVPN 服务配置


  • 拷贝证书密钥生成工具
cp -r /usr/share/easy-rsa/ /etc/openvpn/
  • 修改vars证书信息
cd /etc/openvpn/easy-rsa/2.*/ && vim vars

将证书内容修改为以下信息(用户根据自己的信息填写)

export KEY_COUNTRY="CN"
export KEY_PROVINCE="BeiJing"
export KEY_CITY="TongZhou"
export KEY_ORG="IOI6"
export KEY_EMAIL="vpn@ioi6.com"
export KEY_OU="IOI6"

KEY_COUNTRY:标明国家简介编码

KEY_PROVINCE:标明所在国家省份

KEY_CITY:标明所在国家城市

KEY_ORG:标明组织

KEY_EMAIL:标明邮箱信息

KEY_OU:标明单位信息(于KEY_ORG相同)

  • 检查加密信息配置
cd /etc/openvpn/easy-rsa/2.*/ && vim vars

查看以下信息的准确性,如果不准确,请修改

export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_NAME="EasyRSA"
  • 初始化环境
cd /etc/openvpn/easy-rsa/2.*/ && rm -rf keys && source vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

出现以上NOTE, 可以忽略

  • 清除keys目录下所有与证书相关的文件
./clean-all
  • 生成根(ca)证书
cd /etc/openvpn/easy-rsa/2.*/ && ./build-ca
  • 生成服务端证书及密钥
cd /etc/openvpn/easy-rsa/2.*/ && ./build-key-server server

一直回车,出现两次输入 y/n 时,输入 y 回车即可

  • 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它
cd /etc/openvpn/easy-rsa/2.*/ && ./build-dh
  • 生成 ta (防DDos攻击、UDP淹没等恶意攻击)
openvpn --genkey --secret /etc/openvpn/easy-rsa/2.*/keys/ta.key

至此,所有生成的证书和密钥均位于/etc/openvpn/easy-rsa/2.*/keys

  • 配置服务端 server.conf
vim /etc/openvpn/server.conf

在文件中输入以下内容:

# 如果主机是阿里云的 ECS,需要绑定ECS的外网地址 (使用ifconfig查看eth1网卡对应的IP)
local 阿里云ECS外网IP

# VPN 监听的端口
port 443

# VPN 使用的协议, client和server必需一致
proto udp
dev tap

# VPN认证相关文件
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem

# VPN 地址(即连接VPN产生的IP地址)
server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /data/openvpn/ip/ipp.txt

# 重要:在阿里云中为保证连接VPN后可以正常访问 10.12.1.* 网段的机器需要将该网段推送到客户端去
push "route 10.12.1.0 255.255.255.0"

client-to-client
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/2.0/keys/ta.key 0
comp-lzo
persist-key
persist-tun

# VPN日志文件
status /data/openvpn/log/openvpn-status.log
log-append /data/openvpn/log/openvpn.log

verb 5
  • 创建相应的文件夹
mkdir -p /data/openvpn/ip /data/openvpn/log
  • 启动OpenVPN服务
systemctl start openvpn@server
  • 开启路由转发并使其生效
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf && sysctl -p
  • 配置防火墙
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 10.162.xxx.xxx
service iptables save

10.8.0.0: 地址为 server.conf 配置文件中的地址

10.162.xxx.xxx是阿里ECS的内网地址(ifconfig eth0)

  • 重启OpenVPN服务
systemctl restart openvpn@server

OpenVPN 客户端配置


每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接。

  • 生成客户端证书
cd /etc/openvpn/easy-rsa/2.*/ && ./build-key shicheng

shicheng: 客户端文件名称,随意填写。

将服务端生成的以下文件

ca.crt 服务器认证文件

shicheng.crt 客户端生成的文件

shicheng.key 客户端生成的文件

ta.key 防止ddos攻击生成文件

拷贝到需要连接vpn的机器上

  • 配置客户端编写 shicheng.ovpn (*.vopn随便填写)
client

# 此处必须要和服务端一致,否则无法连接
proto udp
dev tap

# 远程OpenVPN服务器地址及端口,以空格隔开
remote x.x.x.x xxx

resolv-retry infinite
nobind
persist-key
persist-tun

# 以下几个文件为服务器拷贝下来的文件,需和客户端配置文件在同一目录,如果不在同一目录请写绝对文件路径
ca ca.crt
cert shicheng.crt
key shicheng.key
tls-auth ta.key 1

ns-cert-type server
comp-lzo
verb 5

将文件保存为*.vopn文件即可

qianmoQ

qianmoQ

这个人太懒什么东西都没留下

文章评论(0)