ACK пакетиндеги conntrack NEW: бул эмнени далилдебейт
NEW деп белгиленген ACK трекерде дал келген абал жок болгонун билдирет, VPN сессия ачканын эмес. hook, tuple жана жазуу терезесин окуңуз.
Өрт дубалынын журналында күтпөгөн бир сап бар: ACK пакети, conntrack абалы NEW, сиздики эмес булак дареги, багыттоо порту ачык. Муну эч ким уруксат бербеген жаңы кирүүчү байланыш деп окууга азгырылат. Сап чындыгында айткан нерсе тарыраак: ал пакет ушул hook-ко жеткенде трекерде дал келген абал жок болгон, жана пакет ACK алып жүргөн. Булар эки башка нерсе жөнүндө эки факт, жана экөө тең кол алышуунун толук жазуусу эмес. Кортунду чыгармайын деп мен өтүүчү тартип ушул.
Өкүмдөн эмес, пакеттен баштаңыз
Түшүндүрүүдөн мурун байкоолорду бөлүңүз. TCP желекчелери ушул пакетти сүрөттөйт, трекердин абалы ошол hook-то эмнени билгенин сүрөттөйт, ал эми сиздин жазууңуз жазып алган терезени гана сүрөттөйт.
Ушул үчөөнү аралаштыруу — ACK «провайдер кимдир бирөөнү киргизди» болуп калган жол.
NEW hook-то чындыгында эмнени билдирет
iptables conntrack дал келүүсү NEW-ди байланышты баштаган пакет же эки багытта тең трафикти көрө элек байланышка тиешелүү пакет катары документтештирет. ESTABLISHED трекер эки багытта тең пакеттерди көргөнүн билдирет. Эки аныктаманын бири да пакет SYN болгон деп, же ал тарыхсыз келген деп айтпайт.
Агымды ортосунан байкоону баштаган трекер кийинки пакетти билгенине жараша классификациялайт, ал эч нерсе болбошу мүмкүн. Бул трекердин эс тутуму жөнүндө сүйлөм, алыскы хосттун ниети жөнүндө эмес.
Бош көзөмөл ACK таң калычтарынын көбүн түшүндүрөт
Ядро документтештирет nf_conntrack_tcp_loose, бул трекерге башталышын көрбөгөн TCP байланыштарын алууга мүмкүндүк берет. Параметр демейки маанисинде болгондо, агымдын ортосунан келген ACK орношкон агым катары кабыл алынышы мүмкүн. Аны өчүрсөңүз, ошол эле пакет NEW эмес, INVALID деп классификацияланууга ыктайт. Эки жыйынтык тең трекердин эрежелерин сүрөттөйт, колдонмо тарыхын эмес.
Ошондуктан белгиге теория куруудан мурун ошол параметрди текшериңиз.
Тажатып турган себептерди ушул тартипте жокко чыгарыңыз
Мен издеген NEW-on-ACK окуяларынын көбү ушулардын бири менен аяктады, жана баарын текшерүү арзан:
- conntrack таблицасы тазаланды же трекер кайра иштетилди.
- Хост кайра жүктөлдү же агым башка namespace же түзмөккө өттү.
- Асимметриялык маршруттоо SYN-ди сиз жазбаган жолго чыгарды.
- NAT tuple-ду кайра жазды, ошондуктан жазуу мындан ары сиз окуганга дал келбейт.
- Жазуу кеч башталды жана башталышын эч качан көргөн жок.
Алардын ар бири мурунку пакеттерди трекердин көрүү талаасынан алып салат, кийинкилерин бузулбай калтырат. Кайра жүктөө же таблицаны тазалоо uptime жана журналдардан ырастоого эң оңой. Асимметриялык маршруттоо бир багыттуу жазуу катары көрүнөт. NAT — айлакер, анткени трекер сактаган tuple журналга басылган tuple эмес.
Улантуудан мурун кайсыларын жана кантип жокко чыгарганыңызды жазыңыз.
tuple, интерфейс жана hook окуңуз
conntrack жазуусу даректер, порттор жана протокол боюнча ачкычталат, ошондуктан ар кандай котормо кайсы жазуу дал келерин өзгөртөт. Интерфейс менен hook-ту да жазыңыз, анткени туура эмес интерфейсте же башка чынжырдан кийин көрүнгөн пакет жол диаграммадагыдай эмес экенин айтат. Окуя VPN-ге тиешелүү болгондо, ички пакетти же тышкы ташуучуну карап жатканыңызды аныктаңыз. Анан дарбаза ошол эле беш бөлүктүү tuple үчүн жазганы менен салыштырыңыз.
Бир агымдын карама-каршы эки көрүнүшү ар биринен өз-өзүнчө көбүрөөк маалымат берет.
Качан эскалация жасоого татыктуу
Жеткиликтүү жана болбошу керек кызматты агым, ага уруксат берген саясат жана эки учурдагы далилдер менен көрсөтө алганыңызда эскалация жасаңыз. Бир абал белгисине же бир жарым-жартылай жазууга таянып провайдердин кемчилиги тууралуу кабарлабаңыз, анткени ал кабар дал ушул окуган түшүндүрмө менен жабылат. Эгер кызмат чын эле ачык болсо, ошол чектин ээси аны оңдогон туура адам, жана программа катасынан көрө делегирленген порт картасы же кокусунан пайда болгон угуучу ыктымалдуу себеп.
Анан бир пакетти бүтүндөй сессиядай көрсөткөн көрүнүү кемтигин жабыңыз.