VPN клиенттерінің туннельде бір-біріне жетуін тоқтатыңыз
Қызметке жету — бағыт, басқа клиентке жету — саясат. Партнерлер арасындағы трафикті шешетін жіберу нүктесін табыңыз, содан кейін тыйымды клиенттен дәлелдеңіз.
Екі клиент те секіру хостын аша алады, бірақ бір-бірін ашуға ешқандай жұмысы болмауы мүмкін. Қызметке жету — жіберу шешімі, ал партнерге жету — саясат шешімі, және көптеген VPN стектері оларды бөлек объектілерде ұстайды. Біріншісі үшін конфигурациялағаныңыздың ешқайсысы екіншісін орындамайды. Сондықтан міндет ереже қосу емес, осы серверде партнерлер арасындағы трафикті шешетін объектіні табу, тыйымды сол жерге жазу және оны клиенттен дәлелдеу.
Ортақ қызметке бағыт партнерлер арасындағы рұқсат емес
Клиенттердің ішкі желісін жариялау партнерге пакетті басқа клиенттің мекенжайына қарай сымға қалай қоюды айтады. Сол пакет жеткізіле ме, одан кейін, оны жіберетін нәрсемен шешіледі. Linux қақпасында бұл FORWARD тізбегі; пайдаланушы кеңістігіндегі демонда — туннельдің өзіндік сессия кестесі. Бағыт қолжетімділікке жауап береді және рұқсатты тиімей қалдырады.
Сондықтан тек бағыттарды оқитын оқшаулау тексерісі ештеңе дәлелдемейді. /24 әр клиентке жіберілуі мүмкін, ал партнерлер арасындағы әр пакет жіберу ілмегінде тасталады. Қауіпті жағдай — керісінше: айқын ереже жоқ, рұқсат ететін әдепкі бар және оқшаулау тек ешкім оны тексермегендіктен бар.
Талапты терминал ашпас бұрын бір жолға жазыңыз. Қызметтер блогына және секіру хостқа жетіңіз, клиенттер блогының ішінде басқа ештеңеге жетпеңіз.
Партнер пакетін шын мәнінде кім жіберетінін анықтаңыз
Сервердің екі мінез-құлқы клиент жағынан бірдей көрінеді және әртүрлі ережелерді талап етеді. Не ядро пакетті қайтадан туннель интерфейсінен шығарып жібереді, не демон оны сессиялар арасында көшіреді және ядро оны ешқашан көрмейді.
WireGuard бірінші топқа жатады: онда партнерлер арасындағы ауыстырып-қосқыш жоқ, сондықтан 10.8.0.4-тен 10.8.0.5-ке пакет wg0-ге келеді, жіберу ілмегіне тиеді және AllowedIPs екі мекенжайды қамтығанда қайтадан wg0-ден бағытталады. OpenVPN — сервер конфигурациясында client-to-client орнатылғаннан кейін екінші топ, өйткені бұл директива пакетті пайдаланушы кеңістігінде сессиялар арасында береді. Бірдеңе жазбас бұрын жүктелген конфигурациядан осы директиваны тексеріңіз. Трафикті ешқашан көрмейтін ядро ережесін жұмыс істейтін ережеден ажырату мүмкін емес, және дәл осылай орналастыру ешқандай оқшаулаусыз аяқталады.
Жүктелді деп болжаған файлды емес, әрекетті конфигурацияны оқыңыз, өйткені дистрибутив пакеттері өз қосуларын әкеледі. Егер демон жіберсе, тыйым оның өзінің әр-клиенттік басқаруларында болады, ал хост файрволы тек хостқа бағытталған трафикті сүзеді. Егер ядро жіберсе, жіберу ілмегі — жалғыз маңызды орын.
Маршрутталған және аударылған орналастырулар тағы бір тексеруді қажет етеді: алыс клиент көретін дереккөз сіз күткен нәрсе болмауы мүмкін. Сонда клиенттердің ішкі желісіне сәйкес келетін ереже ештеңеге сәйкес келмейді. Сәйкестікті жазбас бұрын аудармадан аман қалған мекенжайды жазып алыңыз және NAT мекенжайларын болжаудан гөрі интерфейстер жұбын сәйкестендіруді таңдаңыз.
Әр мекенжайға жеке жойылатын сәйкестік беріңіз
Екі құрылғы бір тіркелгі деректерін бөлісісімен оқшаулау құлайды. Сол сәйкестікке байланған ереже оларды ажырата алмайды, ал жоғалған ноутбукті жою бүкіл топты жояды. Әр құрылғыға сертификаттар немесе әр серіктеске кілттер жоюды жергілікті, ал саясатты оқылатын күйде ұстайды, өйткені әр мекенжай дәл бір адамға немесе машинаға сәйкес келеді. Дизайн мұны істей алмайтын жерде мұны ережені ұсақ деп сипаттаудың орнына пайдалану нұсқаулығында айтыңыз.
Мекенжайларды бөлу саясатқа сай болуы керек. Қызметтерге блок, клиенттерге блок бөліп қойыңыз және клиент мекенжайларын бірінші келген алады ауқымынан емес, өзіңіз басқаратын пулдан беріңіз. Егер сервер аударады немесе көпір жасайды, сәйкестендіру кестесін конфигурацияның жанында ұстаңыз, өйткені келесі оқырманға ережені қайта шығару үшін дәл сол кесте керек.
Тыйымды пакет туннельден өтетін жерге қойыңыз
WireGuard трафигін жіберетін қақпада жағдайды екі ереже жабады: қызметтер блогына рұқсат етіңіз, содан кейін клиенттер блогының қалғанын тастаңыз. Интерфейстер жұбы мекенжайлар сияқты маңызды, өйткені тек межеліге сәйкестендіру LAN-нан келетін трафикті де ұстайды. Рұқсат бірінші бағалансын деп оларды сол ретпен жүктеңіз.
nftables-те жұп бар inet filter кестесіне кіреді, алдымен рұқсат, содан кейін тастау. Екі сәйкестік те мекенжайлармен қатар интерфейстер жұбын бекітеді.
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.2.0/24 accept
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.0.0/24 drop
Жүктегеннен кейін шығу күйіне сенудің орнына тізбекті кері оқыңыз және екі ереженің де көздеген ретте тұрғанын растаңыз. IPv6 пулы үшін сәйкес ip6 ережелерін қосыңыз, әйтпесе қос стекті туннельде v4 жұбы тек әшекей. Егер серверде әлдеқашан рұқсат ететін жіберу саясаты болса, тізбекті толық ауыстырудың орнына тастауды қосыңыз.
OpenVPN-де client-to-client қосылған кезде бұл жіберу ережелері партнерлер арасындағы трафикке ешқашан сәйкес келмейді және тыйым демонның өзіндік басқаруларында тұруы керек. Хостқа бағытталған трафик үшін ядро ережелерін қалдырыңыз, бірақ оларды оқшаулау басқаруы деп санамаңыз.
Тыйымды серверден емес, клиенттен дәлелдеңіз
Қақпадан тексеру ештеңе дәлелдемейді, өйткені жергілікті жасалған трафик шығу жолын алады және жіберу ілмегінен ешқашан өтпейді. Екі нақты клиентті пайдаланыңыз: біреуі қызметке жетуі керек, біреуі қабылданбауы керек. Алдымен рұқсат жағдайын іске қосыңыз, сынған туннель жұмыс істейтін саясат деп қабылданбасын.
Рұқсат етілген клиенттен қызметтің өз портында жауап беретінін растаңыз. Сол клиенттен серіктес мекенжайын көріп, бас тартудың орнына үнсіз тастауды күтіңіз:
ping -c 3 -W 2 10.8.0.5
nc -z -w 2 10.8.0.5 22
nft list chain inet filter forward
iptables -vnL FORWARD
ping -6 -c 3 -W 2 fd00:8::5
Тасталған пакет пен желіден тыс серіктес екеуі де уақыт бітуіне ұқсайды, сондықтан қандай да бір қорытынды жасамас бұрын санауыштарды тексеріңіз. Серіктес анық қосулы тұрғанда тастау ережесінің санауышы өсетінін растаңыз. IPv6 арқылы қайталаңыз, онда жоқ ip6 ережесі v4 тыйымын тиімді болып көрінуге қалдырады. Қабылданған және қабылданбаған нәтижелерді күнімен нұсқаулыққа жазыңыз, өйткені келесі көшіру ережені қайта шығарады.