Роутинг для сети без шлюза

У вас есть сервер, со своей подсетью (к примеру 1.1.1.2/24), шлюзом, выделенный провайдером. Представим ситуацию, что провайдер вам выделил ещё одну подсеть (к примеру 2.2.2.0/28), которая не пересекается ни с какой другой и не выделил шлюз. Если просто повесить алиасом на сервер адрес 2.2.2.2 то оно будем работать без нареканий. А что делать, если вам нужно этот адрес повесить внутри FreeBSD jail’a или Solaris zone или ещё какой-то хостовой машине внутри виртуальной?

Вот тут могут быть проблемы, так как шлюза из родной подсети нету, а указать из другой (1.1.1.1/24) нельзя. Что же делать? Ответ прост — необходимо специальным образом прописать машрутизацию в гостевой среде.

Пример для Solaris.

Настройки для global zone: ip=10.10.10.4/27 (диапазон 10.10.10.1-31), gw=10.10.10.1 дополнительная сеть, выданная провайдером 10.10.10.96/28 (диапазон 10.10.10.97-110). Хотим присвоить адрес 10.10.10.98 в зоне. Для этого добавляем такой маршрут в global zone:

#route add -net 10.10.10.4 10.10.10.98 -iface

В итоге в зоне мы увидим такую картину:

$netstat -rn

Routing Table: IPv4
  Destination           Gateway           Flags  Ref     Use     Interface
-------------------- -------------------- ----- ----- ---------- ---------
default              10.10.10.1           UG        1      58838
10.10.10.0           10.10.10.98          U         1          1 igb0:1
10.10.10.96          10.10.10.98          U         1          0 igb0:1
224.0.0.0            10.10.10.98          U         1          0 igb0:1
127.0.0.1            127.0.0.1            UH        1          0 lo0:1

Как видим дефолтный машрут добавился, причём совершенно из другой подсети, но так же вместе с ним добавились и другие машруты «на себя»

Правда после ребута зоны (а так же при загрузке) такой машрут не добавляется (даже если использовать параметр ‘-p’, так как маршрутизация поднимается раньше зон)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *