Назад | Перейти на главную страницу

Виртуальные интерфейсы с маршрутами по умолчанию

Мой сервер Ubuntu имеет один физический интерфейс eth0. Я хочу назначить серверу 3 IP (разные подсети). Я не могу использовать инструменты создания виртуального интерфейса по умолчанию, такие как ifconfig или ip addr add (например. eth0:0), потому что для каждого из этих 3 IP мне нужно указать шлюз по умолчанию. Итак, можно ли иметь мост, к которому я могу прикрепить eth0 (и несколько интерфейсов tap или tun с IP-адресами, которые я хочу), но каждое из виртуальных устройств может подключаться к подсетям с мобильным доступом eth0.

РЕДАКТИРОВАТЬ1:

Представьте, что мне нужно 5 интерфейсов Ethernet для подключения к 5 разным сетям. Но я не могу позволить себе 5 интерфейсов. Поэтому я покупаю неуправляемый коммутатор и подключаю кабели cat5 от всех 5 сетей к этому коммутатору, а один порт этого коммутатора подключен к eth0 сервера Ubuntu. Чтобы иметь дело со всеми 5 сетями на сервере Ubuntu, я создаю 5 виртуальных интерфейсов, которые ведут себя как физические интерфейсы (eth1, eth2 и т. Д.), Которые проходят через eth0 и в конечном итоге у переключателя. Я не возражаю, если все эти отдельные сети будут проходить через один неуправляемый коммутатор. Но я хочу, чтобы мой сервер Ubuntu обрабатывал эти сети, как если бы они были подключены к 5 физическим интерфейсам.

Вы хотите влиять на решения о маршрутизации в ядре. Обычно это называется маршрутизацией политики: в вашем случае я предполагаю, что вы хотите, чтобы политика, действующая на исходный адрес, возвращалась к этому интерфейсу. Сетевой трафик, поступающий на один интерфейс, должен выходить на этом интерфейсе, а пакеты на определенном интерфейсе должны использовать правила, указанные для этого интерфейса, а не таблицу по умолчанию. Вам нужна команда ip rule.

При этом в OP недостаточно информации, чтобы с уверенностью сказать, что необходима политическая маршрутизация.

В системе может быть только один маршрут по умолчанию.

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

    route add 172.16.1.0/24 172.26.1.250

или

    ip route add 172.16.1.0/24 via 172.26.1.250 dev eth0:1

Эти команды можно добавить в / etc / network / interfaces.

Вы можете использовать eth0:x формат для добавления дополнительных IP-адресов. Только не забудьте добавить соответствующую сетевую маску в каждую сеть. Вы можете маршрутизировать дополнительные сети на каждом интерфейсе, как показано.

iface eth0:1 inet static
    address 192.0.2.6
    netmask 255.255.255.0
    post-up route add -net 198.51.100.0/24 netmask 255.255.255.0 gw 192.0.2.1

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

Если вы не используете маршрутизацию политики или аналогичное распределение нагрузки соединения, у вас должен быть только один маршрут по умолчанию.

После многих месяцев поиска в Google я думаю, что нашел ответ. Это можно сделать с помощью инструмента vde, который используется для создания интерфейсов для гостевых ОС в KVM. Вот шаги:

Установите программное обеспечение:

sudo apt-get install vde2

Создайте виртуальный коммутатор:

sudo vde_switch -s /tmp/switch1 -daemon

Создайте кран-устройство:

sudo vde_switch -tap tap0 -daemon

Создайте другое устройство крана (необходимо указать новый файл сокета):

sudo vde_switch -tap tap1 -sock /var/run/vde.ctl/ctl1 -daemon

Любое количество tap устройства могут быть созданы при условии, что каждое получит новый файл сокета.

Подключите физическое устройство к переключателю vde:

sudo vde_pcapplug -d eth0

Назначьте IP-адреса обоим устройствам с ответвлениями (мой eth0 на 192.168.1.10/24):

sudo ifconfig tap0 192.168.1.80 netmask 255.255.255.0
sudo ifconfig tap1 192.168.1.90 netmask 255.255.255.0

Я поместил все интерфейсы в одну сеть, чтобы я мог пинговать друг друга и проверить, хорошо ли работает настройка.

Теперь пингуйте ip 192.168.1.80 и 192.168.1.90 с другого хоста, который находится в той же сети (возможно, с вашей машиной Windows).

Из Ubuntu другие хосты в сети могут быть опрошены из нового tap устройства вроде так:

ping -I tap0 192.168.1.1

Сейчас ifconfig может использоваться для переназначения IP-адресов, принадлежащих отдельным сетям, для устройств с подключением.

Это оно. Отдельные виртуальные интерфейсы, которые действуют как отдельные интерфейсы.

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

почему бы вам не использовать простую утилиту tuctl в Linux:

tunctl -u root -i eth5

Это создаст новый интерфейс eth5, присвоив ему IP / MASK и вуаля, настроить так же, как любой другой интерфейс, должно работать нормально.