Как мне настроить Xen, чтобы разрешить несколько разных диапазонов IP в domU?

3

Я пытаюсь запустить Xen в настройках, где domU имеют совершенно другой IP, чем dom0 (не в том же диапазоне сети). В этом ответе все работало в том же диапазоне / 24, но не с совершенно не связанными IP-адресами.

dom0's / etc / network / interfaces:

# The primary interface.
# The configuration is done in the bridge.
auto eth0

# The bridge for Xen to use.
auto xenbr0
iface eth0 inet static
        bridge_ports eth0
        address 188.165.X.Y
        netmask 255.255.255.0
        network 188.165.X.0
        broadcast 188.165.X.255
        gateway 188.165.X.254

мост dom0 ( brctl show):

bridge name     bridge id               STP enabled     interfaces
eth0            8000.00259022aab2       no              peth0
                                                        vif1.0

Доми / etc / network / interfaces:

# The primary network interface
auto eth0
iface eth0 inet static
    address 91.121.A.B
    gateway 188.165.X.254
    netmask 255.255.255.0

Я пробовал разные маски в конфигурации domU. Как мне настроить устройство, чтобы домен мог подключаться к сети в рабочем режиме?

Саймон
источник
Привет Саймон - как маршрутизируется 91.121.xx? Маршрутизируется ли он в Интернете до 188.165.X.254?
Пол
Я бы так предположил. IP-адрес предоставляется хостом моего центра обработки данных, я предполагаю, что шлюз, который они используют для моего основного IP-адреса, будет таким же, как и для дополнительного IP-адреса.
Саймон

Ответы:

2

Я предполагаю, что 91.121.xx маршрутизируется через Интернет к шлюзу на шлюзе 188.165.X.254.

Затем шлюзу нужен маршрут для 91.121.xx, чтобы перейти к хосту VM в 188.165.XY

Это означает, что любой трафик, пытающийся попасть на 91.121.xx, попадет на ваш сервер Xen.

В предыдущем вопросе все интерфейсы были в одной сети, и поэтому все можно было соединить с главным интерфейсом - это соединение уровня 2.

Однако в этом случае гости находятся в сети, отличной от хоста. Нам нужен слой 3 - маршрутизируемый - соединение.

Две вещи должны произойти на хосте

1) Нужен интерфейс в сети 91.121.xx 2) Нужно стать маршрутизатором

Для (1) мы имеем такую ​​же настройку сети, как и раньше, однако физический интерфейс не подключен к мосту. Мы создаем мостовой интерфейс для подключения к виртуальным машинам, но даем ему свой собственный адрес отдельно от интерфейса eth0:

auto lo br0 eth0

iface lo inet loopback

iface br0 inet static
        bridge_ports none
        address 91.121.x.1
        netmask 255.255.255.0

iface eth0 inet static
       address 188.165.X.Y
       netmask 255.255.255.0
       network 188.165.X.0
       broadcast 188.165.X.255
       gateway 188.165.X.254

Как только это произойдет, сервер будет иметь два интерфейса и может выступать в качестве маршрутизатора. Это выключено по умолчанию. Измените /etc/sysctl.confи убедитесь, что следующая строка не закомментирована:

 net.ipv4.ip_forward=1

Вы можете временно включить это в командной строке с помощью следующего, но указанное выше изменение необходимо, чтобы пережить перезагрузку:

 sysctl -w net.ipv4.ip_forward=1

Теперь сервер будет маршрутизировать пакеты, поступающие на eth0, предназначенные для 91.121.xx, из интерфейса br0. Так что теперь нам нужно соединить VMS с этим интерфейсом. Это именно то, что вы обычно делаете, просто поместите это здесь для полноты:

В .cfg:

 vif = ['bridge=br0, mac=00:16:3E:12:16:19']

В файле интерфейсов domU:

auto eth0
iface eth0 inet static
    address 91.121.A.B
    gateway 91.121.x.x (this is the dom0 br0 interface address)
    netmask 255.255.255.0

Вы можете проверить, что все работает правильно по мосту, пропингуя 91.121.x.xот domU до ping dom0 и пинг 91.121.x.254до ping domU от dom0. Затем пропингуйте внешний интерфейс dom0 из domu:188.165.X.Y

Первый пинг подтверждает, что мост работает, а второй - маршрутизация работает.

Павел
источник
Я обнаружил проблему с этой настройкой, когда некоторые IP-адреса больше недоступны. Я сделал отдельный вопрос для решения, здесь . Если бы вы были так любезны проверить это, это было бы здорово.
Саймон