Теорія штука хороша, але без реального застосування — безглузда і непотрібна. Перечитуючи третю частину серії «лікбезів» я зрозумів, що без ілюстрації її реальними прикладами, вона залишиться надто сухою і майже непридатною до використання. Писати просто «в ефір» я ніколи не збирався, тому пропоную декілька конфігурацій, які, сподіваюся, наочно покажуть що і як робиться.
Новій мережі B ми дамо адресу 192.168.1.0/24, а основним шлюзом буде ще один інтерфейс (мережна картка) вузла ab, а адресою буде 192.168.1.1, що заодно дозволить не заморочуватися з доступом в інтернет з мережі B.
Таким чином матимемо наступні маршрути:На комп’ютері з мережі A:
192.168.0.0/24 безпосередньо через мережний інтерфейс
0.0.0.0/0 через вузол 192.168.0.1На комп’ютері з мережі B:
192.168.1.0/24 безпосередньо через мережний інтерфейс
0.0.0.0/0 через вузол 192.168.1.1На комп’ютері ab:
Перевіряємо що буде, якщо комп’ютер з мережі A відправить пакет комп’ютеру з мережі B. Пакет адресований не «своїй» мережі буде направлений через вузол 192.168.0.1 — наш ab. Там запис в таблиці маршрутизації каже, що мережа 192.168.1.0/24 знаходиться безпосередньо на інтерфейсі №2 і пакет перешлеться туди. Відповідь прийде аналогічним чином. Це все, звісно, якщо ви не налаштуєте на вузлі ab якогось фаєрвола і не забороните такі пересилки.
192.168.0.0/24 безпосередньо через інтерфейс №1
192.168.1.0/24 безпосередньо через інтерфейс №2
ще щось на інтерфейсі до провайдера
0.0.0.0/0 через основний шлюз провайдера
На пальцях легко порахувати, що необхідна маска — 28 (255.255.255.240). Щоб недовго рахувати віддаватимемо останній підходящий кусок — 195.5.29.240/28. Клієнт в себе налаштовує все як звичайно, а от у вас додається проблем: для того щоб комунікація з мережею клієнта була можливою зі всієї великої мережі потрібно на кожному її вузлі прописати маршрут до клієнтської підмережі. Якщо клієнт з’єднаний через вузол цієї ж мережі — слід вказати цей вузол, якщо ж ні — слід вказати основний шлюз (для простоти вважатимемо, що це знову перший вузол мережі: 195.5.29.1), а вже на ньому — подальший напрямок.
Таким чином на основному шлюзі цікаві для нас маршрути матимуть вигляд:195.5.29.0/24 безпосередньо через відповідний інтерфейс
195.5.29.240/28 через вузол-шлюз до клієнта
Коли запит ітиме до адресного простору клієнта, то в таблиці маршрутизації вибереться запис з найбільшою маскою і пакет переспрямується в мережу клієнта, коли ж запит ітиме до іншої адреси 195.5.29.x — все пройде як завжди. Ще раз нагадаю, що маршрути слід прописувати на всіх ваших вузлах даної мережі, бо якщо цього не зробити, то такий вузол вважатиме, що вузли мережі клієнта досяжні без посередників і, відповідно, не зможе з ними зв’язатися, бо це не так.
Після «лікбезу» і попередніх прикладів ви б могли підрахувати, що треба брати діапазон з восьми адрес: дві службових на мережу і бродкаст, ще одну на шлюз в цю мережу і потрібні 2-3-4 перетворюються на 5-6-7. Якщо не хочете пояснювати начальству чому для підключення двох серверів потрібно оплачувати вісім адрес, то я розкажу як.
Ідея полягає в тому, щоб замість того, щоб робити з цілого наданого вам діапазону мережу, зробити купку мереж — кожна з однієї IP-адреси. Тобто вузли між собою з’єднуєте «сірими» адресами, наприклад 192.168.0.1/24 — шлюз, 192.168.0.2/24 перший сервер і т.д., і на шлюзі пишете отакі маршрути:195.5.29.252/32 через 192.168.0.2
195.5.29.253/32 через 192.168.0.3
195.5.29.254/32 через 192.168.0.4
195.5.29.255/32 через 192.168.0.5
На вузлі адресу можна «повішати» на той же інтерфейс, що і «сіру», хоча мені більше до вподоби для цих цілей використовувати loopback-пристрій (але то в Linux'i, а в вінді він так просто не доступний).
З власного досвіду: якщо на роутері вже є маршрут на якусь мережу, а ви схочете адресу цієї мережі з маскою 32 віддати якомусь вузлу — нічого у вас не вийде — доведеться переконфігуровувати всю мережу (хоча по-ідеї маска 32 мала б забезпечувати перевагу такого маршруту, проте на практиці перевагу має службова адреса мережі).
Сподіваюся тепер біганина пакетів між мережами стане для вас зрозумілішою і при потребі ви зможете все порахувати і налаштувати.
Працює на AutoGenCMS 0.2.6