Саясат боюнча маршруттоо жана SOCKS: трафикти чындап кайсы катмар проксилейт
SOCKS портуна барган маршрут — SOCKS сессиясы эмес. Колдонмо деңгээлиндеги прокси жөндөөлөрүн, IP-ден проксиге адаптерин жана маршрутталган шлюзду өзгөртүүнү аткарган катмар боюнча салыштырыңыз.
Сиз VPN кардарынын трафигин 1080 портунда SOCKS угуучусу иштеген хостко жөнөтүүчү саясат маршрутун коштуңуз. Пакеттер келишет, угуучу эч нерсе жазбайт, ал эми байланыш салбырап калат. Маршрутта эч кандай ката жок: кийинки секирик пакеттин кайда бараарын тандайт, ал эми SOCKS — кардар башташы керек болгон сүйлөшүү. Адамдар трафикти прокси аркылуу жөнөтүү деп адатта эмнени түшүнүшөрүнүн үч архитектурасын салыштырыңыз, ошондо жөндөөңүздөн кайсы бөлүк жетишпей жатканы айкын болот.
Маршруттоо, DNAT жана SOCKS ар башка нерселерди өзгөртөт
Саясат маршруту 3-катмардын чечимин кайра жазат. Бир кардардын трафигин тандалган кийинки секирикке жөнөтүү үчүн эки сап жетиштүү:
ip route add default via 10.50.0.2 table 101
ip rule add from 10.77.0.2 lookup 101Андан кийин ядро пакетти 10.50.0.2ге өткөрүп берет, ал эми баштапкы багыт IP аталышында кала берет. Эгер 10.50.0.2 маршруттагыч болсо, ал пакетти жөнөтөт. Эгер ал 1080де SOCKS демону бар хост болсо, пакет аны кабыл ала турган эч нерсеге адрестелген эмес, жана 1080 портуна DNAT да жардам бербейт, анткени которулган пакет дагы эле SOCKS саламынын ордуна колдонмонун баштапкы жүгүн алып жүрөт.
SOCKS5 версия байтынан, ыкмалардын тизмесинен, аутентификация алмашуусунан жана багытты атаган суроо-талаптан башталат. Бул колдонмо маалыматтары. Эч бир маршруттоо жазуусу да, netfilter максаты да аны жаратпайт, жана бир саптагы салыштыруу ушундай: маршруттоо жолду тандайт, SOCKS серверден экинчи байланыш түзүүнү суранат.
Биринчи учур: колдонмо өзү SOCKS сүйлөй алат
Программада прокси жөндөөсү болсо, бул эң кыска жол жана ядрону өзгөртүүнү талап кылбайт. Аны угуучуга багыттаңыз, сервер сураса каттоо маалыматтарын бериңиз жана аттар жергиликтүү чечилеби же проксиге берилеби, аны чечиңиз. curl боюнча булар ар башка желекчелер, жана багыт прокси тараптан гана чечилгенде айырма маанилүү:
curl --socks5 10.50.0.2:1080 https://docs.example.com
curl --socks5-hostname 10.50.0.2:1080 https://internal.example.comПрокси чөйрөсүнүн өзгөрмөлөрүн этибарга албаган же чийки сокеттерди ачкан колдонмолорго бул жол менен жардам берүү мүмкүн эмес. Браузерлер жана көпчүлүк HTTP куралдары жакшы; оюн кардары, почта демону же жеткирүүчүнүн каалаган бинардык файлы адатта андай эмес. Чек ара ар бир колдонмо жана ар бир протокол үчүн, ошондуктан бул параметр тестирлөө үчүн эң сонун жана бүтүндөй VPN үчүн жооп катары алсыз.
Экинчи учур: IP агымдарын прокси сессияларына өзгөртүүчү адаптер
SOCKS сүйлөй албаган программалар үчүн өзгөртүү IP трафигин токтоткон жана алардын атынан прокси сессияларын ачкан нерседе болушу керек. Бул компоненттин туннель интерфейси бар, саясаттык маршруттоо тандаган агымдарды кабыл алат, ар бири үчүн SOCKS кол алышуусун аткарат жана жоопторду кайра курат. Маршрут трафикти ага багыттайт; сессияны түзгөн — адаптер.
Аны бүтүндөй кошумча тармакка ишентип тапшырганга чейин документтерин окуңуз. Көптөгөн адаптерлер TCPни жакшы ташыйт жана UDP менен SOCKS5 UDP бирикмеси аркылуу гана иштейт, жана алардын эч бири ICMPни прокси трафигине айландырбайт, ошондуктан ийгиликтүү ping прокси жолу жөнүндө эч нерсе айтпайт. DNS — башка тузак: эгер адаптер аттарды жергиликтүү чечсе, ички гана жазуулар туура эмес жоопко же такыр эч нерсеге чечилет.
Циклдердин алдын алуу — тиштеп алган операциялык деталь. Адаптердин SOCKS серверине өз байланыштары кайрадан адаптерге маршрутталбашы керек, ошондуктан анын трафигине эрежедеги өзгөчөлүк же өзүнчө булак дареги керек. Муну туура эмес кылсаңыз, прокси сессиясы өзүн проксилөөгө аракет кылат.
Үчүнчү учур: хост чындыгында маршрутталган шлюз
Кээде иштеп жаткан жөндөөдө SOCKS такыр болбойт. Алыскы хост пакеттерди жөнөтөт же аларга NAT жасайт, ал эми булакка негизделген эреже аны чыгуу катары тандайт. Бул долбоор мыйзамдуу, жана көчүрүлгөн конфигурациянын бир тармакта иштеп, экинчисинде эмне үчүн иштебей каларын түшүндүрөт: эреже бирдей, жетишпеген бөлүк — наркы тараптагы жөнөтүү кызматы.
Үч учур тез ажырайт. Чындыгында эмне угуп жатканын текшериңиз, анан хостко жеткен алгачкы байттарды караңыз:
ss -ltnp 'sport = :1080'
tcpdump -ni eth0 -X 'tcp port 1080'Чыныгы SOCKS кардарынын алгачкы жүк байты — 0x05, саламдагы версия. Эгер тартуу анын ордуна баштапкы колдонмо маалыматтарын көрсөтсө, эч бир SOCKS демону жооп бербейт, анткени сүйлөшүү эч качан башталган эмес. Эгер 1080де эч нерсе укпаса, хост — шлюз, ал эми суроо ал жөнөтөбү жана кайтуу жолу барбы дегенге айланат.
Катмарды төрт суроо менен тандаңыз
Программада прокси жөндөөсү барбы? Аны колдонуп, ошол жерде токтоңуз. Трафикте аман калышы керек UDP же ICMP барбы? ICMPни маршрутталган же NAT шлюзу гана ташыйт, ал эми UDPге эки тарап тең колдогон SOCKS5 бирикмеси керек. Машинадагы ар бир процессти, анын ичинде жөндөй албагандарыңызды да камтуу керекпи? Анда интерфейске ээ жана агымдарды токтоткон адаптер керек. Анын маршруттоосун, DNSин жана циклдердин алдын алуу өзгөчөлүктөрүн да өз мойнуңузга ала аласызбы? Андай болбосо, жөнөкөй шлюзду иштетүү арзаныраак болот.
Бир айырмачылыкты так кармоо керек. VPN кардарынын өз socks-proxy параметри сырткы туннель байланышынын өз серверине кантип жетээрин сүрөттөйт жана ички кардар агымдарын өзгөртүү тууралуу эч нерсе айтпайт. Бул экөө бир билетте тынымсыз чаташтырылат. Маршрутка тийүүдөн мурун кандай мамиле керек экенин чечиңиз.