Poskytovanie OpenVPN cez TCP a UDP z jedného hostiteľa
Jeden proces pred 2.7 zviaže jeden transport. Porovnajte mostíkový pár TAP, dve podsiete TUN a spoločný fond, potom priraďte každý profil k jeho listeneru.
Siete, ktoré povoľujú iba TCP 443, koexistujú so sieťami, ktoré UDP bez problémov prepúšťajú, a jeden server musí obsluhovať obe. Profil s proto udp odpovedá druhej skupine a zlyháva na prvej, a úprava tej istej konfigurácie na proto tcp nevytvorí druhý listener. Direktíva vyberá jeden transport pre jeden proces. Všetko ostatné vyplýva z tohto obmedzenia.
Buď spustíte viac ako jeden proces, alebo spustíte verziu, ktorá dokáže zviazať viac socketov naraz.
Jeden proces pred 2.7 zviaže jeden transport
Komunitný OpenVPN zviaže socket, ktorý opisuje proto, a tá direktíva vyberá jeden transport pre inštanciu. TCP a UDP sú oddelené zásobníky, takže rovnaké číslo portu môžu súčasne obsadiť oba, ale nie jeden proces. Preto linka 2.6 dáva jeden transport na démona. OpenVPN 2.7 toto obmedzenie pre servery odstránil, keďže môžu zviazať viac socketov prostredníctvom viacerých príkazov --local v jednom procese.
Pred návrhom okolo ktorejkoľvek odpovede skontrolujte verziu, pretože usporiadanie 2.7 je iný prevádzkový model s vlastnou konfiguračnou syntaxou. Príručka napísaná pre 2.6 opisuje dva procesy, aj keď to nehovorí.
Tri spôsoby, ako spustiť dve inštancie
S rozhraniami TAP spustite jednu inštanciu na transport a premosťte dve zariadenia tap na hostiteľovi. Obe skupiny klientov skončia v rovnakej vysielacej doméne, čo umožňuje jednému fondu adries ich pokryť a udržiava protokoly závislé od vysielania v chode. Pri TUN mostenie nie je dostupné, takže najjednoduchšie rozdelenie dáva každej inštancii vlastnú podsieť a smerovanie drží obe skupiny klientov oddelene. Tretia možnosť zachováva jeden fond tým, že každá inštancia zavolá skript learn-address, ktorý nainštaluje trasu /32 pre klienta cez zariadenie tejto inštancie.
To tretie usporiadanie je to, o ktoré ľudia žiadajú, a to, ktoré vyžaduje najväčšiu starostlivosť, pretože skript sa stáva súčasťou dátovej cesty a musí správne spracúvať udalosti pridania, aktualizácie a odstránenia.
| Arrangement | Interfaces | Address pool | Cost |
|---|---|---|---|
| Bridged TAP pair | Two tap devices joined by a bridge | One shared pool | Broadcast traffic and bridge maintenance |
| Two TUN subnets | Two tun devices, no bridge | One pool per instance | Routing rules and two plans |
| Shared pool with routes | Two tun devices plus a hook | One pool across both | A script on the data path |
Držte obe inštancie oddelene
Každá inštancia tiež potrebuje samostatný port alebo adresu, samostatný stavový súbor a samostatný cieľ protokolu. Dvaja démoni, ktorí pridávajú do rovnakého stavového súboru, vytvárajú výstup, ktorý sa počas incidentu nedá prečítať, a práve vtedy ho potrebujete. Ak druhá inštancia zviaže konkrétnu adresu, táto adresa musí na hostiteľovi existovať pri štarte procesu; inak skončí chybou zviazania skôr, než povie čokoľvek o kľúčoch.
Pomenujte jednotky a profily tak, aby bol transport zrejmý z názvu súboru. Nasledujúci operátor by nemal musieť otvárať konfiguráciu, aby zistil, ktorý je TCP.
Priraďte profil k listeneru
Server, ktorý spúšťa proto tcp, očakáva klientsky profil s proto tcp-client, a profil, ktorý stále nesie proto udp, voči tomuto listeneru vyprší bez chyby, na ktorú by používateľ mohol reagovať. Ak nasadenie ponúka oba transporty, ponechajte dva profily a označte ich tak, aby podpora vedela, ktorý sa skúšal. Samotné číslo portu transport neopisuje.
Pravidlá firewallu sledujú rovnaké rozdelenie: pravidlo pre UDP 1194 nehovorí nič o TCP 1194 a pravidlo pre jednu adresu nepokrýva druhý listener.
Najprv si prečítajte pohľad servera
Začnite s ss -lntup na serveri a potvrďte, že sa objaví TCP aj UDP listener. Potom pripojte jedného klienta každého druhu a skontrolujte stavový výstup na dva záznamy s odlišnými adresami. Ak sockety existujú a žiadny klient neprichádza, cesta alebo firewall odmietajú pakety skôr, než ich démon uvidí.
Socket, ktorý sa nikdy neobjaví, je problém konfigurácie alebo zviazania, a socket, ktorý sa objaví, ale nikdy nezaznamená spojenie, je problém filtrovania. Z pohľadu klienta vyzerajú oba rovnako, preto prichádza najprv pohľad samotného servera. Majte na pamäti, že TCP nesie blokovanie na čele frontu, takže jeho ponúkanie je opatrenie dostupnosti, nie vylepšenie pre klientov s čistou cestou UDP.