Я знаю, що можна надати кілька IP-адрес одному і тому ж інтерфейсу, скажімо, eth0 . Крім того , можна створити кілька віртуальних інтерфейсів на одному фізичному NIC, скажімо , eth0: 1, eth0: 2, ... .
Припустимо, зараз всі вони належать до однієї підмережі. Чи можу я проводити маршрутизацію з ними політики? Наприклад, маючи кілька маршрутизаторів в одній підмережі, я можу призначити різні шлюзи
- різні віртуальні інтерфейси?
- різні IP-адреси одного і того ж NIC?
Я намагався і невдало. Мені зараз цікаво, чи це проблема в моїх конфігураціях, чи проблема в принципі , тобто це просто неможливо зробити.
Редагувати:
Врешті-решт, мені вдалося змусити його працювати, і я хотів би поділитися цим хаутом для випадкового порушника, який потребує. Я використовую дистрибутив для сімейства Debian. Коли я знайду час, опублікую еквівалент для системних дистрибутивів, Fedora, Arch Linux, ...
Я не бажаю використовувати псевдонім IP, оскільки це застаріла технологія, яка зберігається лише для зворотної сумісності, див. Цю сторінку git.kernel.org . Тож я дозволяю маршрутизації eth0 пройти через 192.168.73.129, але тоді я хочу створити новий віртуальний інтерфейс для маршрутизації через 192.168.73.1. Я це роблю так: я не змінюю / etc / network / інтерфейси , де мені нічого не налаштовано. Я додав рядок
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}')
це зберігає ІР-номер віртуального інтерфейсу 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. Так що, якщо я спробую вторгнутись у свій робочий ПК далеко від дому, запити надходять через 192.168.73.1, але відповіді проходять через 192.168.73.129, і сеанс ssh ніколи не встановлюється. Вищезгадана контрацепція вирішує цю головоломку.