Openstack单机虚拟化+单机网关

我的知乎专栏:云计算实战技能

背景

最近接到一些通用需求,期望单机版Openstack下,有一个虚机能做网关,负责管理VPC里的其他虚机,并且这个虚机能从外面访问,基于此需求,用一台物理机搭建了AllinOne的Openstack环境,VPC网络,虚机采用本地盘方式。

Openstack单机虚拟化+单机网关

openstack部署过程略

有几个注意的配置

1. 本地盘glance-api配置

[glance_store]

default_store = file

2. 创建全通安全组,创建网络,上传qcow2的镜像

创建网络

neutron net-create vpc2

neutron subnet-create --name vpc2-subnet --gateway 30.0.0.1 --allocation-pool start=30.0.0.2,end=30.0.0.254 --enable-dhcp vpc2 30.0.0.0/24

创建网关虚机,占用.1的地址

nova boot --flavor 1u_1048M_400g --image=34753dbc-e038-4f28-8259-2d409eef523e --nic net-name=vpc2,v4-fixed-ip=30.0.0.1 --security-groups fb828b5c-59ba-44a6-9218-b4b823fb4a9d test1

对网关虚机进行额外配置

  • 在宿主机上创建br0,设置IP

brctl add br0

ip link set dev br0 up

ifconfig br0 30.0.0.1/24

  • 在宿主机上给网关虚机加一个网卡

virsh attach-interface 1 --type bridge --source br0 --model virtio --persistent

  • 如果要卸载,执行下面命令

virsh detach-interface 1 --type bridge --mac 52:54:00:f2:fe:fa --persistent

  • 在虚机内配置ip地址

ifconfig eth1 30.0.0.10/24

  • 出-在宿主机上添加规则,使得虚机能往外出流量

iptables -t nat -A POSTROUTING -s 30.0.0.0/24 ! -o br0 -j MASQUERADE

  • 入-端口映射,使得从外面可以直接访问虚机,将宿主机2000端口映射到虚机的22端口

iptables -t nat -A PREROUTING -m tcp -p tcp --dport 2000 -j DNAT --to-destination 30.0.0.10:22

  • 另外,注意转发是否开启

sysctl -w net.ipv4.ip_forward=1

  • 还有,iptables里的forward策略,在我的环境里,forward的policy是drop,所以要加上这两条

iptables -A FORWARD -p all -i br0 -j ACCEPT

iptables -A FORWARD -p all -i eth1 -j ACCEPT

  • 要使其他虚机能通过网关vm出外网,需要在网关vm里 sysctl -w net.ipv4.ip_forward=1

然后添加 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

  • 同时放行allow-address-pair

neutron port-update fcc858e1-d61b-4840-8519-499d9e2c6244 --allowed-address-pair ip_address=0.0.0.0/0

创建普通虚机

nova boot --flavor 1u_1048M_400g --image=34753dbc-e038-4f28-8259-2d409eef523e --nic net-name=vpc2 --security-groups fb828b5c-59ba-44a6-9218-b4b823fb4a9d test2

在虚机内看到

Openstack单机虚拟化+单机网关

从外部访问网关虚机

ssh root@<host ip> -p 2000

普通虚机可经过网关虚机出外网

上一篇:Kvm--03 kvm克隆,桥接网络,热添加


下一篇:转centos8配置网桥