天天看点

CentOS 7安装OpenVPN服务

一、架构图

CentOS 7安装OpenVPN服务

二、规划:

1.外出笔记本:

系统:windows X

软件:openvpn客户端

2.VPN服务器:

系统:Centos7.8

软件:openvpn、easy-rsa、花生壳

三、环境准备(VPN服务器)

1、开启转发功能并生效

## 不存在该配置则添加
# grep 'net.ipv4.ip_forward = 1' /etc/sysctl.conf || echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p
           

2、iptables配置(只需添加配置,不需要启动iptables服务)

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables


[[email protected] ~]# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.8.0.0/24          0.0.0.0/0 
           

3、定时任务同步系统时间:crontab -l

CentOS 7安装OpenVPN服务

4、使用上海时间:ls -l /etc/localtime

CentOS 7安装OpenVPN服务

5、查看硬件时间:hwclock --show

CentOS 7安装OpenVPN服务

6、系统时间同步到硬件时间:hwclock --systohc

说明:如果时间不同步,那么VPN登录访问就可能存在问题。

7、网卡设置:

[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV6INIT=no
NAME=eth0
UUID=3813523a-3a49-4251-bb38-0af0bf18c3bb
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.100.194
DNS1=8.8.8.8
DNS2=114.114.114.114
GATEWAY=192.168.100.254


[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV6INIT=no
NAME=eth1
UUID=3813523a-3a49-4251-bb38-0af0bf18c3bb
DEVICE=eth1
ONBOOT=yes
IPADDR=10.0.0.10
DNS1=8.8.8.8
DNS2=114.114.114.114
GATEWAY=10.0.0.254
           

四、openvpn

1、安装依赖

yum install -y lz4-devel lzo-devel pam-devel openssl-devel systemd-devel sqlite-devel autoconf  automake libtool libtool-ltdl
           

2、安装openvpn

wget https://github.com/OpenVPN/openvpn/archive/v2.4.9.tar.gz
mv v2.4.9.tar.gz openvpn-2.4.9.tar.gz
tar xf openvpn-2.4.9.tar.gz 
cd openvpn-2.4.9/
autoreconf -i -v -f
./configure --prefix=/usr/local/openvpn --enable-lzo --enable-lz4 --enable-crypto --enable-server --enable-plugins --enable-port-share --enable-iproute2 --enable-pf --enable-plugin-auth-pam --enable-pam-dlopen --enable-systemd
make && make install
ln -s /usr/local/openvpn/sbin/openvpn /usr/local/sbin/openvpn
           

3、修改配置文件并启动

# vim /usr/local/openvpn/lib/systemd/system/[email protected]
### 找到 ExecStart 这行,改为如下
ExecStart=/usr/local/openvpn/sbin/openvpn --config server.conf

配置系统服务,并开机自启动
# cp -a /usr/local/openvpn/lib/systemd/system/[email protected] /usr/lib/systemd/system/openvpn.service
# systemctl enable openvpn.service
           

五、easy-rsa

1、安装easy-rsa

wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.7.tar.gz
mv v3.0.7.tar.gz easy-rsa-3.0.7.tar.gz
tar xf easy-rsa-3.0.7.tar.gz
           

2、修改配置文件

cd easy-rsa-3.0.7/easyrsa3
cp -a vars.example vars

在文件末尾添加一下信息
# 国家
set_var EASYRSA_REQ_COUNTRY     "CN"
# 省
set_var EASYRSA_REQ_PROVINCE    "GD"
# 城市
set_var EASYRSA_REQ_CITY        "ShenZhen"
# 组织
set_var EASYRSA_REQ_ORG         "yu"
# 邮箱
set_var EASYRSA_REQ_EMAIL       "[email protected]"
# 拥有者
set_var EASYRSA_REQ_OU          "yuxiaoer"

# 长度
set_var EASYRSA_KEY_SIZE        2048
# 算法
set_var EASYRSA_ALGO            rsa

# CA证书过期时间,单位天
set_var EASYRSA_CA_EXPIRE      36500
# 签发证书的有效期是多少天,单位天
set_var EASYRSA_CERT_EXPIRE    36500
           

六、生成服务端和客户端证书

1、初始化与创建CA根证书

cd /root/easy-rsa-3.0.7/easyrsa3
./easyrsa init-pki
./easyrsa build-ca
           

在这部分需要输入PEM密码 PEM pass phrase,输入两次,此密码必须记住,不然以后不能为证书签名。还需要输入common name 通用名,如:openvpen,这个你自己随便设置个独一无二的。

2、生成服务端证书

./easyrsa build-server-full server nopass
./easyrsa gen-dh	#创建Diffie-Hellman,确保key穿越不安全网络的命令,时间会有点长,耐心等待
           

3、生成客户端证书

./easyrsa build-client-full client nopass    # 无密码,实际应用中不推荐,客户端有密码可提高安全性
./easyrsa build-client-full zhangsan		 # 让你输入密码,后续VPN连接时会使用
openvpn --genkey --secret ta.key			 #为了提高安全性,生成ta.key
           

4、整理服务端配置文件

mkdir -p /etc/openvpn/server/
cp -a pki/ca.crt /etc/openvpn/server/
cp -a pki/private/server.key /etc/openvpn/server/
cp -a pki/issued/server.crt /etc/openvpn/server/
cp -a pki/dh.pem /etc/openvpn/server/
cp -a ta.key /etc/openvpn/server/


#服务端配置文件
[[email protected] easyrsa3]# cat /etc/openvpn/server/server.conf
local 0.0.0.0
port 1194
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.100.0  255.255.255.0"
push "route 10.0.0.2 255.0.0.0"
push "route 10.0.10.0 255.255.255.0"
;client-to-client
;duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
;comp-lzo
max-clients 1000
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log  /var/log/openvpn.log
verb 3
;explicit-exit-notify 1

#启动openvpn(port:1194)
systemctl start openvpn.service
           

通过ifconfig命令,也可见多个tun0网卡信息

CentOS 7安装OpenVPN服务

七、花生壳

模拟环境,没有公网ip,所以用花生壳

1、安装phddns

wget https://down.oray.com/hsk/linux/phddns-5.1.0.amd64.rpm
rpm -ivh phddns-5.1.0.amd64.rpm
           
CentOS 7安装OpenVPN服务

2、浏览器输入远程管理地址b.oray.com进入花生壳远程管理页面,输入安装花生壳时生成的SN码及默认密码admin进入

3、首次登录,需要进行初始化:重设密码,填写手机,发送验证码

CentOS 7安装OpenVPN服务

4、新建域名创建穿透映射

CentOS 7安装OpenVPN服务

八、Windows客户端配置与访问

1、客户端安装

win7:https://www.techspot.com/downloads/downloadnow/5182/?evp=851afc05ae3a528d9f392a9da40bc911&file=6
win10:http://down.i4t.com/openvpn-install-2.4.7-I606-Win10.exe
           

2、安装完毕后会在「网络连接」中会多出一个连接

CentOS 7安装OpenVPN服务

3、客户端zhangsan用户配置文件

1、注意路径,在OpenVPN/config目录下建立了client目录

2、ca.crt、zhangsan.crt、zhangsan.key、ta.key都是之前创建好的,只有zhangsan.ovpn需要单独下载并修改。

CentOS 7安装OpenVPN服务

zhangsan.ovpn内容如下:

client

dev tun

proto tcp

remote ****.vip 端口(填写花生壳上面的域名和端口)

resolv-retry infinite

nobind

;user nobody

;group nobody

persist-key

persist-tun

ca ca.crt

cert zhangsan.crt

key zhangsan.key

remote-cert-tls server

tls-auth ta.key 1

cipher AES-256-CBC

compress lz4-v2

verb 3

;mute 20

4、连接zhangsan用户

之前生成客户端证书的时候,加上 nopass 参数,因此直接连接无需输入密码。如果连接的是用户zhangsan,则需要输入密码。

连接成功如下所示

CentOS 7安装OpenVPN服务

5、客户端模拟访问办公电脑

CentOS 7安装OpenVPN服务

转载于:http://www.zhangblog.com/2020/05/09/openvpn01/

继续阅读