Ndiko kulondola, tidzanena zomwezo kwa mulungu wa kubisa lero.
Apa tikambirana za njira yosadziwika ya IPv4, koma osati za "nyali yofunda", koma za "LED" yamakono. Ndipo palinso ma socket aiwisi akuthwanima pano, ndipo ntchito ikuchitika ndi mapaketi m'malo ogwiritsa ntchito.
Pali ma protocol a N pazakudya zilizonse ndi mtundu:
Koma ndine wopanga mapulogalamu, kotero ndidzawonjezera N pang'ono pang'ono, ndikusiya kupanga ma protocol enieni kwa opanga a Kommersant.
M'modzi wosabadwa polojekitiZomwe ndikuchita tsopano ndikufikira omwe ali kumbuyo kwa NAT kuchokera kunja. Pogwiritsa ntchito ma protocol okhala ndi ma cryptography achikulire pa izi, sindingathe kugwedeza kumverera kuti zinali ngati kuwombera mpheta mu cannon. Chifukwa msewu umagwiritsidwa ntchito nthawi zambiri kungobowola mu NAT-e, magalimoto amkati nthawi zambiri amabisidwa, koma amamirabe mu HTTPS.
Ndikafufuza ma protocol osiyanasiyana, chidwi changa chamkati chimakopeka ndi IPIP mobwerezabwereza chifukwa chakuchepa kwake. Koma ili ndi zovuta chimodzi ndi theka pazantchito zanga:
imafuna ma IP a anthu onse mbali zonse,
ndipo palibe kutsimikizika kwa inu.
Chifukwa chake, wochita bwino adabwezeredwa mu ngodya yamdima ya chigaza, kapena kulikonse komwe amakhala.
Ndiyeno tsiku lina, ndikuwerenga nkhani tunnel zothandizidwa ndi chikhalidwe ku Linux ndinapeza FOU (Foo-over-UDP), i.e. chilichonse, atakulungidwa mu UDP. Pakadali pano, IPIP ndi GUE (Generic UDP Encapsulation) zokha ndizo zimathandizidwa.
M'malo mwake, chipolopolocho chinapezeka kuti sichinali siliva kwathunthu. Encapsulation mu UDP imathetsa vuto loyamba - mutha kulumikizana ndi makasitomala kumbuyo kwa NAT kuchokera kunja pogwiritsa ntchito kugwirizana komwe kunakhazikitsidwa kale, koma apa theka la drawback lotsatira la maluwa a IPIP mu kuwala kwatsopano - aliyense wochokera pa intaneti payekha akhoza kubisala kumbuyo kwa zowoneka. pagulu IP ndi kasitomala doko (mu IPIP koyera vutoli kulibe).
Kuti athetse vutoli limodzi ndi theka, zofunikira zidabadwa mphamvu. Imagwiritsira ntchito makina opangira nyumba kuti atsimikizire kuti ali kutali, popanda kusokoneza ntchito ya kernel FOU, yomwe idzakonza mapaketi mofulumira komanso moyenera mu kernel space.
Sitikufuna zolemba zanu!
Chabwino, ngati mukudziwa doko la anthu onse ndi IP ya kasitomala (mwachitsanzo, aliyense kumbuyo kwake samapita kulikonse, NAT amayesa mapu madoko 1-in-1), mutha kupanga njira ya IPIP-over-FOU ndi kutsatira malamulo, popanda zolembedwa.
pa seva:
# Подгрузить модуль ядра 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
pa kasitomala:
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
kumene
ipipou* - dzina la mawonekedwe amtaneti am'deralo
203.0.113.1 - seva ya IP yapagulu
198.51.100.2 - IP yapagulu ya kasitomala
192.168.0.2 - kasitomala IP yoperekedwa ku mawonekedwe eth0
10001 - doko lamakasitomala apafupi a FOU
20001 - doko la kasitomala wa FOU
10000 - doko la seva yapagulu la FOU
encap-csum - kusankha kuwonjezera cheke cha UDP pamapaketi ophatikizidwa a UDP; akhoza kusinthidwa ndi noencap-csum, osatchulapo, umphumphu ukulamulidwa kale ndi wosanjikiza wakunja wa encapsulation (pamene paketi ili mkati mwa ngalandeyo)
eth0 - mawonekedwe akomweko pomwe njira ya ipip idzamangidwa
172.28.0.1 - IP ya mawonekedwe a kasitomala (achinsinsi)
172.28.0.0 - IP tunnel seva mawonekedwe (achinsinsi)
Malingana ngati kugwirizana kwa UDP kuli ndi moyo, ngalandeyo idzakhala ikugwira ntchito, koma ikasweka, mudzakhala ndi mwayi - ngati IP ya kasitomala: doko likadali chimodzimodzi - lidzakhala ndi moyo, ngati lisintha - lidzasweka.
Njira yosavuta yosinthira chilichonse ndikutsitsa ma module a kernel: modprobe -r fou ipip
Ngakhale kutsimikizika sikufunikira, IP ndi doko la kasitomala sizidziwika nthawi zonse ndipo nthawi zambiri zimakhala zosayembekezereka kapena zosinthika (kutengera mtundu wa NAT). Ngati musiya encap-dport kumbali ya seva, ngalandeyo sigwira ntchito, si nzeru zokwanira kutenga doko lolumikizana lakutali. Pankhaniyi, ipipou ingathandizenso, kapena WireGuard ndi ena onga iwo angakuthandizeni.
Kodi ntchito?
Makasitomala (omwe nthawi zambiri amakhala kumbuyo kwa NAT) amatsegula njira (monga momwe zilili pamwambapa), ndikutumiza paketi yotsimikizira ku seva kuti ikonzekere ngalandeyo kumbali yake. Kutengera makonda, izi zitha kukhala paketi yopanda kanthu (kungoti seva imatha kuwona IP yapagulu: doko lolumikizira), kapena ndi data yomwe seva imatha kuzindikira kasitomala. Deta ikhoza kukhala mawu osavuta omveka bwino (chifaniziro ndi HTTP Basic Auth chimabwera m'maganizo) kapena deta yopangidwa mwapadera yosainidwa ndi kiyi yachinsinsi (yofanana ndi HTTP Digest Auth yamphamvu kwambiri, onani ntchito client_auth mu kodi).
Pa seva (mbali ndi IP yapagulu), ipipou ikayamba, imapanga chowongolera mzere wa nfqueue ndikukonza netfilter kuti mapaketi ofunikira atumizidwe komwe ayenera kukhala: mapaketi oyambitsa kulumikizana ndi mzere wa nfqueue, ndi [pafupifupi] ena onse amapita molunjika kwa omvera FOU.
Kwa iwo omwe sakudziwa, nfqueue (kapena NetfilterQueue) ndi chinthu chapadera kwa osaphunzira omwe sadziwa kupanga ma module a kernel, omwe pogwiritsa ntchito netfilter (nftables/iptables) amakulolani kuti muwongolere mapaketi a netiweki kumalo ogwiritsira ntchito ndikuwongolera pamenepo njira zakale zomwe zili pafupi: sinthani (posankha) ndikubwezera ku kernel, kapena kutaya.
Seva ya ipipou ikangolandira paketi yotsimikizika, ngalande imapangidwa ndipo mapaketi onse olumikizana amakonzedwa kale ndi kernel yodutsa nfqueue. Ngati kugwirizana kwalephera, ndiye kuti paketi yoyamba ya yotsatira idzatumizidwa pamzere wa nfqueue, malingana ndi zoikidwiratu, ngati si paketi yokhala ndi kutsimikizika, koma kuchokera ku IP yomaliza kukumbukira ndi doko la kasitomala, ikhoza kuperekedwa. pa kapena kutayidwa. Ngati paketi yotsimikizika imachokera ku IP yatsopano ndi doko, ngalandeyo imakonzedwanso kuti iwagwiritse ntchito.
IPIP-over-FOU yachizolowezi imakhala ndi vuto linanso pamene mukugwira ntchito ndi NAT - sizingatheke kupanga ma IPIP awiri otsekedwa mu UDP ndi IP yomweyo, chifukwa ma modules a FOU ndi IPIP ali olekanitsidwa. Iwo. makasitomala awiri omwe ali kumbuyo kwa IP ya anthu omwewo sangathe kulumikiza nthawi imodzi ndi seva yomweyo motere. M'tsogolomu, mwina, idzathetsedwa pamlingo wa kernel, koma izi sizotsimikizika. Pakalipano, mavuto a NAT akhoza kuthetsedwa ndi NAT - ngati zichitika kuti ma adilesi a IP ali kale ndi ngalande ina, ipipou idzachita NAT kuchokera pagulu kupita ku IP yachinsinsi, voila! - mutha kupanga tunnel mpaka madoko atha.
Chifukwa Si mapaketi onse olumikizana omwe amasainidwa, ndiye kuti chitetezo chosavutachi chili pachiwopsezo cha MITM, chifukwa chake ngati pali woyipa yemwe akubisala panjira pakati pa kasitomala ndi seva yemwe angamvetsere kuchuluka kwa magalimoto ndikuwongolera, amatha kuwongolera mapaketi otsimikizika kudzera. adilesi ina ndikupanga ngalande kuchokera kwa munthu wosadalirika.
Ngati wina ali ndi malingaliro amomwe angakonzere izi ndikusiya kuchuluka kwa magalimoto pachimake, musazengereze kuyankhula.
Mwa njira, encapsulation mu UDP yadziwonetsera bwino kwambiri. Poyerekeza ndi encapsulation pa IP, imakhala yokhazikika kwambiri ndipo nthawi zambiri imathamanga ngakhale pamwamba pamutu wa UDP. Izi ndichifukwa choti makamu ambiri pa intaneti amagwira ntchito bwino ndi ma protocol atatu otchuka: TCP, UDP, ICMP. Gawo logwirika limatha kutaya china chilichonse, kapena kuchikonza pang'onopang'ono, chifukwa limakongoletsedwa ndi atatuwa.
Mwachitsanzo, ndichifukwa chake QUICK, yomwe HTTP/3 idakhazikitsidwa, idapangidwa pamwamba pa UDP, osati pamwamba pa IP.
Chabwino, mawu okwanira, ndi nthawi yoti muwone momwe zimagwirira ntchito mu "dziko lenileni".
Nkhondo
Amagwiritsidwa ntchito kutengera dziko lenileni iperf3. Pankhani ya kuyandikira kwa zenizeni, izi ndizofanana ndi kutsanzira dziko lenileni ku Minecraft, koma pakali pano zidzachitika.
Otenga nawo gawo pampikisano:
longosolerani njira yayikulu
mulumbe wacibalo eeci ni ipipou
OpenVPN ndi kutsimikizika koma osabisa
OpenVPN mumachitidwe ophatikiza onse
WireGuard yopanda PresharedKey, yokhala ndi MTU=1440 (kuyambira IPv4-only)
Deta yaukadaulo ya akatswiri Ma metric amatengedwa ndi malamulo awa:
pa kasitomala:
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", чтобы лишние пакеты не плодить и не портить производительность.