openstack虚拟机作为网关配置

前提条件

  同一个子网中得两个云主机vm1(eth0:192.168.1.2),vm2(eth0:192.168.1.3)
  其中vm1还存在另外一张eth1(192.168.1.4)连接外网得网卡,vm2需要通过vm1来连接上网

vm2配置变更如下

设置vm2得网关为vm1得eth1
-  route add default gw 192.168.1.4 dev eth1  #临时修改
-  在/etc/sysconfig/network中添加如下配置(永久生效):
	NETWORKING=yes
	GATEWAY=192.168.1.4

vm1作为网关设备得配置如下:

1. /etc/sysctl.conf中添加允许地址转发	
   net.ipv4.ip_forward = 1
   net.ipv4.conf.all.rp_filter = 0
   net.ipv4.conf.default.rp_filter = 0
2. 使用sysctl -p 使得上述配置生效
3. 配置iptables规则
   iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE(是正常机器作为nat得配置,eth1作为外网得出口)
4. 因为openstack中防火墙(位于tap和qvb之间)规则要求严格,如果ip/mac不匹配,则会drop掉。
   之前vm1使用了snat(IP伪装),使得eth1出得ip地址为外部地址,和mac地址不匹配,所以会被drop掉。
   为解决这种情况,openstack需启用port-security功能,对网卡设置为allowed-address-pair(允许此port对应得mac支持其他ip)
    neutron port-update  <port-id> --allowed-address-pair ip_address=0.0.0.0/0
5. 如果需要开启dns解析,因为是vm2发送dns消息给vm1,对于vm1来说dns消息是ingress。对于ingress消息,安全组规则都需要添加对应允许规则才能通过
    neutron security-group-rule-create <自定义name> --direction ingress --protocol 17 --remote-ip-prefix 192.168.1.3/32
上一篇:suse双网卡绑定


下一篇:热点 | MongoDB最全面的增强版本 4.4 新特性曝光