KVM / Vagrant+Virtualbox создает 2 маршрута по умолчанию, предотвращая доступ из сети

Обновление. Похоже, что из-за того, что определены 2 шлюза (с использованием KVM или Vagrant + Virtualbox), удаление первого из них после запуска виртуальной машины решает проблему.

q1. Почему 2 шлюза мешают мне "войти" q2. Какой-нибудь способ предотвратить его настройку - kvm & vagrant?

[root@util ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 eth0
0.0.0.0         xxx.yyy.217.95  0.0.0.0         UG    102    0        0 eth2
10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
xxx.yyy.190.224 0.0.0.0         255.255.255.240 U     102    0        0 eth2
uuu.vvv.217.95  0.0.0.0         255.255.255.255 UH    102    0        0 eth2
192.168.34.0    0.0.0.0         255.255.255.0   U     101    0        0 eth1

[root@util ~]# route del default gw 10.0.2.2

[root@util ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         xxx.yyy.217.95  0.0.0.0         UG    102    0        0 eth2
10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
xxx.yyy.190.224 0.0.0.0         255.255.255.240 U     102    0        0 eth2
uuu.vvv.217.95  0.0.0.0         255.255.255.255 UH    102    0        0 eth2
192.168.34.0    0.0.0.0         255.255.255.0   U     101    0        0 eth1


Оригинальный вопрос

У меня есть выделенный сервер Hetzner с минимальной установкой Centos7 и диапазоном IP-адресов /27. Я хочу запустить несколько vms (с Centos7 на них) - сеть, базу данных и т. Д., Причем только те, кому это нужно, с публичным IP-адресом. Следующая диаграмма показывает идею только с одним веб-виртуальным компьютером и одним виртуальным компьютером. Я планирую использовать сеть NAT для SSH, затем использовать брандмауэры для минимизации портов для размещения и соответствующих гостей. Там будет несколько веб-серверов, поэтому я не могу перенести порт с хоста.

Я не могу использовать "прямой" мост, потому что не могу управлять MAC-адресами IP-диапазона, который мне выделен - вместо этого я должен их маршрутизировать.

ПРИМЕЧАНИЕ. - АДРЕС БД НЕПРАВИЛЬНО ПОКАЗАН - он должен быть 192.168.122.66. Это ошибка с диаграммой, а не то, что я делаю во время установки

Я могу заставить публичный IP-адрес работать нормально и аналогично сети NAT. Я не могу заставить их работать одновременно - я не могу войти в ssh, и если я получу консоль, я не смогу снова выйти в Интернет.

Сеть NAT

Это использует default сеть и 'virbr0', который поставляется с установкой KVM/libvirt.

virsh # net-dumpxml default
<network>
  <name>default</name>
  <uuid>4b80bcd3-c9bd-4044-9d56-4eb451676b4f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:f2:6b:81'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

Когда я создаю VM, я использую

virt-install  ... --network=bridge=virbr0,model=virtio 

Затем на ВМ,

[root@utilvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.122.65
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=a66ceee1-ba4c-4eaf-8909-5bbcec76ccc8
DEVICE=eth0
ONBOOT=yes
IPV6_PRIVACY=no

Я могу ssh от хозяина к гостю, и гость может видеть интернет.

Все хорошо.

Публичный IP-адрес

В хост-системе

[root@dev-vmhost-55 kfj]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s31f6
# /etc/sysconfig/network-scripts/ifcfg-enp0s31f6
DEVICE=enp0s31f6
ONBOOT=yes
BOOTPROTO=none
IPADDR=xxx.yyy.217.95
NETMASK=255.255.255.255
SCOPE="peer xxx.yyy.217.65"

IPV6INIT=yes
IPV6ADDR=2a01:4f8:13b:1ad3::2/64
IPV6_DEFAULTGW=fe80::1
IPV6_DEFAULTDEV=enp0s31f6

а также

[root@dev-vmhost-55 kfj]# cat /etc/sysconfig/network-scripts/ifcfg-brpub0
# /etc/sysconfig/network-scripts/ifcfg-brpub0 (pointopoint, Hetzner Standard)
DEVICE=brpub0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=uuu.vvv.190.225
NETMASK=255.255.255.240
STP=off
DELAY=0

Поэтому я выделил первый IP-адрес в качестве IP-адреса общего моста.

Когда я создаю VM, я делаю

virt-install  ... --network=bridge=brpub0,model=virtio

затем на хост-машине, воспользовавшись графической установкой, имею

[root@util-dev-vm ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="9a608b24-fa1e-44f2-a817-6ca4d4069b8a"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="uuu.vvv.190.230" <<<<<<< One of the IP range
PREFIX="28"
GATEWAY="xxx.yyy.217.95" <<<<<<< Public IP address of host
IPV6_PRIVACY="no"

Это прекрасно работает - я могу подключиться к виртуальной машине через Интернет и с хоста, и я снова могу выйти из виртуальной машины.

Все вместе

Когда я пытаюсь собрать их вместе, я

virt-install  ... --network=bridge=brpub0,model=virtio --network=bridge=virbr0,model=virtio ...

и установить ifcfg-eth0 а также ifcfg-eth1 как уместно. Как я уже говорил ранее, сеть, похоже, не работает - я не могу SSH/ пинг с адресами, и если я попадаю через консоль, я не могу снова выйти в Интернет.

Любые предложения относительно того, что я скучаю?

0 ответов

Другие вопросы по тегам