VPN пролаз на Raspberry Pi: једна мрежна картица или посебан клијентски порт
Један Pi порт може да опслужује изабране клијенте, или други порт може да затвори уређаје унутра. Изаберите распоред према изолацији, политици при паду и томе чији је DNS.
Имате један Pi, један радни излазни VPN профил и два уређаја која треба да стигну до интернета преко њега. Питање које одлучује целу поставку није које упутство следити, већ колико изолације вам треба. Један порт допушта да Pi стоји поред тих уређаја на LAN-у рутера и делује као додатни пролаз; други порт вам омогућава да их ставите у сегмент где је Pi једини излаз. Све после тог избора — DHCP, обим заштитног зида, DNS, случај прекида — произлази из њега.
У чему се две поставке заиста разликују
Обе поставке рутирају. Разлика је у томе ко још стоји на каблу и шта се дешава када је ваша политика погрешна.
| Layout A: Pi on the ISP LAN | Layout B: dedicated client port | |
|---|---|---|
| Cabling | One Ethernet port, existing switch port | Two interfaces: uplink plus a separate LAN port |
| Can a client bypass the Pi? | Yes, by using the ISP router as its gateway | No, unless the device has another radio or link |
| Who hands out addresses | The ISP router, with a per-client setting or a DHCP option | The Pi, on its own LAN interface only |
| Blast radius of a mistake | Any LAN host, if a rule is too broad | The attached segment |
| Good fit for | One laptop, a console, a temporary test client | Appliances, always-on boxes, untrusted devices |
Изолација је права оса. Поставка A је саветодавна: уређај који игнорише пролаз добијен од DHCP-а и изабере рутер и даље ради, али без шифровања. Поставка B се намеће топологијом, јер нема другог следећег корака који би се изабрао.
Поставка A: Pi као додатни пролаз на постојећем LAN-у
Претпоставимо да је ISP рутер 192.168.50.1, Pi је 192.168.50.2, а изабрани клијенти показују на Pi. Важно је да два различита тока пакета деле један кабл. Унутрашњи пакет клијента стиже на Pi и мора да изађе кроз тунел; сопствени шифровани пакет Pi ка VPN партнеру мора да изађе истим каблом ка рутеру. Они путују у супротним смеровима по истом интерфејсу и траже различит третман.
Дајте Pi његову адресу преко инсталираног менаџера мреже, а не преко старог рецепта са датотеком интерфејса који се са њим бори за уређај. Затим подесите клијенте: статични пролаз на једном уређају или DHCP резервација која даје 192.168.50.2 као рутер. Не мењајте цео DHCP опсег рутера због два уређаја и не претпостављајте да клијент поштује ту опцију — проверите.
Слабост је структурна, а не поправљива. Сваки клијент у том сегменту може да покаже на 192.168.50.1 и изађе без шифровања, а уређај са другим интерфејсом или мобилним радиом потпуно напушта ваш пут спровођења. Ако је та реченица неприхватљива за дати уређај, одговор већ имате: користите поставку B.
Поставка B: посебан порт затвара уређаје унутра
Овде Pi задржава 192.168.50.2 на узлазној вези са пролазом 192.168.50.1 и на другом интерфејсу узима 10.20.0.1/24 за повезане уређаје. Сада је Pi рутер са две мреже, а повезани сегмент има тачно један излаз.
Проверите опсег према свему осталом пре него што се обавежете: сопствена подмрежа тунела, други префикси између локација и све што је доступно кроз VPN. 10.20.0.0/24 која се судара са удаљеним LAN-ом даје онај полурадни резултат чија дијагностика траје цело вече. Ако је други порт USB адаптер, потврдите да је подржан и причврстите његово име у менаџеру мреже да премештање после рестарта не помери вашу LAN адресу.
Покрените DHCP слушалац само на том интерфејсу. Сервер који одговара на узлазној вези такмичи се са ISP рутером и дели адресе вашег сегмента остатку куће. Вежите га за LAN интерфејс, ограничите га на објављени опсег и држите сопствену адресу Pi изван скупа.
Прослеђивање, превођење и правило затварања при квару
Четири ствари се често описују као једна и нису. Укључивање прослеђивања (net.ipv4.ip_forward=1) само каже језгру да може да премешта пакете између интерфејса; само по себи ништа не дозвољава и не гарантује никакав пут. Избор излаза је одлука о рутирању. Допуштање пакета је одлука о политици у forward ланцу. Преписивање његовог извора је одлука о postrouting-у. Поставка која ради само прво даје Pi који весело прослеђује клијентски саобраћај напоље узлазном везом.
Ограничите дозволу на изворе које сте мислили и на интерфејс који саобраћај треба да користи, и укључите повратни пут и сопствена потребна одредишта Pi. Затим преводите на излазу тунела ако добављач не рутира ваш LAN префикс назад ка вама. приручник за nftables третира прослеђивање, локални излаз и превођење извора као одвојене операције, што је овде исправан мисаони модел.
Уобичајени квар је широко masquerade правило на физичком интерфејсу. Тада саобраћај стиже на интернет ISP путом, док са клијентске стране изгледа тачно као VPN који ради. То ништа не доказује. Држите превођење везано за објављени излаз и држите своја правила у заштитном зиду који домаћин већ користи, уместо да додате конкурентски скуп правила који празни заједнички postrouting ланац.
Затим се позабавите одсуством тунела. Профил клијента који инсталира широку подразумевану руту значи и то да, када тунел падне, обична подразумевана рута може да се врати и клијентски саобраћај се тихо враћа на узлазну везу. Тамо где повратак на чисти текст није прихватљив, forward политика мора изричито да одбије саобраћај од клијента ка узлазној вези, у стању у којем је VPN рута нестала. Напишите то као правило одбијања, не као претпоставку. Сопствени шифровани транспорт Pi ка VPN партнеру је одвојен local-output ток и мора да остане дозвољен, иначе тунел никада не може да се врати.
DNS и IPv6 траже сопствени одговор
Ако клијенти користе Pi као резолвер, они долазе до локалног слушаоца и Pi започиње нови упит. Тај узлазни упит следи сопствену руту Pi, а не forward правило које сте написали за клијенте, зато је клијентски пут само кроз тунел плус резолвер који излази директно цурење без икакве поруке о грешци. Одлучите свесно: резолвер доступан кроз тунел, или локални који прихватате као директан, и ускладите сопствену излазну политику Pi са том одлуком.
IPv6 је опет посебан случај. Forward правило за IPv4 ништа не ограничава у вези са IPv6, а објаве рутера на узлазној вези могу да дају Pi-ју, и преко њега повезаном сегменту, другу подразумевану руту која заобилази вашу политику. Или дајте IPv6 сопствени заштићени пут по истом принципу, или га изричито ограничите на клијентском сегменту и кажите то.
Тестирајте границу пре него што јој верујете
Прихватите поставку само после четири одвојене провере, јер примамљиви појединачни тест — отварање претраживача на једном клијенту — пролази у неколико покварених стања.
Потврдите да један стварни клијент стиже до интернета кроз тунел, затим потврдите да исти клијент не може да стигне до интернета када је тунел пао. Потврдите да DNS резолуција ради и да упит излази тамо где сте намеравали. Потврдите да сопствени транспорт Pi и даље ради после рестарта тунела и да опоравак не захтева рестарт машине. На крају проверите уређај који нисте изабрали: у поставци A треба да настави нормално да ради, а у поставци B не треба уопште да постоји у том сегменту.
- Два порта и правило одбијања дају спровођење; један порт и DHCP опција дају савет.
- Превођење на погрешном интерфејсу изгледа као успех и није.
- Сопствени саобраћај Pi, DNS и IPv6 свако тражи одлуку, а не закључак.