Чи можу я робити маршрутизацію політики на віртуальному інтерфейсі?


2

Я знаю, що можна надати кілька IP-адрес одному і тому ж інтерфейсу, скажімо, eth0 . Крім того , можна створити кілька віртуальних інтерфейсів на одному фізичному NIC, скажімо , eth0: 1, eth0: 2, ... .

Припустимо, зараз всі вони належать до однієї підмережі. Чи можу я проводити маршрутизацію з ними політики? Наприклад, маючи кілька маршрутизаторів в одній підмережі, я можу призначити різні шлюзи

  1. різні віртуальні інтерфейси?
  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 ніколи не встановлюється. Вищезгадана контрацепція вирішує цю головоломку.

Відповіді:


3
  1. Так, ти можеш.
  2. Так, ви можете, якщо ви говорите про IP на eth0, eth0: 1 eth0: 2 тощо. Я ніколи не бачив декількох IP-адрес в одному NIC (саме для цього: 1: 2).

Все це можна виконати за допомогою команди ip.

Причина у вас виникають проблеми з маршрутизацією - це те, що у вас є лише одна таблиця маршрутизації, а оскільки інтерфейси знаходяться в одній підмережі, GW для цієї підмережі буде застосовано за замовчуванням. Якщо ви створюєте декілька таблиць маршрутизації, ви можете спрямовувати трафік на них і виходити з них, залежно від інтерфейсу, на який вони входили, або початкового IP-адреси або будь-якого іншого типу критеріїв, доступних вам у цьому контексті.

http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.html


Можливо, вам буде забавно побачити мою
редакцію

Дуже приємна робота, і чудово задокументована!
NickW

2

Порушення цього:

  • ' Інтерфейс ' (інтерфейс Ethernet, щоб бути більш конкретним) є фактичним обладнанням, має унікальну MAC-адресу і працює на фізичному рівні та рівні зв'язку даних. Це насправді робить роботу спілкування.
  • Потім ви можете надсилати та отримувати IP-пакети на рівні OSI пакету / дейтаграми через цей інтерфейс.
  • Віртуальний інтерфейс - це абстракція програмного забезпечення в ядрі, що посилається або на фактичні апаратні інтерфейси, або на тунелі (на мою думку, це абстракції інтерфейсу).
  • Підмережа - це діапазон можливих IP-адрес, і тому потрібен маршрутизатор.
  • Маршрутизація політики проводиться на основі іншого, ніж адреса призначення, як, наприклад, маршрутизація на основі адреси відправника для спрямування певного трафіку по іншому маршруту.

Те, де я заїжджаю, - це "наявність декількох маршрутизаторів в одній підмережі".

Також без маршрутизатора між ними, я думаю, що шлюз може одночасно обробляти лише одне підключення до мережевого інтерфейсу.

Сподіваюся, це може допомогти вам подумати про це, якщо нічого іншого. Мережеве програмне забезпечення може бути дуже складним, і іноді мене дивує те, що відбувається насправді.


Вдома у мене є два шлюзи, один звичайний, один виступає VPN-клієнтом на сервері OpenVPN моєї лабораторії. Залежно від того, який шлюз я вибираю, я можу / не можу отримати доступ до локальної мережі мого університету, і мені здається (або ні), коли я працюю з ним до загального Інтернету. Я хотів би отримати доступ до свого ПК вдома, коли я в дорозі, через свій домашній шлюз і отримаю відповідь назад, навіть якщо шлюз до ПК - це інший шлюз, тобто той, що підключений до моєї лабораторії.
MariusMatutiae

+1, тому що ваша відповідь теж мене чомусь навчила. До речі, дивіться, для чистої забави, редагування мого питання.
MariusMatutiae

Ні, не уявляю, що я тебе чомусь навчив, я все ще вбираю те, що я дізнався від тебе.
Еліптичний вигляд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.