How to install openvpn server on CentOS7

来自koorka知识分享
跳转至: 导航搜索
  • Installing OpenVPN 2.4.6
yum install epel-release
  • Configuring OpenVPN
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/server/
vi /etc/openvpn/server/server.conf
OpenVPN Server 作为各客户端的缺省网关(即客户端所在的局域网络不加入VPN网络中):
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 106.187.95.5"
push "dhcp-option DNS 106.186.116.5"
将VPN Server 所在的内网路由信息推送到各客户端,以便各客户端访问VPN Server所在的内网,以阿里云为例:
push "route 172.17.240.0 255.255.240.0"
push "dhcp-option DNS 172.17.240.10"
push "dhcp-option DNS 202.106.196.115”
将客户端所在的局域网添加到 VPN网络中,以便其它VPN客户端所在的网络可以访问。例如:天津分公司局域网网络为 192.168.18.0/24,上海分公司的局域网为 192.168.10.0/24: 要使两个局域网可以互相访问,则在做如下设置(假定 天津、上海的客户端认证证书的 common name 分别为 "TianJin", "ShangHai"):
client-config-dir ccd
route 192.168.18.0 255.255.255.0
route 192.168.10.0 255.255.255.0
然后 分别创建 TianJin , ShangHai的 ccd文件
mkdir /etc/openvpn/server/ccd
touch /etc/openvpn/server/ccd/TianJin
touch /etc/openvpn/server/ccd/ShangHai  
echo 'iroute 192.168.18.0 255.255.255.0' > /etc/openvpn/server/ccd/TianJin
echo 'iroute 192.168.10.0 255.255.255.0' > /etc/openvpn/server/ccd/ShangHai
备注: ccd文件中iroute其实就是告诉VPN服务器,我所在的子网是多少(如果有路由到我的子网的数据包,请给我)
user nobody
group nobody
#explicit-exit-notify 1
  • 生成认证证书Generating Keys and Certificates
安装 easy-rsa 3.0
yum install openvpn easy-rsa -y

sudo mkdir -p /etc/openvpn/easy-rsa/keys

sudo cp -rf /usr/share/easy-rsa/3.0/* /etc/openvpn/easy-rsa

su - root

cd /etc/openvpn/easy-rsa

初始化pki
./easyrsa init-pki
创建root CA证书 (pki/ca.crt):
./easyrsa build-ca nopass

#此处生成 ca.crt文件
创建DH parameters ( pki/dh.pem)
./easyrsa gen-dh

#此处生成 dh.pem文件
创建服务端证书
./easyrsa gen-req VPNServer nopass

#此处生成 VPNServer.key 和 VPNServer.req文件
签约服务端证书
./easyrsa sign server VPNServer
# server是签名类型,client 或 server, VPNServer是 请求签名文件 VPNServer.req
# 此处生成  VPNServer.crt 文件
备注: 创建服务端证书 和 签约服务端证书 可以使用 ./easyrsa build-server-full VPNServer nopass 命令一步完成。 分别为天津和上海分公司创建客户端证书
./easyrsa build-client-full TianJin nopass
./easyrsa build-client-full ShangHai nopass

#此处生成 xxx.req ,  xxx.key 和 xxx.crt文件
拷贝证书:

拷贝 ca.crt dh.pem VPNServer.crt VPNServer.key到 服务器端

拷贝 ca.crt dh.pem xxx.crt xxx.key到 客户端

  • 服务器端Configure Routing and firewall
vi /etc/sysctl.conf :
net.ipv4.ip_forward = 1
sysctl -p 如果VPN Server作为缺省网关(即push "redirect-gateway def1 bypass-dhcp")则需要做 SNAT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
  • Starting OpenVPN

systemctl -f enable openvpn-server@server.service

systemctl start openvpn-server@server.service

  • 客户端配置Configuring a Client
在客户端,如果要使VPNServer自己 和 其它 独立 vpn client能访问 客户端所在的子网,则在客户端机器上需要做SNAT:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

need the following client files:

/etc/openvpn/easy-rsa/keys/ca.crt

/etc/openvpn/easy-rsa/keys/koorka_client.crt

/etc/openvpn/easy-rsa/keys/koorka_client.key

create client file koorka_client.ovpn:
client
dev tun
proto tcp
remote 111.164.217.112 1281
resolv-retry infinite
nobind
persist-key
persist-tun
link-mtu 1559
cipher AES-256-CBC
keysize 256
ca ca.crt
cert koorka_client.crt
key koorka_client.key
for Linux client:

openvpn --config ~/path/to/koorka_client.ovpn