Използване на Raspberry Pi като рутер със само един мрежови порт

Оригиналът е на Louwrentius

13
1492

Ако ви е необходим по-специален собствен домашен рутер, една отлична хардуерна платформа за него може да бъде Raspberry Pi 4 Model B. Този модел е по-подходящ, понеже по-старите версии на Raspberry Pi имат много по-ниска скорост за обмен на мрежовите данни. Техните ограничения в мрежовата скорост са толкова големи, че тези едноплаткови компютри няма как да се използват в ролята на интернет рутери, ако е необходима скорост за достъп към интернет от над 100 Mb/s.

Миникомпютърът Raspberry Pi 4 Model B е подходящ поради следните основни причини:

  • Той е доста евтин
  • Той е достатъчно бърз
  • Той може да обслужва гигабитов мрежови интерфейс
  • Той консумира съвсем малко електрическа енергия

Главният проблем на Raspberry Pi 4 Model B е, че той има само един мрежови интерфейс – един мрежови порт. За един рутер са необходими минимум два от тези портове:

  • Към първия порт се включва интернет кабела, интернет модема или рутера, който дава достъп до Глобалната мрежа – идеален вариант за изграждането на бридж
  • Вторият интерфейс се включва към домашната мрежа или към хъба на домашната мрежа

Най-лесното решение, ако се използва Raspberry Pi , е да се купи допълнителна USB3 мрежова карта за около $20, след което проектът може да се счита за приключен:

Какво ще си помислите, ако ви кажа, че съвсем същото може да се направи само с единствения мрежови интерфейс на Raspberry Pi 4 Model B? Нека да се задълбочим и да разширим нашите познания.

Да се запознаем с VLAN

Може би ще се учудите, че ще стане дума за технология, която стана известна още през 1990-те години и широко се използва в корпоративните среди.

От друга страна, аз имам усещането, че тази технология е на практика неизвестна за хората, които са далече от администрирането на корпоративни мрежи. Струва си да обсъдим темата VLAN.

Какво е VLAN?

Технологията VLAN (Virtual Local Area Network) – виртуална локална мрежа дава възможност за създаването на различни, отделени една от друга виртуални мрежи с помощта на една и съща само една физическа връзка и един и същ хъб. По този начин рязко се намалява броят на кабелите, които биха били необходими за изграждането на няколко реални, разделени една от друга локални мрежи.

Ако искате трафика на различните мрежи да преминава по един и същ кабел и един и същ хъб, то как да стане идентификацията на различните потоци на този трафик?

При използването на VLAN технологията мрежовите пакети се маркират с помощта на тагове. И тъй като тази технология работи на ниво Ethernet, по-правилно е да не говорим за мрежови пакети, а за Ethernet кадри. Лично аз съм на мнение, че тези детайли в терминологията не са чак толкова важни за разбирането същността на тази технология.

 

Достатъчно е да знаем, че се използват маркери или тагове, които се поставят преди всеки Ethernet кадър. Тези тагове съобщават на устройствата, поддържащи VLAN, на коя точно локална мрежа принадлежи кадъра и съответно, мрежовия пакет, който преминава през мрежата.

При този подход потоците от трафик на различните мрежи лесно се различават един от друг. А във въпросните тагове няма нищо сложно и интересно. Те се наричат просто VLAN ID и са обикновени числа от 1 до 4096. Да подчертая, че повечето евтини хъбове могат да поддържат най-много от 32 до 64 виртуални локални мрежи (VLAN). По-скъпото корпоративно оборудване може да поддържа до 4096 VLAN. В нашия случай това няма особено значение.

Управляваният хъб

След като накратко се запознахме с VLAN технологията, нека да помислим, как в нашия случай можем да я използваме.

Като начало на нас ще ни е необходим управляем мрежови хъб, който поддържа VLAN.

Най-евтиният комутатор (хъб) с поддръжката на VLAN, който успях да открия е TP-LINK TL-SG105E с цена малко под $25. Това е хъб с 5 порта. Ако ви е нужно повече, 8-портовата версия е с няколко долара по-скъпа.

На практика всички хъбове от този тип предлагат уеб-интерфейс, който дава възможност за настройването на VLAN от някой от компютрите в мрежата.

Маркираният и немаркираният трафик

Когато говорим за VLAN, трябва да знаем, че мрежовият порт на суича (хъба) може да бъде в две състояния:

  • Той може да е член на някоя конкретна VLAN мрежа (немаркиран трафик)
  • Той може да отговаря за прехвърлянето на трафика на няколко VLAN мрежи (маркиран трафик)

Ако даден порт на хъба е член на VLAN, то той се държи като всеки друг порт на суича. В този режим той очевидно може да е член само на една VLAN мрежа. За този порт са премахнати всички VLAN тагове.

Но портът, който е предназначен за прехвърлянето на маркирания с тагове VLAN трафик, просто пренасочва този трафик във вида, в който го получава – тоест, заедно с VLAN маркерите (таговете).

Именно тази хитрост ще използваме за прехвърлянето на мрежовите пакети от различните виртуални мрежи (VLANs) с помощта на нашия Raspberry Pi чрез неговия един-единствен порт с помощта на само един кабел.

 

Нека се спрем по-подробно върху показаната по-горе схема.

Да си представим че мрежови пакет от интернет пристига в интернет модема и се подава на порт номер №1  на хъба.

Хъбът знае, че какъвто и трафик да дойде на този порт, то той принадлежи на VLAN 10. Тъй като този трафик трябва да бъде изпратен към Raspberry Pi рутера, хъбът маркира мрежовия пакет, като му добавя VLAN таг и го изпраща заедно с тага-маркер от Raspberry Pi към порт №2 на рутера.

Raspberry Pi рутерът от своя страна, както и хъба, е настроен за работа с VLAN. Тагът на мрежовия пакет съобщава на рутера към коя точно виртуална мрежа трябва да се изпрати този пакет.

Ето един пример за конфигурация на помощната програма netplan, показващ описаната дотук схема:

network:
  version: 2
  ethernets:
    enp2s0f0:
      dhcp4: no
  vlans:
    enp2s0f0.10:
       id: 10
       link: enp2s0f0
       addresses:
         - 68.69.70.71/24 (fake internet address)
       gateway4: 68.69.70.1 (fake upstream ISP router)
    enp2s0f0.20:
       id: 20
       link: enp2s0f0
       addresses:
         - 192.168.0.1/24 (internal network address, acting as gateway)

Виждаме че VLAN мрежовите пакети, които пристигат във вид на вече маркирани пакети, се изпращат (без таговете) към виртуалния мрежови интерфейс, принадлежащ на тази конкретна мрежа. Всички тези виртуални мрежови интерфейси се получават от само един реален физически интерфейс (порт) (enp2s0f0). Виртуалните мрежови интерфейси са си името на точно този реален физически порт, към който е добавена конструкция във вид „.(VLAN ID)“.

Навярно вече сте се досетили за какво намеквам. Тези два виртуални мрежови интерфейса много приличат на рутер с два реални физически порта. В резултат от това всички необходими операции по маршрутизацията и по транслирането на мрежовите адреси, които трябва да бъдат извършени, се осъществяват не с помощта на физически интерфейси/портове, а с помощта на виртуални интерфейси/портове.

Как се работи с VLAN

За да може да се работи с VLAN е необходим желателно евтин хъб, поддържащ VLAN, каквито са на практика повечето суичове. Управлението става с помощта на съвсем лесен уеб-интерфейс.

В този пример използваме хъба TP-LINK TL-SG105E. За да стигна до необходимата страница, в неговия интерфейс аз изминах пътя VLAN –> 802.1Q VLAN.

От тази таблица извличане следната информация:

  • Порт №1 – немаркиран член на VLAN 10
  • Порт №2 – маркиран член на VLAN 10 и VLAN 20
  • Порт №3 – немаркиран член на VLAN 20

Обърнете внимание, че се препоръчва да се махат портовете от VLAN, които не се използват в мрежата. Ето защо аз премахнах портовете 1, 2 и 3 от стандартната мрежа VLAN 1. Сега, когато към този хъб бъдат включени повече устройства, съответните портове ще трябва да се направят немаркирани членове на VLAN 20.

Възможни проблеми

Очевидно е, че когато се използва един-единствен порт, то ние можем да разполагаме единствено с пропускателната способност на този порт. В повечето случаи това не е проблем, понеже гигабитовият Ethernet работи в режим пълен дуплекс, което означава че има реални физически съединения както за входящия, така и за изходящия трафик. Тук проблеми няма.

По-различно е, когато Raspberry Pi се използва и като сървър за резервни копия на данните с включен към едноплатковият компютър външен диск, което всъщност е едно доста често използвано решение. В този случай трафикът при създаването на резервните копия и интернет трафика ще се борят за честотната лента на един и същ гигабитов порт.

Друга характерна особеност е, че основният обем на трафика е свързан с TCP връзките. Когато се осъществява изтегляне на информация, има обмен на данни и в двете страни. Изтегляната информация образува основния трафик, но има и немалък поток от данни, съставени от мрежови пакети, които се връщат в интернет и съобщават на предаващата страна затова, че отсрещната страна е получила съответните данни – ако това потвърждение го няма, същите данни ще бъдат изпратени наново. Това са в основни линии проблемите, с които трябва да се съобразяваме при използването на подобни решения.

Raspberry Pi 4 Model B в ролята на рутер

Главното ограничение на Raspberry Pi 4 Model B е производителността. Ако например използвате IPTABLES в Linux в ролята на защитна стена, то аз от опит знам, че пропускателната способност на мрежата пада до 650 Mb/s.

Това може да се счита за проблем единствено в случай, че се използва гигабитов достъп до интернет или скоростта за обмен на данни с интернет превишава тази, с която може да се справи малкия Raspberry Pi.

Но ако скоростта на интернет връзката не е много близо до гигабитовата, то този проблем не ви засяга.

Може би за създаването на рутери, подобни на описания дотук, е по-подходящ едноплатковият микрокомпютър Raspberry Pi 400 или други платформи, базирани на системи върху чипа, които са по-бързи от използваната SoC в Raspberry Pi 4 Model B. Но за моите цели този малък компютър е напълно достатъчен.

Изводи

Дали да си сглобите описания дотук Raspberry Pi рутер зависи само от вас. Аз ползвам подобно решение заедно с x86 сървър от около 10 години, понеже няма как да прекарам втори кабел от модема до стаята, където се намира рутера. За мен това е едно много удобно решение.

 

 


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iOS и Huawei!

Абонирай се
Извести ме за
guest

13 Коментара
стари
нови оценка
Отзиви
Всички коментари