Я знаю, что возможно дать несколько IP-адресов одному и тому же интерфейсу, скажем, eth0. Также возможно создать несколько виртуальных интерфейсов на одном физическом сетевом адаптере, скажем, eth0:1, eth0:2, ....
Предположим, теперь все они принадлежат одной подсети. Могу ли я сделать политику маршрутизации с ними? Например, имея несколько маршрутизаторов в одной подсети, я могу назначить разные шлюзы
- разные виртуальные интерфейсы?
- разные IP-адреса на одной сетевой карте?
Я пытался и потерпел неудачу, пока. Теперь мне интересно, является ли это проблемой в моих конфигурациях или проблемой принципиального характера, т. Е. Это просто невозможно сделать.
РЕДАКТИРОВАТЬ:
В конце концов, мне удалось заставить его работать, и я хотел бы поделиться этим руководством для случайного нуждающегося peruser. Я использую дистрибутив семейства Debian. Когда я найду время, я опубликую эквивалент для системных дистрибутивов, Fedora, Arch Linux, ...
Я не хочу использовать IP-псевдонимы, потому что это устаревшая технология, которая используется только для обратной совместимости, см. Эту страницу git.kernel.org . Поэтому я разрешаю перенаправлению eth0 через 192.168.73.129, но затем я хочу создать новый виртуальный интерфейс для перенаправления через 192.168.73.1. Я делаю это так: я не изменяю /etc/network/interfaces, где я ничего не настраивал. Я добавил строку
200 lab
в /etc /iproute2 /rt_tables. Затем я выдаю команды:
ip link add link eth0 mac0 address 56:61:4f:7c:77:db type macvlan
это создает виртуальный интерфейс mac0 с MAC-адресом 56:61:4f:7c:77:db, который я использую для резервирования адреса в маршрутизаторе;
ip link set mac0 up
это поднимает это
dhclient mac0
и это дает ему IP-адрес (всегда один и тот же, благодаря резервированию адреса);
IP=$(ifconfig | grep -A 1 mac0 | grep inet | awk '{print $2}' | awk -F ":" '{print $2}')
это хранит номер IP виртуального интерфейса mac0 в переменной оболочки IP ;
ip route del default via 192.168.73.1 dev eth0
ip route add default via 192.168.73.129 dev eth0
ip route add 192.168.73.0/24 dev eth0
ip route add default via 192.168.73.1 dev mac0 table lab
ip route add 192.168.73.0/24 dev mac0 table lab
ip route del 192.168.73.0/24 dev mac0 table main
Это настраивает таблицу маршрутизации для использования 192.168.73.129 в качестве шлюза по умолчанию для eth0 и 192.168.73.1 в качестве шлюза для mac0 в лаборатории таблицы маршрутизации;
ip rule add from $IP table lab
это правило определяет , при каких условиях использовать лабораторию таблицы маршрутизации. Все вышеперечисленные команды вставляются в исполняемый скрипт оболочки, а команда для его запуска помещается в /etc/rc.local, так что система при загрузке уже настроена правильно.
Последнее, что нужно сделать, переадресация портов и резервирование адресов. Готово.
Спасибо за вашу помощь.
PS: на случай, если кому-то интересно .... Мне это нужно, потому что у меня дома два маршрутизатора: 192.168.73.1 и 192.168.73.129; первый - обычный маршрутизатор, другой - маршрутизатор DD-WRT, действующий в качестве клиента OpenVPN для сервера OpenVPN моей лаборатории. Весь трафик к 192.168.73.129 перенаправляется в мою лабораторию по очевидным причинам, связанным с работой, в то время как остальная часть семьи использует 192.168.73.1, которая выполняет службу DHCP. Мой рабочий компьютер использует 192.168.73.129 в качестве шлюза. Когда я в дороге, мне иногда нужно получить доступ к бизнесу, связанному с работой, на моем компьютере, на котором работает SSH-сервер, но он проходит через 192.168.73.1. Таким образом, если я пытаюсь подключиться к своему рабочему компьютеру по ssh из дома, запросы приходят через 192.168.73.1, но ответы проходят через 192.168.73.129, и сессия ssh никогда не устанавливается. Придуманное выше решение этой загадки.