Сурам ар дайым бир эле сүйлөмдүн варианты: VPN серептөө үчүн калсын, бирок SSH же камдык көчүрмө иши кадимки байланышты колдонсун. Бул тууралуу тараган кеңеш, б.а. портту iptables NAT эрежелери менен өткөрүү, аны аткарбайт. NAT эрежеси агымдын ичиндеги даректерди жана портторду кайра жазат; ал пакеттин кайсы интерфейстен чыгарын эч качан тандабайт. Бул чечим багыт издөөгө таандык, ал эми багыт издөө портту көрүү үчүн жардамга муктаж.

Эмне үчүн жөнөкөй багыт портко дал келе албайт

Linux багытты таблицадагы барар даректи издеп тандайт, мурун талапкер таблицалар саясат эрежелери менен чыпкалангандан кийин. Бул эрежелер өрт дубал белгисине, булак дарегине, кирүүчү интерфейске же UIDге дал келиши мүмкүн. Багыт жазуусунда порт талаасы жок, анткени багыт транспорт башы маанилүү боло электе тандалат.

Азыркы iproute2 жана ядролор эреженин тандоочусун кеңейтет: ipproto, sport жана dport кабыл алынат, ошондуктан ip rule add ipproto tcp dport 22 table 100 ниетти бир сапта билдирет. Реалдуу хостто ip rule add help иштетип, курулушуңуз dport тизмелейби аны көрүңүз. Тизмелесе, бир буйрук менен бүттү; тизмелебесе, төмөнкү белги жолу барабар.

Кандай болбосун, эреже жөн гана көрсөткүч. 100-таблицага дагы эле багыт керек, адамдар дал ушул бөлүктү унутат.

Үч бөлүк, же бир

Заманбап форма — жогорку жалгыз эреже жана альтернатива таблицадагы багыт. Классикалык форма ортого netfilter кошот: пакетти белгиле, анан эрежеде белгиге дал кел. Экөө тең бир эле издөөгө келет; порттун кайда окулары менен айырмаланат.

Белги ыкмасы netfilter транспорт башын көргөндүктөн, ал эми багыттоо коду тарыхый түрдө көрбөгөндүктөн бар. Бул бүткүл механизм жана эмне үчүн камдык вариант бир акылдуу буйрук эмес, үч бирге иштеген бөлүк экенин түшүндүрөт.

Үч бөлүк тартиби менен

Алгач буруп жибергиңиз келген агымдарды белгилеңиз, чынжыр багыт чечимине чейин белги пайда болгондой эрте иштеши керек:

nft add table inet vpnexempt
nft 'add chain inet vpnexempt out { type route hook output priority mangle; }'
nft add rule inet vpnexempt out tcp dport 22 meta mark set 0x1

Экинчиден, белгиленген пакеттерди өзүнчө таблицага жибериңиз:

ip rule add fwmark 0x1/0x1 table 100

Үчүнчүдөн, ошол таблицага физикалык звенo аркылуу демейки багыт бериңиз. Даректер мисал; өзүңүздүкүн кой:

ip route add default via 192.168.1.1 dev wlan0 table 100

Үчүнчү кадамды өткөрүп жиберсеңиз, белгиленген пакет 100-таблицада багыт таппайт, ошондуктан ийгиликсиз болот. Симптом эреже тармакты бузгандай көрүнөт, чындыгында ал пакетте калган жалгыз жолду алып салган.

Биринчи пакеттен кийин аны эмне иштетет

Белгилер чыгуучу пакеттерге тиешелүү. Жооп физикалык интерфейске ошол звено берген дарек менен келет, ал эми негизги таблица ошол барар жер үчүн туннелди дагы эле артык көрүшү мүмкүн. Эки механизм жооп жолун ырааттуу кармайт: звено дареги үчүн булакка негизделген эреже жана агымдын бүт өмүрүнө чечимди сактаган байланыш көзөмөлү. Белгини conntrackке сактап, жоопто калыбына келтирүү — абалдык өзгөчөлүктү туруктуу кылуунун кадимки жолу.

Кайтарылган жолду чыпкалоо — экинчи тынч өлтүргүч. Эгер ядро кайтуу жолун катуу текшерсе жана жооп негизги таблица тандабаган интерфейске келсе, пакет эч кандай билдирүүсүз ыргытылат. rp_filter демейки маанилери бөлүштүрүүгө жана интерфейстин өткөрүлүшүнө жараша ар башка, ошондуктан өчүк деп эсептебей, иш жүзүндөгү маанини окуңуз.

Туннелдин өз транспортун белгилебеңиз. WireGuard же UDP OpenVPN туннели TCP 22 эмес, ошондуктан жогорку рецепт коопсуз, бирок туннелдин барар жеринен башка баары деп жазылган өзгөчөлүк шифрленген пакеттерди кармап, туннелди багыт илмегине окшош турдо бузушу мүмкүн.

Эсептебей текшериңиз

Ядродон кайсы жолду тандаарын сураңыз, барар жер жана порт үчүн, анан реалдуу өткөрүүнү иштетиңиз:

ip route get 203.0.113.10
ip rule show
nft list ruleset

Белги бар болсо да эсептегичтер эч качан кыймылдабаса, эреже дал келбейт. Эсептегичтер — сиз жазган конфигурация менен ядро колдонуп жаткан саясаттын айырмасы.

Бул качан туура эмес курал

Портко негизделген өзгөчөлүктөр табиятынан назик. Кызматтар портторун которот, HTTP/3 UDP 443 катары келет, ал эми бир колдонмо ар башка типтеги бир нече агымды ача алат. Эгер чыныгы талап ушул программа кадимки звенону колдонсун деген болсо, багыттоо катмары туура эмес жер; тармактык аттар мейкиндиги же ар бир колдонмого прокси жакшыраак келет.

Эгер талап ушул кошумча тармак кадимки звенону колдонсун деген болсо, белгилерди толук өткөрүп жиберип, такыраак багыт кошуңуз. Бул жөнөкөй, бир таблицада көрүнөт жана кийинки адам эрежелер жыйнагын окубай эле текшере алады.

Өрт дубалга тийишпей тун үч талаптын кайсынысы чындап сизде экенин жазыңыз. Жогорку механизм так, ал эми туура эмес катмарга колдонулган тактык жөн гана узагыраак тыныгуу.

Тектеш макалалар