一实验拓扑图:二、操作环境介绍: 操作系统:Centos 7.4 最小化安装 4台 软件openvpn-2.4.6.tar.gz EasyRSA-3.0.1.tgz open-install-2.4.5-I601.exe 三、IP规划 主机名:shidc ens33-->192.168.189.243 外网 ens37-->192.168.217.230 内网 主机名:sh02 ens33-->192.168.217.231 内网服务器 主机名:cdidc ens33-->192.168.189.244 外网 ens37-->31.31.31.230 内网 主机名:cd02 ens33-->31.31.31.231 内网服务器 说明:由于是模拟环境,所以两边IDC,直接用同一段IP来模拟公网可以通信。 以上IP,子网掩码都是24位,shidc 和 cdidc 两台,内网卡(ens37) 不用配置网关,sh02 和 cd02 网关 217.1 和 31.1 四、实验环境准备: 4 台 Centos 7.4 最小化安装,自行操作。 五、安装OpenVPN (在 shidc 上操作) 5.1、安装依赖包 yum -y install gcc gcc-c++ openssl openssl-devel pam pam-devel 5.2、下载openvpn2.4.6 并安装。 mkdir -p /soft && cd /soft wget https://files01.tchspt.com/temp/openvpn-2.4.6.tar.gz tar zxf openvpn-2.4.6.tar.gz cd openvpn-2.4.6/ ./configure --prefix=/usr/local/openvpn --disable-lzo make && make install mkdir -p /etc/openvpn # 创建配置文件存放目录 拷贝配置文件 cp /soft/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn/server.conf 创建软链接: ln -s /usr/local/openvpn/sbin/openvpn /usr/local/sbin/openvpn
六下载证书软件,并配置。 6.1、下载软件,安装。 cd /soft wget https://github.com/OpenVPN/easy-rsa/releases/download/3.0.1/EasyRSA-3.0.1.tgz tar zxf EasyRSA-3.0.1.tgz cp -rf EasyRSA-3.0.1 /etc/openvpn/easy-rsa cd /etc/openvpn/easy-rsa cp vars.example vars vim vars 添加如下内容,到文件最后: set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "BEIJING" set_var EASYRSA_REQ_CITY "BEIJING" set_var EASYRSA_REQ_ORG "DFSC" set_var EASYRSA_REQ_EMAIL "331758730@qq.com" set_var EASYRSA_REQ_OU "DFSC"
![]()
6.2、制作证书 cd /etc/openvpn/easy-rsa ./easyrsa init-pki #初始化证书目录
./easyrsa build-ca (本例CA证书密码为windows@123)# 创建CA证 书,提示输入Common Name,名称随意,但是不能和服务端证书或客户端证书名称相同
./easyrsa build-server-full server nopass #制作服务端证书
./easyrsa build-client-full xiaowang (密码设置为: xw.com123) # xiaowang是客户端证书名称,可以根据不同的员工进行创建,名称唯一。
./easyrsa gen-dh # 生成Diffle Human参数,它能保证密钥在网络中安全传输
证书文件位置:
七、配置Openvpn ,并启动。 vim /etc/openvpn/server.conf local 192.168.189.243 port 52115 proto tcp dev tun ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/server.crt key /etc/openvpn/easy-rsa/pki/private/server.key dh /etc/openvpn/easy-rsa/pki/dh.pem server 10.8.0.0 255.255.255.0 push "route 192.168.217.0 255.255.255.0" ifconfig-pool-persist ipp.txt client-to-client keepalive 10 120 cipher AES-256-CBC persist-key persist-tun status /var/log/openvpn-status.log log /var/log/openvpn.log verb 3 compress lz4-v2 push "compress lz4-v2" user nobody group nobody client-config-dir /etc/openvpn/ccd route 31.31.31.0 255.255.255.0 配置文件内容说明:
mkdir -p /etc/openvpn/ccd vim /etc/openvpn/ccd/xiaowang #客户端特殊配置文件名称,以客户端连接时 用的证书名称命名。添加如下内容: iroute 31.31.31.0 255.255.255.0 #设置VPN Server到 VPN Client 内网路由。 开启路由转发: echo "1" >/proc/sys/net/ipv4/ip_forward echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf sysctl -p 启动VPN服务: /usr/local/sbin/openvpn --config /etc/openvpn/server.conf &
当Openvpn 启动成功后,会生成一块虚拟网卡tun0 ,vpn的数据就是通过它来实现传输。
查看路由表: 会生成一条去往cdidc 机房内网的一条路由,走的是VPN tun0 出去。
把openvpn启动,加入到rc.local echo "/usr/local/sbin/openvpn --config /etc/openvpn/server.conf &" >>/etc/rc.local chmod +x /etc/rc.local 八、Linux 客户端配置 (在cdidc 上面操作) 8.1、安装openvpn2.4.6 yum -y install gcc gcc-c++ openssl openssl-devel pam pam-devel mkdir -p /soft && cd /soft wget https://files01.tchspt.com/temp/openvpn-2.4.6.tar.gz cd /soft/ tar zxf openvpn-2.4.6.tar.gz cd openvpn-2.4.6/ ./configure --prefix=/usr/local/openvpn --disable-lzo make && make install mkdir -p /etc/openvpn/ # 创建配置文件存放目录 cp /soft/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn/sh.conf 创建软链接: ln -s /usr/local/openvpn/sbin/openvpn /usr/local/sbin/openvpn 8.2、配置 vpnclient 先在VPN服务器上下载证书文件:
再把这些下载好的证书 文件,上传到/etc/openvpn/ cd /etc/openvpn
vim sh.conf client dev tun proto tcp remote 192.168.189.243 52115 persist-key persist-tun ca /etc/openvpn/ca.crt cert /etc/openvpn/xiaowang.crt key /etc/openvpn/xiaowang.key verb 3
连接VPN服务器: /usr/local/sbin/openvpn --config /etc/openvpn/sh.conf
![]()
查看路由表:
8.3、调试 路由跟踪 tracepath 192.168.217.231
![]()
这时,需要在 vpn服务器(shidc)上面开启NAT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens37 -j SNAT --to-source 192.168.217.230 在VPN Server上收到的 VPN客户端,去往 内网服务器的数据包中的 Source IP (10.8.0.6)改成,自己(VPN Server 内网卡)的 IP 【192.168.217.230】 也可以使用: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE MASQUERADE :是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE
![]()
![]()
九、配置两边IDC机房,内网互通。 9.1、配置内网互通 在sh02 (shidc内网服务器)操作 添加去往cdidc内网的路由 route add -net 31.31.31.0/24 gw 192.168.217.230 查看路由表:
在cd02(cdidc内网服务器)操作 添加去往shidc内网的路由 route add -net 192.168.217.0/24 gw 31.31.31.230 查看路由表:
进行ping 测试:
![]()
路由跟踪,看两段内网访问是否走VPN线路。
![]()
9.2、添加永久路由: cd02上操作: vim /etc/sysconfig/network-scripts/route-ens33 其中 ens33 应该是去往目标网段数据出去的网卡。
sh02上操作: vim /etc/sysconfig/network-scripts/route-ens37
两种格式都可以。 需要重启network,生效。如果添加了临时路由,又添加了永久路由,可以先不用重启network,也可以。 十、Windows 客户端连接(可以用自己的物理机,也可以重新安装windows虚拟机,前提是必须要能和VPN 服务器相通。) 下载OpenVPN GUI客户端,64位下载地址: http://build.openvpn.net/downloads/snapshots/openvpn-install-2.4.0-I602-pr80v18.exe 下载好后按默认设置安装即可。 vpn服务端创建一个客户端连接证书(jack),用于windows 客户端连接 cd /etc/openvpn/easy-rsa/ (在VPN服务器上操作)
将以下3个文件下载下来并放到C:\Program Files\OpenVPN\config目录下 /etc/openvpn/easy-rsa/pki/private/jack.key /etc/openvpn/easy-rsa/pki/issued/jack.crt /etc/openvpn/easy-rsa/pki/ca.crt
进入C:\Program Files\OpenVPN\config\client,创建以证书名称命名的ovpn,内容如下: client dev tun proto tcp remote 192.168.189.243 52115 persist-key persist-tun ca ca.crt cert jack.crt key jack.key verb 3
![]()
双击桌面的OpenVPN GUI图标启动连接
![]()
![]()
![]()
VPN图标变为绿色,表示,连接成功。 查看路由表:route print 生成了一条去往192.168.217.0(shidc内网)的路由,走的是VPN线路。
ping 测试:
路由跟踪:
VPN客户端互联,测试。
windows VPN 客户端,访问(cdidc内网服务器)31.31.31.231,测试 由于windows vpn 客户端,没有去往31.31.31.0路由,需要手动添加。
进行ping 测试,发现不通。
路由跟踪:
我们在cd02(cdidc内网服务器)上,进行抓包:
查看路由表:cd02 上
发现是cd02 上面没有去往10.8.0.0的路由,导致不通。 添加去往10.8.0.0网段路由。 route add -net 10.8.0.0/24 gw 31.31.31.230 再次查看路由表:cd02
再在windows vpn 客户端,进行ping测试。
再在windows vpn 客户端,路由跟踪。
cd02上操作:把去往10.8.0.0(VPN网段)路由设置成永久路由。 vim /etc/sysconfig/network-scripts/route-ens33 其中 ens33 应该是去往目标网段数据出去的网卡。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 十一、回收证书: 当员工离职了,我们需要把证书回收。 在VPN服务器上操作: cd /etc/openvpn/easy-rsa/ ./easyrsa revoke jack
./easyrsa gen-crl
![]()
修改配置文件,文件的最后面,添加一行。 vim /etc/openvpn/server.conf
重启openvpn服务,这样回收的证书就连接不上VPN Server了。
/usr/local/sbin/openvpn --config /etc/openvpn/server.conf & 在windows客户端上,打开VPN,连接工具,重新连接,发现连接不上。
------------------------ END -------------------------------------