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/ пинг с адресами, и если я попадаю через консоль, я не могу снова выйти в Интернет.
Любые предложения относительно того, что я скучаю?