mitmproxy, DevTools, Gradle: VPN артындагы үч катмар
Loopback туннелге эч качан кирбейт. Симптомду угуучуга, ишеним кампасына же пакет чыпкасына таандык кылып, чындыгында иштен чыккан катмарды оңдоңуз.
VPN туташат, жана бири-бирине байланышпаган үч курал үч түрдүү жол менен иштен чыгат ошол эле түштөн кийин. mitmproxy сурамдарды көрүүнү токтотот, Chrome мүчүлүштүктөөчүдөн баш тартат, ал эми Gradle BindException жергиликтүү сокетти байлоодо ыргытат. Жалпы шек — туннель localhostту бөгөттөйт. Ал муну кыла албайт: 127.0.0.1 ядронун ичинде иштетилет жана эч качан адаптерге жетпейт, дарбазаны айтпаганда да.
Үч катмар, үч башка бузулуу
Кардар менен өзгөргөн нерсе loopbackка бараткан жол эмес. Бул жергиликтүү прокси, машинанын ишеним кампасы жана пакет чыпкасы, жана алардын ар бири иштеп чыгуучунун иш агымынын башка бөлүгүн бузат. Симптомду туура сапка коюу — диагностиканын көп бөлүгү:
| Symptom | Layer | First check |
|---|---|---|
| Proxy sees no traffic | Local proxy or listener | ss -lntp, or netstat -ano on Windows |
| TLS error in one tool only | Trust store | Which CA bundle does that runtime read? |
| Local bind or connect refused | Packet filter or port owner | Who holds the port, and what rule drops it? |
Бул типтеги дээрлик ар бир отчёт акыркы саптан башталып, жогору карай жүрөт, бул тескери. Туннель — loopback трафигин көрө албастыгы далилденген жалгыз катмар, ошондуктан ал эң аз шекке татыктуу. Процесстин эмнени байлаганынан баштаңыз, анан ал кайсы сертификаттарга ишенээрин сураңыз, жана ошондон кийин гана машинадагы саясатка караңыз.
Туннелден эмес, угуучудан баштаңыз
Качан 127.0.0.1:8080 дарегиндеги прокси трафикти кабыл алууну токтотсо, үч нерсенин бири болду: ал эч качан башталган эмес, башка портту байлаган, же чыпка loopback байланышын таштады. Угуп жаткан сокеттерди тизмелөө муну бир буйрук менен жооп берет, жана эки курал ким биринчи болгону боюнча макул болбосо, кайсы процесс портко ээ экенин да көрсөтөт.
Маршрут издөөдөгү жергиликтүү дарек ушуну экинчи тараптан ырастайт. ip route get loopback багытына карай loopback түзмөгүн билдирет, туннелди эч качан эмес, бул бирөө маршрутту өзгөртүүнү чечим катары сунуштаганда даяр тутууга пайдалуу сүйлөм.
Прокси катмары: чөйрө конфигурация эмес
Көптөгөн корпоративдик кардарлар HTTP проксисин иштетишет жана колдонмолор аны колдонот деп күтүшөт. Орнотуу HTTPS_PROXY shell ичинде аны сыйлаган буйрук сабынын куралдарын оңдойт, бирок өз жөндөө файлын окуган курал үчүн эч нерсе кылбайт. Gradle, Selenium жана gRPC ар бири өз конфигурациясы менен кеңешет, ал эми бир терминалда экспорттолгон прокси IDE иштеткен демон үчүн көрүнбөйт.
Контейнер куралдары — бул көрүнө турган кадимки жер. Контейнердин loopbackы өзүнүкү, ошондуктан 127.0.0.1 контейнер ичинде эч качан хосттун проксисин билдирбейт; хост дареги же хост тармагынын жөндөөсү керек. Shellде иштеп, курууда иштебей калган оңдоо адатта ушул сап, туннель эмес.
Ишеним катмары: курал башка кампаны окуйт
Кармоо — экинчи өзгөрүү жана эң адаштыруучу каталарды жаратат. Кардар текшерилген байланыштар үчүн өз сертификатын сунуштайт, ошондуктан корпоративдик тамырга ишенген браузер ийгиликке жетет, ал эми камтылган CA кампасы бар курал иштебей калат. certifi аркылуу Python requests — классикалык учур: операциялык системанын кампасы туура болушу мүмкүн, бирок сурам баары бир иштебейт, анткени ал аткаруу чөйрөсү аны эч качан окубайт. Ката тексти кармоону сейрек эскерет, ошондуктан бул сап туура эмес бузулган акыркы чекит деп диагностикаланат.
Акыркы чекит чындыгында эмнени сунуштаарын курал тастыктаган нерсе менен салыштырыңыз. openssl s_client сервер жиберген чынжырды көрсөтөт; куралдын өзүнүн текшерүү чыгышы эмнени чечкенин көрсөтөт. Алар дал келбесе, REQUESTS_CA_BUNDLE же SSL_CERT_FILE ушул аткаруу чөйрөсү үчүн тутка болуп саналат, жана корпоративдик тамыр ошол чөйрө окуган кампага таандык, кээ бир куралдар гана сыйлаган глобалдык жерге эмес.
SSL катасын оңдогон версия өзгөрүүсү — VPN жөнүндө эмес, ишеним жана шифр саясаты жөнүндө далил. SOAP кардарын иштеткен Python версиясынын төмөндөшү камтылган CA кампасын жана демейки TLS жөндөөлөрүн өзгөрттү; тармак жолу кыймылдаган жок.
Чыпка катмары: ал loopbackты да таштай алат
Үчүнчү өзгөрүү — пакет чыпкасы, жана кээ бир продуктулар туннелге кирбеген трафикти таштаган эрежелерди орнотушат. Жергиликтүү угуучулар да камтылышы мүмкүн. Бул иштеп турган сокетти четке кагылган же убактысы өткөн байланышка айландырат, жана пайда болгон ката машинадагы саясат эмес, колдонмодогу мүчүлүштүк сыяктуу көрүнөт.
Портко ээлик — бул катмардын экинчи жарымы. BindException сокетти ачуу мүмкүн болбогонун билдирет, бул байланыштын четке кагылышынан башка иштебей калуу. Чыпканы күнөөлөөдөн мурун портту башка процесс кармап турбаганын текшериңиз, анан жергиликтүү трафикти таштаган эрежени издеп, продукт колдогон эң тар уруксатты кошуңуз. Бир эле мүчүлүштүктөө порту үчүн атаандашкан эки курал саясат бөгөтү менен так ошол эле билдирүүнү берет, жана алардын бири гана өрт дубалын өзгөртүү менен оңдолот.
Chromeдун мүчүлүштүктөө порту ошол эле үй-бүлөдө иштебей калат. Браузер башталат, драйвер DevTools акыркы чекитине жете албайт, жана билдирүү тармакты эмес, DevToolsту атайт. Кошумча иштетүү желектери жана ашыкча драйвер менеджери кайсы процесс портко ээ экенин өзгөртөт, ошондуктан аларды алып салуу кээде VPNды оңдогондой көрүнөт.
Иштебей калган катмарды оңдоңуз
Туннелди эмес, иштебей калган катмарды оңдоңуз. Жеткиликсиз loopback угуучусуна анын угуучусун же портун оңдоо керек. Ишенимсиз сертификатка корпоративдик тамырды ошол конкреттүү аткаруу чөйрөсү караган жерге орнотуу керек, өзгөчөлүк тар кармалып. Жергиликтүү трафикти таштаган чыпкага өчүрүлгөн чыпка эмес, конкреттүү уруксат эрежеси керек, анткени өчүрүү ал коргогон калган нерселердин баарын кайра ачат.
VPNды кайра туташтыруу бул катмарлардын бирин да текшербейт. Ал аларды бузган өзгөрүүнү гана кайра иштетет, ошондуктан ошол эле үч иштебей калуу ар бир кайра туташуудан кийин кайтып келет жана кардарды активдүү эмес калтырган ар бир кайра жүктөөдөн кийин жоголот.