一、架构图
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zdNFTSYpldGdkYxw2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzETO3EDO1cTM4AzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、规划:
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
4、使用上海时间:ls -l /etc/localtime
5、查看硬件时间:hwclock --show
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网卡信息
七、花生壳
模拟环境,没有公网ip,所以用花生壳
1、安装phddns
wget https://down.oray.com/hsk/linux/phddns-5.1.0.amd64.rpm
rpm -ivh phddns-5.1.0.amd64.rpm
2、浏览器输入远程管理地址b.oray.com进入花生壳远程管理页面,输入安装花生壳时生成的SN码及默认密码admin进入
3、首次登录,需要进行初始化:重设密码,填写手机,发送验证码
4、新建域名创建穿透映射
八、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、安装完毕后会在「网络连接」中会多出一个连接
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,则需要输入密码。
连接成功如下所示
5、客户端模拟访问办公电脑
转载于:http://www.zhangblog.com/2020/05/09/openvpn01/