一、环境准备:
为了测试 VPN 的功能,我搭建了两套 OpenStack 的环境,实现两套环境(A,B)的私网互通。
其中 192.168.3.99 和 192.168.3.110 两个IP始终是能互相 ping 通的。
下面我们开始准备环境A:
A-1 修改网络配置文件
vim /etc/network/interfaces
配置文件中约定了启动ens33这块物理网卡但是没有IP地址(这块网卡一定要启用)
配置文件中约定了启动br-ens33这块虚拟网卡,并制定一个外网IP-192.168.3.99,在我的环境中这个IP是能访问外网的。这里你可能会疑惑这块虚拟网卡我没有啊,不用担心,后面有步骤会创建这块网卡。
A-2 创建虚拟网卡
ovs-vsctl add-br br-ens33
把物理网卡作为端口加入到新增的这块虚拟网卡
ovs-vscrl add-port br-ens33 ens33
到此环境A的网络基础环境就配好了,重启A机器,重启完成后
登录 ssh root@192.168.3.99, 如果不能登录检查 A-1 步骤的 ens33 网卡是否启用
下面我们开始准备环境B:
B-1 修改网络配置文件
vim /etc/network/interfaces
配置文件中约定了启动ens33这块物理网卡但是没有IP地址(这块网卡一定要启用)
配置文件中约定了启动br-ens33这块虚拟网卡,并制定一个外网IP-192.168.3.110,在我的环境中这个IP是能访问外网的。这里你可能会疑惑这块虚拟网卡我没有啊,不用担心,后面有步骤会创建这块网卡。
A-2 创建虚拟网卡
ovs-vsctl add-br br-ens33
把物理网卡作为端口加入到新增的这块虚拟网卡
ovs-vscrl add-port br-ens33 ens33
到此环境A的网络基础环境就配好了,重启A机器,重启完成后
登录 ssh root@192.168.3.110, 如果不能登录检查 B-1 步骤的 ens33 网卡是否启用
二、A环境的OpenStack创建网络如下:
external 网络类型是 flat,
子网为 192.168.3.0/24 地址范围为192.168.3.120-192.168.3.125. 网桥bt-ens33的IP和这个子网在同一网络。
创建flat网络的时候需要指定【物理网络】,【物理网络】需要填写你配置里面对应写的,下面是我的配置文件:
文件 【/etc/neutron/plugins/ml2/openvswitch_agent.ini】的
文件 【/etc/neutron/plugins/ml2/ml2_conf.ini】 的
从上面可以看到我有三块网桥, 其中
physnet_ens33 绑定的是网桥 bt-ens33, 用于创建 flat 网络
physnet_ens39 绑定的是网桥 bt-ens39, 用于创建 vlan 网络
physnet_ens40 绑定的是网桥 bt-ens40, 用于创建 vxlan 网络
所以我的 【物理网络】应该写 physnet_ens33。
三、B环境的OpenStack创建网络如下:
external 网络类型是 flat,
子网为 192.168.3.0/24 地址范围为192.168.3.126-192.168.3.130. 网桥bt-ens33的IP和这个子网在同一网络。
创建flat网络的时候需要指定【物理网络】,【物理网络】需要填写你配置里面对应写的,下面是我的配置文件:
文件 【/etc/neutron/plugins/ml2/openvswitch_agent.ini】的
文件 【/etc/neutron/plugins/ml2/ml2_conf.ini】 的
从上面可以看到我有三块网桥, 其中
physnet_ens33 绑定的是网桥 bt-ens33, 用于创建 flat 网络
physnet_ens39 绑定的是网桥 bt-ens39, 用于创建 vlan 网络
physnet_ens40 绑定的是网桥 bt-ens40, 用于创建 vxlan 网络
所以我的 【物理网络】应该写 physnet_ens33。
四、创建路由:
到这一步,A和B两套环境的Openstack网络环境为:
A B
external: 192.168.3.0/24 external: 192.168.3.0/24
private: 172.168.1.0/24 private: 172.168.2.0/24
如果没有配置VPN, A-172.168.1.0/24 和 B-172.168.2.0/24 是不通的。
在A环境中创建路由,external网络作为网关,private作为接口,A的路由外部网关地址为: 192.168.3.128,这个地址后面需要用到配置VPN。
在B环境中创建路由,external网络作为网关,private作为接口,A的路由外部网关地址为: 192.168.3.124,这个地址后面需要用到配置VPN。
五、创建VPN
A环境配置VPN:
A-1 创建 ike policies
只需要设置一个名称,其他都默认就好了。
A-2 创建 ipsec policies
只需要设置一个名称,其他都默认就好了。
A-3 创建 vpn service
创建 vpn service 可以指定子网,也可以不指定.
因为在创建 ipsec site connnection的时候可以指定
vpn service(不指定子网) + endpoint group 或 vpn service(指定子网) 两种方式。
我这里测试的时候采用的是 vpn service(不指定子网) + endpoint group 这种方式
A-4 创建 endpoint group
这里创建了两个endpoint group(172.16.1.0/24,172.16.2.0/24) .我们的目的就是实现这两个endpoint group互通
创建本地子网 172.16.1.0/24 为 endpoint group
创建远程网络 172.16.2.0/24 为 endpoint group
A-5 创建ipsec site connnection
PSK只是个密码,两边约定好就行。
B环境配置VPN:
B-1 创建 ike policies
只需要设置一个名称,其他都默认就好了。
B-2 创建 ipsec policies
只需要设置一个名称,其他都默认就好了。
B-3 创建 vpn service
创建 vpn service 可以指定子网,也可以不指定.
因为在创建 ipsec site connnection的时候可以指定
vpn service(不指定子网) + endpoint group 或 vpn service(指定子网) 两种方式。
我这里测试的时候采用的是 vpn service(不指定子网) + endpoint group 这种方式
B-4 创建 endpoint group
这里创建了两个endpoint group(172.16.1.0/24,172.16.2.0/24) .我们的目的就是实现这两个endpoint group互通
创建本地子网 172.16.2.0/24 为 endpoint group
创建远程网络 172.16.1.0/24 为 endpoint group
B-5 创建ipsec site connnection
PSK只是个密码,两边约定好就行。
六、到这里整套vpn配置就全部完成了,下面我们在
A环境创建一个实例绑定私网172.16.1.0/24
B环境创建一个实例绑定私网172.16.2.0/24
两台实例之间互相 ping 测试
测试通过。
文章来源: VPNAAS 连通两个子网