Поділ на VLAN на GNU/Linux (Частина 3)

21 березня 2024 2 хвилин Автор: Lady Liberty

Ви дізнаєтеся, як працюють свитчі (комутатори) та їх роль у з’єднанні різних пристроїв у мережі. Детально розглядається процес налаштування та підключення пристроїв до свитків, включаючи важливість правильного маркування кабелів та портів для полегшення керування мережею. Основна увага приділяється розумінню та настроюванню VLAN для ізоляції трафіку у великих мережах, покращення безпеки та оптимізації продуктивності.

Розподіл на VLAN-и

Давайте почнемо будувати інфраструктуру з елемента, який пов’язує все – світла. Якщо ви не знайомі з мережею, рекомендується заздалегідь ознайомитися з темами 42 і 43 з курсу “Основи GNU/Linux”. Натисніть на іконку з 2 стрілками в лівій панелі GNS, виберіть комутатор Ethernet і перетягніть його в центр. Офіційна назва комутатора -switch, ну або мережевий комутатор. А значок GNS-це загальне позначення. Мережеві адміністратори зазвичай керують комутатором, але системні адміністратори повинні мати уявлення про те, що вони відповідають за підключення сервера до комутатора і повинні мати можливість налаштувати щось зі свого боку. На малих підприємствах Системний адміністратор також часто відповідає за Налаштування мережі.

Комутатор насправді являє собою пристрій, що складається з великої кількості портів. Це основне призначення, яке полягає в передачі трафіку з кабелю, підключеного до одного порту, на кабель, підключений до іншого. Існують невеликі комплекти на 5-8-12 портів, але для середніх і великих компаній найчастіше використовується 24 або 48 портів. В даний час більшість портів комутатора є гігабітними, але є порти на 10 гігабіт, 25, 40 і навіть 100. Теоретично, звичайний комп’ютер може бути свідком, але коли справа доходить до високої швидкості, на комутаторі є спеціальні чіпи, які швидше обробляють трафік.

Залежно від завдання мережевий працівник ділить комутатор на кілька рівнів (доступ, підрозділ, ядро). Комутатори доступу зазвичай знаходяться на кожному поверсі будівлі, мають безліч портів Ethernet і в основному призначені для підключення користувачів, принтерів та іншого обладнання. Довжина кручений пари не може перевищувати 100 метрів.В іншому випадку сигнал в дроті просто пропаде. Отже, якщо будівля велика, на кожному поверсі буде розміщено 1 або більше сувоїв. Ці Комутатори також підключені до інших комутаторів розподілу живлення за допомогою 10-гігабітного оптичного кабелю. Порт, що з’єднує деякі Комутатори, називається висхідною лінією зв’язку, яка створюється з іншими комутаторами. Свого роду вихід з комутатора. Розподільний комутатор також підключений до базового комутатора, через який проходить весь трафік. Насправді швидкість залежить від розміру інфраструктури і обсягу трафіку – при невеликій інфраструктурі немає сенсу мати таку топологію і таку швидкість. Але коли інфраструктура зростає, все зводиться до такої схеми.

У місцях, де стоять комп’ютери чи інші кінцеві пристрої – назвемо їх endpoint-ами – на стіні чи підлозі роблять спеціальні сокети, куди і вставляється мідний провід.

Ці роз’єми призведуть до невеликої річки і також будуть відображатися як розетки, але будуть розташовуватися в 1 або більше рядів. Вони називаються комутаційними панелями. І патч-корд йде від комутаційної панелі для доступу до комутатора. Роз’єм на комутаційній панелі, підключений до роз’єму на комп’ютері користувача, також позначений таким же чином. Умовно, все на комутаційної панелі розташоване в числовому порядку – 1, 2, 3 і т.д. крім того, розетка за першим портом комутаційної панелі позначена знаком 1 в будь-якому приміщенні. І необхідно позначити кабель, який підключений до комутатора від комутаційної панелі – 5 роз’ємів від комутаційної панелі, щоб було зрозуміло, до якого порту комутатора він підключений. А завтра, якщо вам потрібно щось зробити, підійдіть до комп’ютера, і ви побачите, що на сокеті написано 5, а це значить, що вам потрібно подивитися на 5-й порт на комутаційної панелі. І там, згідно з маркуванням, ви дізнаєтеся, до якого порту на комутаторі буде підключатися кабель. Тому що проводів може бути багато, що ускладнює розуміння без маркування.

Точне та актуальне маркування-завдання ІТ-відділів, включаючи системних адміністраторів. І було б чудово, якби ви натрапили на доброго підрядника, який провів кабель, встановив розетку і все позначив. Але ви той, хто керує інфраструктурою, завтра ви придбаєте новий комплект, заміните кабель, щось зміните–тому намагайтеся підтримувати маркування в актуальному стані.

Ну і в серверній, підключаючи різні дроти до серверів та іншого обладнання – не важливо, електрика, ethernet та інше – також обов’язково все маркуйте. Для цього є спеціальні пристрої, які на клейкій стрічці друкують текст – вони називаються label-printer. І намагайтеся все маркування тримати згідно з якимось стандартом – потрібно дуже коротко і точно описувати, що підключено.

Наприклад, на одній стороні дроту написано, що він буде вести до порту 3 першого ДБЖ, а на іншому кінці, підключеному до ДБЖ, написано, що цей кабель буде вести до 3-го Джерела живлення 2-го сервера. І все це повинно вміститися в кілька букв на тонкому аркуші паперу, і тільки глянувши на це, стає зрозуміло, що це таке і до чого це призведе. У разі виникнення проблеми постарайтеся випадково не висмикнути провід і повністю все не зіпсувати. Навіть якщо у вас багато кабелів, ви завжди будете знати, які дроти до чого підключені і де.

Поверніться до перемикача. Навіть якщо здається, що вони роблять легку роботу, вони мають величезні можливості, особливо в сучасному світогляді. Але їх головне завдання-з’єднати тих, хто хоче бути на зв’язку. У моделі OSI це 2-й рівень, канал, який часто називають l2, тобто рівень 2. На цьому рівні пристрої отримують доступ один до одного за MAC-адресою, і комутатор запам’ятовує, який порт має яку MAC-адресу. Для цього candle має таблицю Mac-адрес.

Щоб зрозуміти і побачити це, давайте візьмемо 3 хоста. Переконайтеся, що 1 комутатор і 3 віртуальні машини використовують alma. Потім на лівій панелі натисніть на останню піктограму, подібну до дроту, потім натисніть на комутатор і виберіть Ethernet0 та alma-1. Знову натисніть перемикач, виберіть Ethernet1 і натисніть alma-2. Повторіть те ж саме для Alma-3. Потім клацніть правою кнопкою миші або клацніть значок дроту. Отже, ми підключили все до однієї мережі. Слід зазначити, що разом з Alma з’явилася мітка –e0 – це вказує на те, що провід був підключений до нульового адаптера. Востаннє, коли ви налаштували 4 адаптери для віртуальної машини відповідно, їх імена були б e0, e1, e2 та e3. e0, e1, e2 підключені 3 дроти з боку комутатора.

Після цього запустимо всі 3 віртуалки. Так як наша мережа поки що не готова, по ssh, до них підключитися не зможемо. Тому цього разу вдамося до консолі віртуалок. Запустіть віртуалбокс, виберіть запущені віртуалки та натисніть show.

Потім назвіть кожну систему відповідно – alma1, alma2, alma3:

hostnamectl set-hostname alma1
hostnamectl set-hostname alma2
hostnamectl set-hostname alma3

Ну і перекиньтесь, або запустіть bash, щоб у запрошенні консолі відображалося нове ім’я. Це дозволить нам не плутатися.

Тепер подивимося список інтерфейсів:

ip a

Як бачите, система показує 4 інтерфейси, за винятком loopback. І лише 1 з них знаходиться в UP–e-enp0s3. Отже, він відповідає інтерфейсу e0, який ми бачили в GNS. У цій мережі є лише 3 хости та комутатори, і немає сервера DHCP для розподілу IP-адреси, тому інтерфейс не має IP-адреси.

Давайте видамо кожній машинці за тимчасовою адресою, мережу 10.0.0.0 та адреси 1,2,3 відповідно:

ip address add 10.0.0.1/24 dev enp0s3
ip address add 10.0.0.2/24 dev enp0s3
ip address add 10.0.0.3/24 dev enp0s3

Маску виставимо /24. Про IP адреси ми поговоримо іншим разом, тому сьогодні обговоримося чимось дефолтним. Така маска нам каже, що у нашій мережі знаходяться всі адреси від 10.0.0.0 до 10.0.0.255. Нам цього вистачає. Давайте переконаємося, що IP-адреса з’явилася на інтерфейсі:

ip addr show enp0s3

Як бачите, адреса прописалася. Ну і перевіримо ще висновок команди:

ip ro sh

Тут ми бачимо, що будь-якого хоста з мережі 10.0.0.0/24 можна підключитися безпосередньо через інтерфейс enp0s3. Пропишіть адреси на всіх трьох хостах.

Тепер на другому та третьому хості запустіть команду tcpdump:

tcpdump

Вона дозволить побачити інформацію по всіх пакетах, що приходять.

Після чого йдемо на перший хост і відправляємо один пінг на другий хост:

ping -c 1 10.0.0.2

Як бачите, пінг спрацював, отже мережа працює.

Тепер ми переходимо до перегляду вузла 3. Як бачите, tcpdump видав запит string-ARP-один з адресою 10.0.0.2, відповідь 10.0.0.1. І мовчанням. Справа в тому, що alma1 намагалася додзвонитися до адреси 10.0.0.2. Але вона знає тільки IP-адресу, а зв’язок в мережі L2 йде по MAC-адресою. Отже, хост надіслав спеціальний запит ARP – питання надсилається всім хостам у мережі-мовляв, хто має таку IP-адресу, повідомте мені свою mac-адресу. Цей запит надійшов на третій день, і Alma 3 проігнорував це повідомлення, оскільки його IP-адреса неправильна.

Давайте подивимося, що сталося на хості 2. Як бачите, тут вже багато повідомлень. Спочатку бачимо той самий запит ARP, але тепер у мене є відповідь на нього. У відповіді сказано, що така-то адреса знаходиться в такій-то mac-адресі. Ігноруйте слово Alma2.Утиліта tcpdump перетворила адреси в імена для зручності. Потім надходить ICMP-запит-це і є сам пінг. Далі зверніть увагу, що через деякий час знову був запит ARP. Щоб обійти проблему, кажуть вони, цього недостатньо, ця IP-адреса опиниться на іншому комп’ютері, таблиця arp буде регулярно оновлюватися.

І зробивши це, обидва хости запам’ятали один одного за мак адресою:

arp -a

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

При цьому зверніть увагу, що на хості 3 як був один запит, так він і залишився.

Тепер давайте спробуємо зрозуміти, в чому полягала роль комутатора. Коли Alma1 намагався знайти almu2, він надіслав мережевий пакет, що містить IP-адресу, MAC-адресу та IP-адресу alme2. На той момент ні хост 1, ні комутатор не знали mac-адреси хоста 2. Тому хост 1 вирішив зв’язатися з усіма-це називається трансляцією. Широкомовний запит. Комутатор надіслав цей запит на всі порти, крім джерела запиту. Вся ця область, звідки надходять широкомовні запити і до якої вони доходять, називається широкомовним доменом. Грубо кажучи, уявіть, що хтось кричить в 1 кімнаті, і всі почули цей крик. Крик – це широкомовний запит, а кімната-широкомовний домен. В результаті запит надійшов на хост 2 і Bone 3. У той же час комутатор записав оригінальну масову адресу хоста 1 у цю таблицю, кажуть вони, оскільки за портом Ethernet0 є така MAC-адреса.

Хост 2, отримавши запит, взяв із пакета Source IP і Source MAC, підготував відповідь і вказав їх як Destination. Додав до цього пакету свій IP та MAC і відправив. Світч, побачивши цей пакет, запам’ятав Source MAC альми 2, мовляв, за портом Ethernet1 знаходиться така MAC адреса. Також Світч побачив, що в пакеті вказана Destination MAC адреса. А свiтч цей МАК пам’ятає – він його на попередньому кроці собі записав. Ось він одразу цей пакет на порт Ethernet0 і відправив.

Тепер, коли ці два мак адреси намагатимуться щось передавати один одному, свитч відразу відправлятиме на потрібні порти, при цьому ніяк не чіпаючи альму3.

Ви запитаєте – а який нам у цьому толк? Як це стосується сисадмінства? Насправді, головне, навіщо ми це розглянули – щоб познайомитись із поняттям broadcast domain. Поняття broadcast використовується як на рівні l2, так і на l3, ми зараз говоримо виключно про l2. І щоб краще це зрозуміти, давайте дещо змінимо у нашому експерименті.

Поміняємо на альмі 1 і 2 IP-адреси, а точніше мережу, щоб тепер вони знаходилися в мережі 10.0.1.0:

ip addr del 10.0.0.1/24 dev enp0s3
ip addr add 10.0.1.1/24 dev enp0s3
ip addr del 10.0.0.2/24 dev enp0s3
ip addr add 10.0.1.2/24 dev enp0s3

А хост 3 залишимо у мережі 10.0.0.0. Тепер, на рівні L3, вони знаходяться в різних мережах, і, відповідно, різні broadcast-и на рівні L3. А ось на рівні L2.. давайте переконаємось.

Для цього, знову ж таки, на хості 3 запускаємо tcpdump і намагаємося з першого хоста пінганути другий:

ping -c 1 10.0.1.2

І, як бачите, третій хост все одно отримав запит, навіть якщо мережа інша. broadcast на рівні l2 – загальний. Тобто. комп’ютерам достатньо змінити IP-адреси і вони будуть бачити один одного.

Тепер питання в тому, чому нам потрібно розділити комп’ютер на Мережу, а не зберігати все в одній спільній мережі? 1 Як і у випадку з віртуалізацією та контейнерами, все повинно бути ізольовано. У вашу компанію приходять гості, і їм потрібен Інтернет. Чи повинні вони бути дозволені в тій же мережі, що і сервер? Звичайно, ні, у них мало що є на ноутбуках і телефонах. І чи варто підключати користувача до тієї ж мережі? Навіть якщо ви їм більше довіряєте, вони можуть просто не знати основних принципів інформаційної безпеки. А про довіру у великих мережах не може бути й мови. Деяким користувачам потрібен доступ до одних ресурсів, інші мають інші ресурси. Є начальники, Бухгалтерія, ІТ-відділи та інші підрозділи, і всі вони мають різні рівні доступу. Отже, мережа повинна бути розділена. Це називається сегментацією. Чим більше ви відокремлюєте все один від одного, тим важче буде керувати всім, але навіть якщо виникнуть проблеми, втрати будуть мінімальними.

Як ми з’ясували, розподіл просто по різних IP мереж зовсім не вихід, комп’ютери все одно можуть бачити один одного, тому що знаходяться в одному broadcast домені. Як бути тоді?

Можна, звичайно, поставити другий свитч. Але це як із окремим сервером для кожного сервісу – дуже дорого та безглуздо. У вас сьогодні у відділі 5 чоловік, завтра 10, післязавтра 8. Вам або для кожного відділу доведеться купу свитчів купувати, а якщо відділ сидить по різних поверхах і будинках – взагалі біда. Звісно ж, це не вихід. І тут вам приходить на допомогу віртуальна мережа – Virtual LAN – VLAN.

VLAN допомагають створювати різні домени трансляції в одній фізичній мережі. Пристрій залишається підключеним до того ж lamp за допомогою 1 кабелю, але видно лише хости, які знаходяться в одній віртуальній мережі в тій же VLAN. Середні та великі компанії можуть мати десятки або сотні Vlan. І будьте ласкаві, в 1 локальній мережі працює лише 1 мережа. Скажімо, 10.0.0.0/24 в одній локальній мережі та 10.0.1.0 / 24 в іншій локальній мережі. Кожна VLAN має свій власний ідентифікатор-це загальне число від 1 до 4094. Цей ідентифікатор також називається тегом і є своєрідною міткою.

Умовно весь трафік можна розділити на немаркований і позначений тегами. Позначений трафік у всіх пакетах має ідентифікатор VLAN. Зазвичай немаркований порт складається з комутатора, спрямованого на комп’ютер – тобто. Коли ви підключаєте кабель до комп’ютера, все працює. У той же час ви можете вказати сам порт на комутаторі як належить певній VLAN. Умовно  хочемо розділити сітку на користувачів та сервери, зберігаючи користувачів у 5 локальних мережах та сервери в 10. І користувач, і сервер підключені до одного комутатора, але знаемо, що користувач знаходиться за портом 1, а сервер – за портом 2. І в світі налаштовується, що перший порт-це не позначений порт vlan5, і 2-й порт також не позначений, але vlan10 вже є. При цьому Вам не потрібно нічого налаштовувати на призначеному для користувача і серверному комп’ютерах. Трафік з першого порту спільно використовується з портом 4. Вони знаходяться в 1 широкомовному домені, а порти 2 і 3-в іншому 1 широкомовному домені.

Але, припустимо, хочемо, щоб сервер, підключений до другого порту, був одночасно і в влані користувача, і в серверному. Можемо або окремим кабелем підключитися до порту 4, або налаштувати, щоб на порту 2 також був доступний 5-й влан. А щоб трафік не плутався, треба до всіх пакетів, які сервер відправляє на 5-й влан, додавати VLAN ID, а на світчі налаштувати, щоб він приймав на другому порту влан 5 в тегованому режимі.

Як результат, якщо сервер хоче надіслати щось у VLAN10, він просто надсилає такі пакети, як зазвичай. Крім того, якщо сервер хоче надіслати щось до 5-ї локальної мережі, Вам потрібно додати тег до цього пакету. Отримавши пакет з такою міткою, комутатор відправляє його на один з портів Джерела живлення 5. У той же час, коли пакет залишає порт без мітки, комутатор видаляє мітку. Те ж саме відбувається і в зворотному напрямку – якщо комп’ютер на порту 1 хоче відправити що-небудь на сервер через vlad5, то трафік в немаркованому вигляді досягає комутатора, і комутатор позначає цей пакет і відправляє його на сервер в позначеному вигляді. Якщо сервер подивиться на позначений пакет, він повідомить вам, що це пакет з облікового запису Користувача. Порт без тегів часто називають портом доступу. Всі інші локальні мережі повинні бути навчені, щоб уникнути змішування широкомовних доменів.

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

Умовно, в намальованій схемі є 2 VLAN-а – один тег 1, другий 2. У свитча 1 на портах e0 і e1 налаштований влан 1, але в порту e2 – влан 2. Є свитч 2, що у порту е0 прописаний влан 2, але в порту e2 – влан 1. Між першим і другим світчем прокинутий кабель, якою повинні ходити обидва влана, щоб alma3 могла бачити PC1. Alma3 підключена до світчу 1, а щоб достукатися до PC1, їй потрібно потрапити через перший світч на другий. Порти, у яких прописано кілька ланів, називаються транк портами. Зазвичай їх роблять між двома свитчами. Але не тільки.

У багатьох компаніях майже вся інфраструктура будується на віртуалках. Віртуалок багато, вони призначені для різних завдань, а отже, і мережу між ними треба сегментувати. І ось часто на портах свитчів, які йдуть до серверів, прописують багато ланів, а в гіпервізорах у налаштуваннях мережних адаптерів віртуалок можна вказати потрібний VLAN. У результаті у вас віртуалки знаходяться у різних VLAN-ах.

Давайте побудуємо таку мережу, де alma1 знаходиться в першому VLAN-і, alma3 знаходиться в другому, а alma2 і там, і там.

Натисніть правою кнопкою миші на свитку та виберіть Configure.

У вікні в правій частині будуть порти, а зліва можна їх налаштовувати. Два рази натисніть на порт 0, він у нас підключений до alma1. Як бачите, тут за промовчанням прописаний VLAN1 в режимі access, тобто. у нетегованому вигляді. Тому тут ми нічого не чіпаємо.

Тепер щодо alma3, він підключений до порту e2. Двічі натисніть на другий порт. Змініть значення VLAN на 2, потім натисніть Add. Тоді у правій панелі число зміниться на 2. Тепер тут у нетегированном вигляді VLAN 2.

Щодо alma2, нам потрібно передавати по першому порту два влани – влан1 і влан2. Для цього двічі натискаємо перший порт, влан не чіпаємо, а змінюємо лише тип на dot1q. У стандартах VLAN вказані під назвою 802.1q, а dot1q – це скорочена назва. Натискаємо Add та Apply.

Тепер, щоб перевірити, чи працює ізоляція, ще раз з хоста 1 відправимо ping, але на невідому IP адресу, скажімо, 10.0.1.3:

ping -c 1 10.0.1.3

За цією адресою ніякого хоста немає, комп’ютер не знає, до кого звертатися, тому він надішле запит ARP.

Цей ARP запит ми бачимо на хості 2. Це означає, що хост 1 і хост 2 все ще в одному домені броадкаст, так як обидва підключені до лану 1.

А ось до альми 3 запит не дійшов, це означає, що вона не знаходиться з хостом 1 в одній лані.

Тепер перевіримо роботу влана 2. Пропінгуємо адресу з третього хоста:

ping -c 1 10.0.0.2

На першому хості, як і очікувалося, tcpdump мовчить – тому що він не перебуває з третім хостом в одній лані.

А ось хост 2 бачить ці запити, тобто. він у одному лані з хостом 3.

Залишилося налаштувати, щоб хост 2 і три могли одне одного пінгувати, тобто. щоб мережа між ними працювала на третьому рівні. Але ми не можемо просто прописати на хості другу IP адресу – IP адреса буде не нетегованим інтерфейсом, а значить система просто відкидатиме пакет. Нам потрібно створити тегований інтерфейс.

Для цього запускаємо nmtui – Edit connection – Add, у списку знаходимо VLAN і табом переходимо на Create.

Профіль можна назвати як завгодно, але для ясності Давайте назвемо його Vlan2. На пристрої напишіть назву інтерфейсу, до якого підключений кабель з цією vlan, потім поставте крапку і напишіть ідентифікатор VLAN-2.Тобто, ви можете побачити enp0s3.2. Коли ви натискаєте Tab, поля parent і VLAN id автоматично заповнюються знизу. Тепер, як і звичайний інтерфейс, у мене немає сервера DHCP, тому змінюємо конфігурацію Ipv4 на ручну та встановлюю статичний IP на 10.0.0.2/24. Збережіть nmtui і вийдіть.

Тепер, переглянувши список інтерфейсів:

ip a

Можна помітити, що з’явився новий інтерфейс – enp0s3.2 – і на ньому прописана IP адреса.

Спробуємо пінганути хости 1 і 3:

ping -c 1 10.0.0.3 
ping -c 1 10.0.1.1

alma2 переглядає обидва хостингу. Як ми хотіли, він знаходиться в 2 різних широкомовних доменах. Таким же чином ви також можете додати ще кілька до локальної мережі, але ви вже це робите.

Давайте підведемо підсумки. Сьогодні розібравши L2, розповів про сувої, які там живуть, познайомився з концепціями широкомовлення, arp, vlan і т.д., а також трохи розібрав ярлики. Ми також дізналися, як зареєструвати Vlan на сервері – це був основний зміст цього підручника – щоб зрозуміти, чому це потрібно і як це зробити. Насправді є й інші способи, але це лише інструменти.

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.