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

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

11
1207

Ако ви е необходим по-специален собствен домашен рутер, една отлична хардуерна платформа за него може да бъде 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 години, понеже няма как да прекарам втори кабел от модема до стаята, където се намира рутера. За мен това е едно много удобно решение.

 

 

Абонирай се
Извести ме за
guest
11 Коментара
стари
нови
Отзиви
Всички коментари
Стефан
Стефан
1 месец

Raspberry Pi 4 Model B 4GB е на цена от 136лв – не знам кое му е евтиното, ако го сравняваме с обикновен TP Link рутер?
Много безсмиследна статия.

Димитър
Димитър
Отговор на  Стефан
1 месец

По-удачно би било сравнението с гигабитов Микротик рутер и пак ще е по-евтино.

test
test
Отговор на  Стефан
1 месец

Има смисъл, ако си в страната в която е написана статията.

тралала
тралала
Отговор на  Стефан
1 месец

Обикновенните ТП-ЛИНК рутери не поддържат VLAN, по-скъпите решения да, целта на статията е да обясни работата на VLAN и да се създаде евтин рутер поддържащ повече VLAN-и и да управлява мрежата по 1 (един) мрежови кабел.

тралала
тралала
Отговор на  тралала
1 месец

Да се допълня – има евтини рутери TP-Link които наистина работят с VLAN (например TP-LINK wr-740, wr-741, wr-841) но е необходимо да се смени фърмуера с OpenWRT или DD-WRT. Тези фърмуери отключват много възможности на евтините рутери но за съжаление хардуерът им е доста слаб за да се използва за пълноценна работа в по-големи мрежи (~400 MHz CPU, 32 MB RAM, 4/8 MB SPI).
Благодаря на автора за изчерпателната статия.

kirka
kirka
1 месец

Ама това е пълноценна линукс дистро с 4 РАМ. Не е удачно сравнението със стандартен рутер за 100-тина лева. На Пи-то можеш да правиш всевъзможни неща. Да кажем, искаш собствен DNS, може ма Пи-то. На стандартен рутер ще ти трябва отделна машина, защото има много малко РАМ и няма да има място за блеклисти и т.н. Да не говорим за тоновете софтуер, който може да се инсталира допълнително

Уазката
Уазката
Отговор на  kirka
1 месец

Aз опитах да си направя от Рi4-2Gb ram NAS със няколко диска.. Хем излезе скъпо, хем софтуера е мега тромав. Всяко едно от решенията с готов нас и да си купя дискове за него бе по-удачно.
Опитах на 4Гб версията да си пусна сървърче: http, php, sql, mIRC.. и т.н под упраение на убунту.. Същата работа – клекна. Та това с тоновете софтуер и възможности.. не е баш така.
Но наистина удоволствие е да подкараш нещо на него, а и за проекти от смарт устройства до управление дори на цнц машинка (пробвано под разбиан) е наистина добро…

kirka
kirka
Отговор на  Уазката
1 месец

Ама това говорим за рутер, не за НАС, уеб сървър и т.н. На ПИ-то можеш да правиш наистина много неща, които не можеш със стандартен рутер. Кев ти DNS, кеф ти фонкционален файъруол, кеф ти Суриката или нещо от сорта, може пайтън да му качиш и да си автоматизираш каквото искаш и още много.

bubba
bubba
1 месец

пичове, един микротик rb750 gen3 e 150 лева и ще прави 100 пъту повече неща от описаната система-самоделка, oтделен е въпроса, че ще работи по-стабилно. Това пи-4 е 114 лева най-слабия вариант с 2гб рам, като купите суича, сд-карта, кутийка за пи-то, адаптор usb-rj45 и сметката става доста солена, отделен е проблема с менажирането на цялото това изпълнение (най-вероятно в конзола използвайки vim). Излагате се 🙂

kirka
kirka
Отговор на  bubba
1 месец

„ще прави 100 пъту повече неща“ – като какво например? В статията са описани само основните неща. След това можеш да правиш какво ли не

Димитър
Димитър
1 месец

Браво