Толук туннелдүү VPN көтөрүлгөндөн кийин хост SSHга жооп берүүнү улантат, ал эми ошол эле машинадагы Docker аркылуу жарыяланган кызмат унчукпай калат. Угуучуда эч кандай кемчилик жок: контейнер иштеп жатат, порт картасы бар жана пакет жетет. Контейнер соо жана суроо ага чындап жетет. Айырма — Linux өз маршрутун тандаганда жооп кайдан башталарында, жана ошол айырма төмөнкү эки долбоордун кайсынысы керек экенин аныктайт.

Tupleды максаттуу NAT аркылуу көзөмөлдөңүз

Хостун алыңыз: 192.0.2.10 ал TCP 2222 портун 172.30.240.5:22 дарегиндеги контейнерге жарыялайт. 198.51.100.25 дарегинен келген суроо контейнерге жетпестен мурун которулат, ал эми контейнер өзү катары жооп берет.

WAN request:      198.51.100.25 -> 192.0.2.10:2222
after DNAT:       198.51.100.25 -> 172.30.240.5:22
container reply:  172.30.240.5:22 -> 198.51.100.25

Хосттун маршрут чечиминде жооп дагы эле контейнердин баштапкы дарегин алып жүрөт. Кайтарым которуу жарыяланган tupleды кийинчерээк калыбына келтирет, ошондуктан пакет так маршрут тандалган учурда туура эмес көрүнөт.

Эмне үчүн хостко гана арналган эреже аны өткөрүп жиберет

WAN таблицасын 192.0.2.10 дарегинен келген пакеттерге гана тандаган эреже хосттун өз демондорун камтыйт жана бул кайра багытталган жоопту такыр өткөрүп жиберет. Жооптогу баштапкы дарек — 172.30.240.5, хост эмес.

Ашыкча оңдоо — контейнерден баарын WAN аркылуу багыттоо, бул контейнердин байланышсыз чыгуучу туташууларын да VPNден бошотот. Бул суралган саясаттан башка жана адатта кийинчерээк бирөөнү таң калтырат.

DNATтан кийинки дал келтирүү — башка hook

Dockerдин firewall документтери төмөнкүнү белгилейт: кадимки колдонуучу фильтрлөө DNATтан кийинки максатты көрөт, ошондуктан кадимки эрежеде жарыяланган 2222 портун дал келтирүү контейнердин 22 портун дал келтирүү менен бирдей эмес. Эгер баштапкы tuple маанилүү болсо, кайсы порт көрүнөрүн болжолдоонун ордуна колдоого алынган баштапкы максат механизмин колдонуңуз.

Hookтардын бул башаламандыгы туура көрүнгөн жана эч качан дал келбеген эрежелерди жаратат. Саясатты кайра жазардан мурун эреженин өзүндөгү эсептегичтерди текшериңиз. Нөл соккусу бар эреже пакет эч качан жетпеген жерде бааланып жатканын айтат.

Долбоор A: чечимди туташуу абалы катары алып жүрүү

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

  1. Docker, VPN же башка саясат ээси менен кагылышпаган белги талаасын жана эреже артыкчылыгын бөлүңүз.
  2. Туташуу көзөмөлү жеткиликтүү DNAT алдындагы чекитте көздөлгөн жаңы WAN туташуусун гана аныктаңыз.
  3. Чечимди туташуу белгисине жазыңыз, баштапкы суроонун өзүн WAN таблицасына мажбурлабастан.
  4. Жооп багытында багыттоодон мурун пакетке өзүңүздүн белги биттериңизди гана кайтарыңыз.
  5. VPN эрежеси биринчи жеңе албагандай кылып толук WAN таблицасын жетиштүү эрте тандаңыз.

Бул таблицага чыныгы туташкан маршруттар жана шлюз керек. Маршрут жок болгондогу аныкталган жүрүм-турум да керек. Туннелге үнсүз кулоо — эң начар жыйынтык, анткени конфигурация дагы эле иштеп жаткандай көрүнөт. Анын ордуна жабык түрдө ийгиликсиз болуңуз жана аны журналга жазыңыз.

Долбоор B: хостто аяктоо

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

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

Өзгөрүүнү текшериңиз, ниетти эмес

Коомдук тараптан жаңы уруксат берилген туташууну ачып, жооптун көздөлгөн интерфейстен чыгарын ырастаңыз. Андан кийин контейнер баштаган байланышсыз суроонун дагы эле VPNге ээрчишин текшериңиз.

Бир эрежени сыноо үчүн машинанын туташуу таблицасын тазалабаңыз: бар жазуулар мурунку картасын сактайт, ал эми тазалоо хосттогу калгандын баарын бузат. Портту жарыялоо жеткиликтүүлүктү аныктайт. Ал жооп жолун аныктабайт. Тандалган долбоорду анын таблица аттары менен жазып коюңуз, кийинки адам окуя учурунда аны кайра ачпашы үчүн.

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