1

Около месяца назад я задал этот вопрос на Superuser. Ответ, данный там, конечно, работает, но я столкнулся с проблемой, о которой раньше не думал.

Настройка, которую я выполнял (на основе ранее упомянутого ответа) была

auto eth0
iface eth0 inet static
    address a.b.c.d
    netmask 255.255.255.0
    network a.b.c.0
    broadcast a.b.c.255
    gateway a.b.c.254

auto xenbr0
iface xenbr0 inet static
    bridge_ports none
    address e.f.g.1
    netmask 255.255.255.0

Затем я бы сконфигурировал domU для использования адреса в диапазоне, который был назначен мне центром обработки данных. В частности, этот диапазон будет efg24/29, что даст мне 8 IP-адресов, доступных для domU. Шлюзом будет IP-адрес моста, откуда пакеты направляются через eth0 во внешний мир. Это сработало отлично.

Проблема, которую я осознал пару дней назад, заключается в том, что domU никогда не сможет достичь таких адресов, как efg1, потому что это сам мост. Но что, если одному из domU действительно необходим доступ к efg1 (фактическому внешнему IP)?

Итак, я начал перемещать все внутри сетей, которые мне назначены. Тогда проблема заключалась в том, что с блоком /29 я бы оставил только 5 IP-адресов доступными для domU:

auto xenbr0
iface xenbr0 inet static
    bridge_ports none
    address e.f.g.25
    netmask 255.255.255.248

Я всегда теряю три адреса в своей сети (один для "сети", один для самого моста и один для широковещательного адреса). Я фактически не определял сеть и широковещательный адрес, но ifconfig прежнему отображает широковещательный адрес как 31 (последний IP-адрес в сети), и я не могу разместить мост по адресу 24 любым рабочим способом. Проблема становится еще хуже с сетью /30, где у меня будет только один из четырех IP-адресов, доступных для domU (да, у меня также есть такая сеть).

Поскольку я плачу за IP-адрес, я хочу максимально эффективно использовать их. Затем я начал исследовать маршрут Xen. Сейчас я пытаюсь использовать vif-route и network-route в /etc/xen/xend-config.sxp чтобы выполнить настройку следующим образом:

     +-----------------------------+        +-------------+
     |            dom0             |        |     domU    |
     |                             |        |             |
-------eth0                vif1.0--------------eth0       |
     | a.b.c.d              ????   |        |  e.f.g.24   |
     |                             |        |             |
     +-----------------------------+        +-------------+

Таким образом, центр обработки данных будет отправлять пакеты для моих IP-адресов на eth0 dom0, dom0 направляет его на правильный vif, который передает его на eth0 domU.

Неважно, что я пытаюсь, я не могу заставить его работать, без каких-либо значимых сообщений об ошибках, с которых можно начать отладку. Два дня постоянных поисков в Google мне не помогли, и сейчас я как бы смотрю на это с пустыми глазами.

Я смотрю на это неправильно или я просто неправильно настраиваю вещи? Возможна ли такая установка? Если так, что я делаю не так?

1 ответ1

1

Мне удалось заставить его работать. Он не на 100% чист, как мне бы хотелось, но, по крайней мере, он функционален.

Мое решение в основном состоит в запуске моста с /24 сетевой маской и без IP-адреса. Когда мост активен, я вручную добавляю маршрут для IP-блока /29, назначенного моему серверу. В domU я запускаю интерфейс с правильным IP и маской сети /24, без шлюза. Когда интерфейс работает, я вручную добавляю маршрут к адресу eth0 моего dom0 и делаю его шлюзом по умолчанию. Конечно, dom0 настроен на маршрутизацию IP-пакетов между сетями.

dom0's /etc/network/interfaces

### The primary adapter ###
# These settings are provided by the dServer host
auto eth0
iface eth0 inet static
        address a.b.c.d
        netmask 255.255.255.0
        network a.b.c.0
        broadcast a.b.c.255
        gateway a.b.c.254

### Network bridges ###
auto xenbr0
iface xenbr0 inet manual
        bridge_ports none
        network e.f.g.0
        netmask 255.255.255.0
        gateway a.b.c.254

### Static routes ###
# No route for e.f.g.0/24 was automatically set
# I assume that's due to the bridge not having an IP address assigned
up ip route add e.f.g.h/29 dev xenbr0
down ip route delete e.f.g.h/29

Доми /etc/network/interfaces

# The primary network interface
auto eth0
iface eth0 inet static
        address e.f.g.h
        netmask 255.255.255.0

# Static routing
up ip route delete e.f.g.0/24
up ip route add a.b.c.d dev eth0
up ip route add default via a.b.c.d
down ip route delete default via a.b.c.d
dow ip route delete a.b.c.d

Включите маршрутизацию пакетов, убедившись, что это задано в /etc/sysctl.d/xen-routing.conf (имя файла произвольное, но должно заканчиваться на .conf)

net.ipv4.ip_forward=1

После того, как вы это сделаете, вы можете включить конфигурацию, перезагрузившись или сделать это онлайн с

sysctl -w net.ipv4.ip_forward=1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .