Мой сервер 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 и вуаля, настроить так же, как любой другой интерфейс, должно работать нормально.