Table of Contents
前言
openvpn有从结构上分有两种模式:client2site和site2site。前者主要用于单一客户端从外部连接访问内部网络,而有时候我们需要把两个网络打通,让一个网络内的多个客户端可以直接访问另一个网络的设备,这时候就需要使用site2site模式。
本例将在centos7,使用openvpn搭建一个site2site vpn。
拓扑图
![centos7使用openvpn搭建site2site vpn https://blog.cpmsxe.net/wp-content/uploads/2021/11/s2s.png](https://blog.cpmsxe.net/wp-content/uploads/2021/11/s2s.png)
拓扑介绍
机构A下有3个网段,都与路由器Router直连,Firewall作为网络的出口,Router和Firewall之间有一个互联网段。机构B下有2个网段,都与路由器Router直连,路由器作为网络的出口。
两个网络内各自设置一台服务器作为openvpn服务器,会在两个网络的出口设备上配置端口映射,让外部可以访问到此服务器。
部署安装
以下操作如果没有特别说明,则需要在两台openvpn服务器上进行
由于系统的默认源并没有openvpn,所以需要安装epel源
yum install epel-release -y
安装openvpn,由于我们使用静态密钥进行认证,所以也不需要安装easy-rsa
yum install openvpn -y
打开内核路由转发功能
打开/etc/sysctl.conf
在最后一行加入net.ipv4.ip_forward=1
让内核参数生效sysctl -p
关掉防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
编辑/etc/selinux/config
,修改SELINUX
的值为disabled
在其中一台服务器生成静态密钥文件
openvpn --genkey --secret /etc/openvpn/ovpn_static.key
生成的文件位于/etc/openvpn/ovpn_static.key
,将其拷贝到另一台服务器的相同位置
准备配置文件,首先是机构1的服务器,将以下配置文件保存到/etc/openvpn/server.conf
;配置对端地址和端口
remote 59.88.45.156 1194
float
proto udp
port 1194
dev tun
cipher AES-256-CBC
;配置本端的隧道IP
ifconfig 10.100.1.1 10.100.1.2
persist-tun
persist-local-ip
compress lz4-v2
;配置静态密钥
secret /etc/openvpn/ovpn_static.key
;配置去往对面网段的路由
route 192.168.8.0 255.255.255.0
route 192.168.18.0 255.255.255.0
log /var/log/openvpn.log
verb 3
auth-nocache
其中remote
填写机构2网络出口的IP地址和映射的端口。同时所有机构2内部的网段都需要用route
指明,这样服务启动后便会自动添加到达这些网段的路由。
机构2服务器的配置文件如下,保存到相同的位置
;配置对端地址和端口
remote 146.111.89.220 1194
float
proto udp
port 1194
dev tun
cipher AES-256-CBC
;配置本端和对端的隧道IP
ifconfig 10.100.1.2 10.100.1.1
persist-tun
persist-local-ip
compress lz4-v2
;配置静态密钥
secret /etc/openvpn/ovpn_static.key
;配置去往对面网段的路由
route 10.2.1.0 255.255.255.0
route 10.5.1.0 255.255.255.0
route 10.8.1.0 255.255.255.0
log /var/log/openvpn.log
verb 3
auth-nocache
注意要修改对端地址和端口,本端和对端隧道的IP需要调换过来,同时指明机构1内部的网段。
启动openvpn服务,并且设置开机启动,两台服务器都需要做
systemctl enable [email protected]
systemctl start [email protected]
可以查看日志,看看有没有问题,日志文件位于/var/log/openvpn.log
不过这时候网络还不通,因为我们还需要配置路由器和防火墙
配置网络
机构1配置
- 登录到出口的Firewall设备,配置端口映射,将UDP的1194端口指向10.2.1.254
- 登录到Router设备,添加如下几条路由表,将访问对端网段的数据路由到vpn服务器
192.168.8.0/24 via 10.2.1.254
192.168.18.0/24 via 10.2.1.254
以上完成了机构1网络的配置,其他服务器和客户端无需更改配置
机构2配置
- 登录到出口的Router设备,配置端口映射,将UDP的1194端口指向192.168.18.250。同时添加如下几条路由表,将访问对端网段的数据路由到vpn服务器
10.2.1.0/24 via 192.168.18.250
10.5.1.0/24 via 192.168.18.250
10.8.1.0/24 via 192.168.18.250
验证
如果一切顺利,这时候隧道应该已经建立,两边的网络也应该已经互通,可以做一些测试
在其中一台服务器ping对端的隧道地址,比如机构1的服务器ping 10.100.1.2
在机构1的客户端ping机构2网络的kvm服务器ping 192.168.18.180
如果都可以ping通则没有问题。如果出现其他情况,请参照日志的内容进行排查。
发表回复