Sin ceart, déarfaimid an rud céanna le dia an criptithe inniu.
Anseo beimid ag caint faoi thollán IPv4 neamhchriptithe, ach ní faoi cheann "lampa te", ach faoi cheann nua-aimseartha "LED". Agus tá soicéid amh ag splancadh anseo freisin, agus tá obair ar siúl le paicéid sa spás úsáideora.
Tá N prótacail tollánaithe ann do gach blas agus dath:
Ach is ríomhchláraitheoir mé, mar sin méadóidh mé N ach codán, agus fágtar forbairt prótacail fíor d'fhorbróirí Kommersant.
I gceann gan bhreith an dréachtIs é an rud atá á dhéanamh agam anois ná teacht ar óstach taobh thiar de NAT ón taobh amuigh. Ag baint úsáide as prótacail le cripteagrafaíocht do dhaoine fásta le haghaidh seo, ní raibh mé in ann an mothú go raibh sé cosúil le gealbhain a lámhach as gunna a chroitheadh. Mar ní úsáidtear an tollán don chuid is mó ach amháin chun poill a mhúscailt i NAT-e, is gnách go mbíonn trácht inmheánach criptithe freisin, ach báthann siad fós i HTTPS.
Agus mé ag déanamh taighde ar phrótacail tollánaithe éagsúla, díríodh aird m'fhoirfeisteoir istigh ar IPIP arís agus arís eile mar gheall ar a laghad forchostais. Ach tá míbhuntáistí suntasacha go leith ag baint leis do mo thascanna:
éilíonn sé IPanna poiblí ar an dá thaobh,
agus gan fíordheimhniú ar do shon.
Dá bhrí sin, bhí an foirfeach tiomáinte ar ais isteach sa chúinne dorcha an cloigeann, nó cibé áit ina suí sé.
Agus ansin lá amháin, agus ailt á léamh ar tolláin a dtacaítear leo ó dhúchas i Linux tháinig mé trasna ar FOU (Foo-over-UDP), i.e. cibé, fillte i UDP. Go dtí seo, ní thacaítear ach le IPIP agus GUE (Iamhchur Cineálach UDP).
“Seo an piléar airgid! Is leor IPIP simplí dom.” - Cheap mé.
Go deimhin, iompaigh amach nach raibh an piléar go hiomlán airgid. Réitíonn encapsulation i UDP an chéad fhadhb - is féidir leat ceangal le cliaint taobh thiar de NAT ón taobh amuigh ag baint úsáide as nasc réamhbhunaithe, ach anseo leath de na míbhuntáiste eile blossoms IPIP i bhfianaise nua - is féidir le duine ar bith ó líonra príobháideach i bhfolach taobh thiar de na infheicthe. IP poiblí agus calafort cliant (i IPIP íon níl an fhadhb seo ann).
Chun an fhadhb seo a réiteach go leith, rugadh an fóntais eipid. Cuireann sé meicníocht tí i bhfeidhm chun óstach iargúlta a fhíordheimhniú, gan cur isteach ar oibriú an FOU eithne, rud a phróiseálfaidh paicéid go tapa agus go héifeachtach sa spás eithne.
Níl do script ag teastáil uainn!
Ceart go leor, má tá eolas agat ar chalafort poiblí agus IP an chliaint (mar shampla, ní théann gach duine taobh thiar de áit ar bith, déanann NAT iarracht calafoirt 1-in-1 a mhapáil), is féidir leat tollán IPIP-over-FOU a chruthú leis an orduithe seo a leanas, gan aon scripteanna.
ar an bhfreastalaí:
# Подгрузить модуль ядра FOU
modprobe fou
# Создать IPIP туннель с инкапсуляцией в FOU.
# Модуль ipip подгрузится автоматически.
ip link add name ipipou0 type ipip
remote 198.51.100.2 local 203.0.113.1
encap fou encap-sport 10000 encap-dport 20001
mode ipip dev eth0
# Добавить порт на котором будет слушать FOU для этого туннеля
ip fou add port 10000 ipproto 4 local 203.0.113.1 dev eth0
# Назначить IP адрес туннелю
ip address add 172.28.0.0 peer 172.28.0.1 dev ipipou0
# Поднять туннель
ip link set ipipou0 up
ar an gcliant:
modprobe fou
ip link add name ipipou1 type ipip
remote 203.0.113.1 local 192.168.0.2
encap fou encap-sport 10001 encap-dport 10000 encap-csum
mode ipip dev eth0
# Опции local, peer, peer_port, dev могут не поддерживаться старыми ядрами, можно их опустить.
# peer и peer_port используются для создания соединения сразу при создании FOU-listener-а.
ip fou add port 10001 ipproto 4 local 192.168.0.2 peer 203.0.113.1 peer_port 10000 dev eth0
ip address add 172.28.0.1 peer 172.28.0.0 dev ipipou1
ip link set ipipou1 up
i gcás
ipipou* — ainm an chomhéadain líonra áitiúil tollán
203.0.113.1 - freastalaí IP poiblí
198.51.100.2 — IP poiblí an chliaint
192.168.0.2 — IP an chliaint sannta don chomhéadan eth0
10001 — calafort cliant áitiúil le haghaidh FOU
20001 — calafort cliant poiblí le haghaidh FOU
10000 — calafort freastalaí poiblí le haghaidh FOU
encap-csum — rogha seiceálacha UDP a chur le paicéid UDP atá cuimsithe; is féidir a chur in ionad noencap-csum, gan trácht, tá sláine á rialú cheana féin ag an gciseal imchochlaithe seachtrach (cé go bhfuil an paicéad taobh istigh den tollán)
eth0 — comhéadan áitiúil a mbeidh an tollán ipip ceangailte leis
172.28.0.1 — IP comhéadan tollán an chliaint (príobháideach)
172.28.0.0 — comhéadan freastalaí tolláin IP (príobháideach)
Chomh fada is atá an nasc UDP beo, beidh an tollán in ord oibre, ach má bhriseann sé, beidh tú t-ádh - má tá IP an chliaint: port fós mar an gcéanna - beidh sé beo, má athraíonn siad - beidh sé briseadh.
Is é an bealach is éasca chun gach rud a iompú ar ais ná na modúil eithne a dhíluchtú: modprobe -r fou ipip
Fiú mura bhfuil fíordheimhniú ag teastáil, ní i gcónaí a bhíonn IP poiblí agus calafort an chliaint ar eolas agus is minic a bhíonn siad dothuartha nó inathraithe (ag brath ar an gcineál NAT). Má fhágann tú ar lár encap-dport ar thaobh an fhreastalaí, ní oibreoidh an tollán, níl sé cliste go leor chun an calafort nasc iargúlta a ghlacadh. Sa chás seo, is féidir le iipou cabhrú freisin, nó is féidir WireGuard agus daoine eile cosúil leis cabhrú leat.
Conas a oibríonn sé?
Osclaíonn an cliant (a bhíonn taobh thiar de NAT de ghnáth) tollán (mar atá sa sampla thuas), agus cuireann sé paicéad fíordheimhnithe chuig an bhfreastalaí ionas go ndéanfaidh sé an tollán a chumrú ar a thaobh. Ag brath ar na socruithe, is féidir é seo a bheith ina phaicéad folamh (díreach ionas gur féidir leis an bhfreastalaí an IP poiblí: port ceangail a fheiceáil), nó le sonraí trína bhféadfaidh an freastalaí an cliant a shainaithint. Is féidir leis na sonraí a bheith ina bprásfhrása simplí i dtéacs soiléir (tagann an analaí le HTTP Basic Auth chun cuimhne) nó sonraí saindeartha sínithe le heochair phríobháideach (cosúil le HTTP Digest Auth amháin níos láidre, féach an fheidhm client_auth sa chód).
Ar an bhfreastalaí (an taobh leis an IP poiblí), nuair a thosaíonn iipou, cruthaíonn sé láimhseálaí scuaine nfqueue agus cumraíonn sé netfilter ionas go seolfar na paicéid riachtanacha áit ar cheart dóibh a bheith: paicéid a thosaíonn an nasc leis an scuaine nfqueue, agus [beagnach] téann an chuid eile go léir díreach chuig an éisteoir FOU.
Dóibh siúd nach bhfuil a fhios acu, is rud speisialta é nfqueue (nó NetfilterQueue) d'amaitéaraigh nach bhfuil a fhios acu conas modúil eithne a fhorbairt, rud a ligeann duit paicéid líonra a atreorú chuig spás úsáideora agus iad a phróiseáil trí úsáid a bhaint as netfilter (nftables/iptables). ciallaíonn primitive ar láimh: modhnaigh (roghnach ) agus tabhair ar ais go dtí an eithne é, nó caith amach é.
I gcás roinnt teangacha ríomhchlárúcháin tá ceangail le bheith ag obair le nfqueue, le haghaidh bash ní raibh aon cheann (heh, ní nach ionadh), bhí orm python a úsáid: úsáidí iipou NetfilterQueue.
Mura bhfuil feidhmíocht ríthábhachtach, ag baint úsáide as an rud seo is féidir leat do loighic féin a réiteach go réasúnta tapa agus go héasca maidir le bheith ag obair le paicéid ar leibhéal measartha íseal, mar shampla, prótacail aistrithe sonraí turgnamhacha a chruthú, nó trí sheirbhísí áitiúla agus iargúlta a tholladh le hiompar neamhchaighdeánach.
Oibríonn soicéid amh lámh ar láimh le nfqueue, mar shampla, nuair a bhíonn an tollán cumraithe cheana féin agus FOU ag éisteacht leis an gcalafort atá ag teastáil, ní bheidh tú in ann paicéad a sheoladh ón gcalafort céanna ar an ngnáthbhealach - tá sé gnóthach, ach is féidir leat paicéad a ghintear go randamach a ghlacadh agus a sheoladh go díreach chuig an gcomhéadan líonra ag baint úsáide as soicéad amh, cé go mbeidh gá le beagán níos mó tinkering chun paicéad den sórt sin a ghiniúint. Seo mar a chruthaítear paicéid le fíordheimhniú in iipou.
Ós rud é nach bpróiseálann iipou ach na chéad phaicéid ón nasc (agus iad siúd a d'éirigh le sceitheadh sa scuaine sular bunaíodh an nasc), ní bhíonn an fheidhmíocht beagnach ag fulaingt.
Chomh luath agus a fhaigheann an freastalaí iipou paicéad fíordheimhnithe, cruthaítear tollán agus tá gach paicéad ina dhiaidh sin sa nasc próiseáilte cheana féin ag an eithne ag seachaint nfqueue. Má theipeann ar an nasc, ansin seolfar an chéad phaicéad den chéad cheann eile chuig an scuaine nfqueue, ag brath ar na socruithe, más rud é nach paicéad é le fíordheimhniú, ach ón IP deireanach a chuimhnítear agus port an chliaint, is féidir é a rith ar nó a chaitheamh i leataobh. Má thagann paicéad fíordheimhnithe ó IP agus calafort nua, déantar an tollán a athchumrú chun iad a úsáid.
Tá fadhb amháin eile ag an ngnáth IPIP-over-FOU agus iad ag obair le NAT - ní féidir dhá thollán IPIP a chruthú atá cuimsithe sa UDP leis an IP céanna, toisc go bhfuil na modúil FOU agus IPIP scoite amach óna chéile. Is é sin ní bheidh péire cliant taobh thiar den IP poiblí céanna in ann nascadh go comhuaineach leis an bhfreastalaí céanna ar an mbealach seo. Amach anseo, b'fhéidir, déanfar é a réiteach ar leibhéal an eithne, ach níl sé seo cinnte. Idir an dá linn, is féidir le NAT fadhbanna NAT a réiteach - má tharlaíonn sé go bhfuil péire seoltaí IP á n-áitiú ag tollán eile cheana féin, déanfaidh iipou NAT ó poiblí go IP príobháideach eile, voila! - is féidir leat tolláin a chruthú go ritheann na calafoirt amach.
Mar Níl gach paicéad sa nasc sínithe, ansin tá an chosaint shimplí seo leochaileach do MITM, mar sin má tá villain lurking ar an gcosán idir an cliant agus an freastalaí ar féidir leo éisteacht leis an trácht agus é a ionramháil, is féidir leis a atreorú paicéid fíordheimhnithe trí seoladh eile agus cruthaigh tollán ó óstach neamhiontaofa .
Má tá smaointe ag éinne conas é seo a shocrú agus an chuid is mó den trácht sa chroílár á fhágáil agat, ná bíodh leisce ort labhairt.
Dála an scéil, tá cruthaithe go han-mhaith ag imchochlú sa UDP. I gcomparáid le hinchochlú thar IP, tá sé i bhfad níos cobhsaí agus go minic níos tapúla in ainneoin forchostais bhreise an cheanntásc UDP. Tá sé seo mar gheall ar an bhfíric go n-oibríonn an chuid is mó de na hóstach ar an Idirlíon go maith ach amháin leis na trí phrótacal is coitianta: TCP, UDP, ICMP. Is féidir leis an gcuid inláimhsithe gach rud eile a scriosadh go hiomlán, nó é a phróiseáil níos moille, toisc go bhfuil sé optamaithe ach amháin do na trí cinn seo.
Mar shampla, is é seo an fáth gur cruthaíodh QUICK, ar a bhfuil HTTP/3 bunaithe, ar bharr an UDP, agus ní ar bharr an IP.
Bhuel, a dhóthain focal, tá sé in am a fheiceáil conas a oibríonn sé sa “domhan fíor”.
Cath
A úsáidtear chun aithris a dhéanamh ar an saol fíor iperf3. Maidir le cé chomh gar agus atá sé don réaltacht, tá sé seo beagnach mar an gcéanna le haithris a dhéanamh ar an saol fíor i Minecraft, ach déanfaidh sé faoi láthair.
Rannpháirtithe sa chomórtas:
príomhchainéal tagartha
Is é iipou laoch an ailt seo
OpenVPN le fíordheimhniú ach gan aon chriptiú
OpenVPN i mód uile-chuimsitheach
WireGuard gan PresharedKey, le MTU=1440 (ó IPv4-amháin)
Sonraí teicniúla le haghaidh geeks Glactar méadracht leis na horduithe seo a leanas:
ar an gcliant:
UDP
CPULOG=NAME.udp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -c SERVER_IP -4 -t 60 -f m -i 10 -B LOCAL_IP -P 2 -u -b 12M; tail -1 "$CPULOG"
# Где "-b 12M" это пропускная способность основного канала, делённая на число потоков "-P", чтобы лишние пакеты не плодить и не портить производительность.