E tika ana, ka pera ano ta matou korero ki te atua whakamunatanga i tenei ra.
I konei ka korero tatou mo tetahi kohanga IPv4 kaore i whakamunatia, engari mo te "rama mahana", engari mo te "LED" hou. A kei reira ano nga turanga mata e rarapa ana i konei, kei te haere tonu te mahi me nga paatete kei te waahi kaiwhakamahi.
Engari he kaihōtaka ahau, no reira ka whakanuia e ahau te N ma te hautau anake, ka waiho te whanaketanga o nga kawa tuturu ki nga kaihanga Kommersant.
I roto i tetahi whanau te tauiraKo taku mahi inaianei ko te toro atu ki nga kaihautu kei muri i te NAT mai i waho. Ma te whakamahi i nga kawa me te tuhinga tuhi pakeke mo tenei, kaore au i kaha ki te wiri i te ahua he rite ki te pupuhi pihoihoi mai i te pu. No te mea ka whakamahia te kauhanga mo te nuinga o te waa ki te wero rua i roto i te NAT-e, ka whakamunatia ano nga waka o roto, engari ka toremi tonu ratou i roto i te HTTPS.
I a au e rangahau ana i nga momo kawa tunneling, ka aro atu taku tino tangata o roto ki te IPIP na te mea he iti rawa te utu. Engari he kotahi me te hawhe nga ngoikoretanga nui mo aku mahi:
e hiahia ana ki nga IP whanui i nga taha e rua,
a kahore he motuhēhēnga māu.
Na reira, ka peia te tangata tino pai ki roto i te kokonga pouri o te angaanga, ki hea ranei ia e noho ana.
Na i tetahi ra, i te wa e panui ana nga tuhinga ko nga huarahi e tautokohia ana e te tangata whenua i roto i te Linux ka tutaki ahau ki te FOU (Foo-over-UDP), i.e. ahakoa, takaia ki te UDP. I tenei wa, ko te IPIP me te GUE (Generic UDP Encapsulation) e tautokohia ana.
“Tenei te matā hiriwa! He iti noa te IPIP mo au." - I whakaaro ahau.
Ko te mea pono, karekau te matā i tino hiriwa. Ko te whakaurunga i roto i te UDP e whakaoti ana i te raru tuatahi - ka taea e koe te hono atu ki nga kaihoko kei muri i te NAT mai i waho ma te whakamahi i te hononga kua whakaritea i mua, engari i konei ko te haurua o nga puāwaitanga IPIP e whai ake nei ka puta i roto i te marama hou - ka taea e tetahi mai i te whatunga motuhake te huna i muri o te kitea. IP tūmatanui me te tauranga kiritaki (i roto i te IPIP parakore karekau tenei raru).
Hei whakaoti i tenei raruraru kotahi me te hawhe, i whanau mai te taputapu ipipou. Ka whakatinanahia e ia he tikanga hanga-whare mo te whakamotuhēhē i te kaihautu mamao, me te kore e whakararu i te mahi o te kernel FOU, ka tere me te pai te tukatuka i nga paatete ki te waahi kernel.
Kaore matou e hiahia ana i to tuhinga!
Ae, mena ka mohio koe ki te tauranga whanui me te IP o te kiritaki (hei tauira, ko nga tangata katoa kei muri kare e haere ki hea, ka ngana a NAT ki te mapi i nga tauranga 1-i-1), ka taea e koe te hanga i tetahi kohanga IPIP-over-FOU me te whai i nga whakahau, kaore he tuhinga.
i runga i te tūmau:
# Подгрузить модуль ядра 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
i runga i te kiritaki:
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
te wahi
ipipou* — ingoa o te atanga whatunga kauhanga paetata
203.0.113.1 — tūmau IP tūmatanui
198.51.100.2 — IP tūmatanui o te kiritaki
192.168.0.2 — kiritaki IP kua tohua ki te atanga eth0
10001 — tauranga kiritaki rohe mo FOU
20001 — tauranga kiritaki tūmatanui mo FOU
10000 — tauranga tūmau tūmatanui mo FOU
encap-csum — he whiringa ki te taapiri i te utu arowhai UDP ki nga paanui UDP kua kapi; ka taea te whakakapi e noencap-csum, me te kore korero, kua whakahaerea kētia te tapatahi e te paparanga o waho (i te mea kei roto te kete i roto i te kauhanga)
eth0 — atanga rohe ka herea ai te tunnel ipip
172.28.0.1 — IP o te atanga kauhanga kiritaki (takitahi)
172.28.0.0 — Atanga tūmau kauhanga IP (takitahi)
I te wa e ora ana te hononga UDP, ka pai te mahi o te kauhanga, engari ki te pakaru, ka waimarie koe - mena kei te noho tonu te IP o te kiritaki: te tauranga - ka ora, ki te rereke - ka pakaru.
Ko te huarahi ngawari ki te whakahoki i nga mea katoa ko te tango i nga waahanga kernel: modprobe -r fou ipip
Ahakoa kaore e hiahiatia te motuhēhēnga, ko te IP tūmatanui me te tauranga o te kiritaki kaore i te mohiotia i nga wa katoa, he maha nga wa ohorere, rereke ranei (i runga i te momo NAT). Mena ka waiho e koe encap-dport i runga i te taha tūmau, karekau te kauhanga e mahi, karekau he mohio ki te tango i te tauranga hononga mamao. I tenei keehi, ka taea ano e te ipipou te awhina, ka awhina ranei a WireGuard me etahi atu penei i a koe.
Ka pēhea te mahi i te reira?
Ko te kiritaki (kei te nuinga o te waa kei muri i te NAT) ka whakatuwhera i tetahi kohanga (penei i te tauira i runga ake nei), ka tukuna he kete motuhēhēnga ki te tūmau kia whirihorahia e ia te kauhanga ki tona taha. I runga i nga tautuhinga, ka taea tenei he putea kau (kia kite te tūmau i te IP tūmatanui: tauranga hononga), me nga raraunga ranei e taea ai e te tūmau te tautuhi i te kiritaki. Ko nga raraunga ka taea te kiangahipa ngawari i roto i nga tuhinga maamaa (ko te whakataurite me te HTTP Basic Auth ka mau ki te hinengaro) me nga raraunga i hangaia motuhake kua hainatia me te taviri motuhake (he rite ki te HTTP Digest Auth he kaha ake, tirohia te mahi. client_auth i roto i te waehere).
I runga i te tūmau (te taha ki te IP tūmatanui), ka tīmata te ipipou, ka hanga he kaihautū tūtira nfqueue me te whirihora i te netfilter kia tukuna ai ngā pākete e tika ana ki te wāhi e tika ana: ngā pākete e arawhiti ana i te hononga ki te tūtira nfqueue, a [tata] haere tonu atu nga toenga katoa ki te kaiwhakarongo FOU.
Mo te hunga karekau i te mohio, he mea motuhake te nfqueue (NetfilterQueue ranei) mo nga runaruna kaore e mohio ki te whakawhanake i nga waahanga kernel, ma te whakamahi i te netfilter (nftables/iptables) ka taea e koe te huri i nga paatete whatunga ki te waahi kaiwhakamahi me te tukatuka ki reira ma te whakamahi tikanga o mua kei te ringa: whakarerekē (kwhiria) ka whakahokia ki te kakano, ka makahia ranei.
Mo etahi reo whakamaoritanga he here mo te mahi me te nfqueue, mo te bash kaore he (heh, ehara i te mea miharo), me whakamahi ahau i te python: ipipou te whakamahi NetfilterQueue.
Mena karekau he mea nui te mahi, ma te whakamahi i tenei mea ka taea e koe te hanga tere me te ngawari ki te hanga i o whakaaro mo te mahi me nga paatete i te taumata iti rawa, hei tauira, hanga kawa whakawhiti raraunga whakamatautau, taraihia ranei nga ratonga a-rohe me nga ratonga mamao me te whanonga kore-paerewa.
Ka mahi tahi nga turanga mata ki te nfqueue, hei tauira, i te wa kua whirihorahia te kauhanga me te whakarongo a FOU ki te tauranga e hiahiatia ana, kare e taea e koe te tuku i tetahi putea mai i te tauranga kotahi i runga i te tikanga - he pukumahi, engari ka taea e koe te tango me te tuku mai i tetahi paatete hanga matapōkeretia ki te atanga whatunga ma te whakamahi i te turanga mata, ahakoa ko te whakaputa i taua kete ka nui ake te mahi. Koinei te hanga o nga paakete me te motuhēhēnga i roto i te ipipou.
I te mea ka mahia e te ipipou nga paakete tuatahi mai i te hononga (me era i uru ki roto i te rarangi i mua i te whakaturanga o te hononga), karekau e raru te mahi.
Ina whiwhi te tūmau ipipou i tētahi pākete whakamotuhēhē, ka hangaia he kohanga, ā, ko ngā pākete katoa o muri mai i roto i te hononga kua oti kē te tukatuka e te kākano e hipa ana i te nfqueue. Mena ka rahua te hononga, ka tukuna te putea tuatahi o te mea e whai ake nei ki te rarangi nfqueue, i runga i nga tautuhinga, mena ehara i te mea he putea me te whakamotuhēhēnga, engari mai i te IP kua maumaharatia me te tauranga kiritaki, ka taea te tuku. ki runga, ka makahia ranei. Mēnā ka puta mai he pākete i whakamotuhēhēhia i tētahi IP hou me te tauranga, ka whirihora anō te kauhanga hei whakamahi.
Ko te IPIP-over-FOU o mua he raru ano i te wa e mahi tahi ana me te NAT - kaore e taea te hanga e rua nga kauhanga IPIP kua whakauruhia ki roto i te UDP me te IP kotahi, na te mea he tino mokemoke nga waahanga FOU me te IPIP tetahi ki tetahi. Ko era. e kore e taea e te tokorua o nga kiritaki kei muri i te IP whanui kotahi te hono ki te tuumau kotahi penei. Ake ake nei, pea, ka whakatauhia i te taumata kernel, engari kaore tenei i te tino mohio. I tenei wa, ka taea e te NAT te whakatika nga raruraru NAT - ki te mea kua noho kee te rua o nga wahitau IP e tetahi atu kauhanga, ka mahia e ipipou te NAT mai i te iwi whanui ki tetahi IP tūmataiti rereke, voila! - ka taea e koe te hanga kauhanga kia pau ra ano nga tauranga.
No te mea Karekau nga paatete katoa i roto i te hononga i hainatia, katahi ka whakaraerae tenei whakamarumaru ngawari ki te MITM, na mena he tangata nanakia e piri ana i te huarahi i waenga i te kaihoko me te kaimau ka taea te whakarongo ki nga waka me te raweke, ka taea e ia te huri i nga paatete kua whakamanahia ma tetahi atu wahitau ka hangaia he kauhanga mai i tetahi kaihautu kore pono.
Mena kei te whai whakaaro tetahi ki te whakatika i tenei i te wa e waiho ana te nuinga o nga waka ki te matua, kaua e whakaroa ki te korero.
Ma te ara, ko te whakaurunga i roto i te UDP kua tino pai te whakamatau. Ka whakatauritea ki te whakaurunga i runga i te IP, he nui ake te pumau me te tere ake ahakoa te taapiri o te pane UDP. Ko tenei na te mea ko te nuinga o nga kaihautu i runga i te Ipurangi e mahi pai ana me nga tikanga rongonui e toru: TCP, UDP, ICMP. Ka taea e te waahanga tangihanga te whakakore i nga mea katoa, ka tere haere ranei te mahi, na te mea ka arotauhia mo enei e toru anake.
Hei tauira, koinei te take i hanga ai a QUICK, kei runga te HTTP/3, i runga ake o te UDP, kaua ki runga ake o te IP.
Ana, he nui nga kupu, kua tae ki te wa ki te kite i te mahi i roto i te "ao tuturu".
Pakanga
I whakamahia ki te whai i te ao tūturu iperf3. Mo te ahua o te tata ki te mooni, he rite tonu tenei ki te whai i te ao tuuturu i Minecraft, engari mo tenei wa ka mahi.
Nga kaiuru ki te whakataetae:
te hongere matua tohutoro
ko ipipou te toa o tenei tuhinga
OpenVPN me te motuhēhēnga engari karekau he whakamunatanga
OpenVPN i roto i te aratau whakauru katoa
WireGuard kahore PresharedKey, me MTU=1440 (mai i te IPv4-anake)
Nga raraunga hangarau mo nga geeks Ka tangohia nga ine me nga whakahau e whai ake nei:
i runga i te kiritaki:
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", чтобы лишние пакеты не плодить и не портить производительность.