OpenStack, как маршрутизировать 2 подсети одной сети

Я относительно новичок в Openstack и не могу найти, как маршрутизировать 2 подсети одной и той же сети.

Моя топология следующая: 1. 1 сеть, 2. 2 подсети в сети. sub1 (192.168.10.0/24) и sub2 (192.168.20.0/24)

Экземпляр в первом sub1 не может видеть другой экземпляр в sub2.

Q1: это нормально? Почему подсеть не маршрутизируется по умолчанию?

Я пытаюсь добавить маршрутизатор, но маршрутизатор возможен только между внутренней сетью и общедоступной сетью, но не между подсетями.

Q2: Итак, какое решение лучше всего подходит для связи между двумя экземплярами в двух подсетях одной и той же сети?

Спасибо заранее.


person jmcollin92    schedule 22.12.2015    source источник


Ответы (2)


Чтобы одна сеть могла общаться с другой сетью, вам нужен маршрутизатор. Я не знаю, откуда вы взяли, что маршрутизаторы маршрутизируют только между общедоступными и частными сетями; для маршрутизатора это просто две разные сети.

У вас есть две сети: 192.168.10.0/24 и 192.168.20.0/24. Для связи любой сети с другой сетью вам нужен по крайней мере один маршрутизатор между ними. Одиночный маршрутизатор является самым простым, поскольку он не будет использовать протоколы маршрутизации или статически определенные маршруты.

person Ron Maupin    schedule 23.12.2015
comment
Спасибо за ваш ответ, но я хочу маршрутизировать между 2 подсетями 1 сети (а не между 2 подсетями 2 сетей). Кстати, вы правы, роутер нужен не только для маршрутизации с общедоступной подсетью, а это решение с добавлением host_routes. См. полный ответ выше. - person jmcollin92; 04.01.2016

Хорошо, после некоторых попыток я наконец нашел решение и хочу поделиться им с вами.

Во-первых, как сказал Рон выше, маршрутизатор не обязательно является шлюзом для общедоступных сетей.

Для точности я хочу иметь только одну сеть с подсетями, а не 2 сети.

Решение состоит в том, чтобы иметь маршрутизатор с интерфейсом в каждой подсети И для добавления информации о маршрутизации в каждой подсети с помощью функций host_routes.

Тепловой стек, делающий это, выглядит следующим образом:

  subnet_public:
    type: OS::Neutron::Subnet
    properties:
      name: PublicSubnet
      cidr: 192.168.11.0/24
      network: { get_resource: network_public }
      allocation_pools: [ { "start" : '192.168.11.1', "end" : '192.168.11.253'}]
      dns_nameservers: [ 'xx.xx.xx.xx', ...]
      enable_dhcp: True
      gateway_ip: 192.168.11.254
      host_routes: [ { 'destination' : '192.168.12.0/24', 'nexthop' : '192.168.11.254'}, { 'destination' : '192.168.13.0/24', 'nexthop' : '192.168.11.254'}]
      ip_version: 4
      # tenant_id: { get_param: tenantId }
  subnet_appli:
    type: OS::Neutron::Subnet
    properties:
      name: ApplicationSubnet
      cidr: 192.168.12.0/24
      network: { get_resource: network_public }
      allocation_pools: [ { "start" : '192.168.12.1', "end" : '192.168.12.253'}]
      dns_nameservers: [ 'xx.xx.xx.xx', ...]
      enable_dhcp: True
      gateway_ip: 192.168.12.254
      host_routes: [ { 'destination' : '192.168.11.0/24', 'nexthop' : '192.168.12.254'}, { 'destination' : '192.168.13.0/24', 'nexthop' : '192.168.12.254'}]
      ip_version: 4
      # tenant_id: { get_param: tenantId }
  subnet_database:
    type: OS::Neutron::Subnet
    properties:
      name: DatabaseSubnet
      cidr: 192.168.13.0/24
      network: { get_resource: network_public }
      allocation_pools: [ { "start" : '192.168.13.1', "end" : '192.168.13.253'}]
      dns_nameservers: [ 'xx.xx.xx.xx', ...]
      enable_dhcp: True
      gateway_ip: 192.168.13.254
      host_routes: [ { 'destination' : '192.168.11.0/24', 'nexthop' : '192.168.13.254'}, { 'destination' : '192.168.12.0/24', 'nexthop' : '192.168.13.254'}]
      ip_version: 4
      # tenant_id: { get_param: tenantId }
  #
  # Router
  router_nat:
    type: OS::Neutron::Router
    properties:
      name: routerNat
      admin_state_up: True
      external_gateway_info: { "network": 'ext-net' }
  gateway_itf:
    type: OS::Neutron::RouterInterface
    depends_on: [ network_public, subnet_public, router_nat ]
    properties:
      router_id: { get_resource: router_nat }
      subnet: { get_resource: subnet_public }
  router_appli_itf:
    type: OS::Neutron::RouterInterface
    depends_on: [ network_public, subnet_appli, router_nat ]
    properties:
      router_id: { get_resource: router_nat }
      subnet: { get_resource: subnet_appli }
  router_database_itf:
    type: OS::Neutron::RouterInterface
    depends_on: [ network_public, subnet_database, router_nat ]
    properties:
      router_id: { get_resource: router_nat }
      subnet: { get_resource: subnet_database }
person jmcollin92    schedule 04.01.2016
comment
Более подробный документ находится здесь: xuhanp.tumblr.com /post/107088879052/ - person jmcollin92; 05.01.2016