Hic de cuniculo IPv4 unencrypto loquemur, sed non de una "lucerna calida", sed de uno moderno "duci". Et sunt etiam bases crudae hic micantes, et opus est comparatum cum facis in spatio usoris.
Sed programmator sum, ita N fractionem tantum augebo, et progressiones reales protocolla ad Kommersant tincidunt relinquemus.
Nondum natus in uno projectQuod nunc facio, exercituum extra NAT ab extra est. Protocolla cum cryptographia adulta hoc usus sum, sensum movere non potui quod instar passerum e tormento mittendo esset. Quod cuniculum plerumque solum in NAT-e fodiendo perforatum, commercii interni etiam encryptari solet, sed adhuc mergunt in HTTPS.
Dum varias cuniculos protocolla perscrutantes, interiorum perfectionistarum intentio ad IPIP iterum atque iterum ob suam supra caput minimam trahebatur. Sed habet unum et dimidium notabile incommodis in officiis meis;
publica IPS utrinque requirit;
et nulla authentica tibi.
Repulsus ergo perfectissimus in obscurum angulum cranii, vel ubicunque sedet.
Et tunc una die, dum legeret vasa paternus sustinetur cuniculis in Linux veni FOU (Foo-over-UDP), i.e. quidquid involutum UDP. Hactenus, solum IPIP et GUE (Generic UDP Encapsulation) sustentantur.
"Hic est argentum bullet! Simplex IPIP satis est mihi. - Cogitavi.
Nam glans non omnino argentum evasit. Encapsulation in UDP primam quaestionem solvit - cum clientibus post NAT ab extrinseco coniungere potes nexu praestructo utens, sed hic dimidia pars proximae incommodi IPIP efflorescit in nova luce - quis ex retis privatis post aspectabilem occultare potest. public IP et clientis portus (in puro IPIP hoc problema non est).
Ad solvendum hoc unum et dimidium problema, utilitas nata est ipipou. Mechanismum domi factum perficit ut exercitum remotum authenticet, sine operatione nuclei FOU perturbans, quae cito et efficaciter in spatio nuclei fasciculos processit.
Scriptum tuum non opus est!
Ok, si nosti portum publicum et IP clientis (exempli gratia, quisque post eum non ibit, NAT portus 1-in-1) designare conatur, potes IPIP-super-FOU cuniculum creare. sequentia mandata sine ullis scriptis.
in servo:
# Подгрузить модуль ядра 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
in clientelam:
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
quibus
ipipou* - nomen loci interface network cuniculum
203.0.113.1 - public IP server
198.51.100.2 - public IP of the client
192.168.0.2 - client IP assignata interface eth0
10001 - loci clientem portum ad FOU
20001 - publicum clientem portum pro FOU
10000 - public servo portum pro FOU
encap-csum - optioni addere UDP checksum ad fasciculos encapsulatos UDP; potest reponi per noencap-csumut ne dicam, integritas iam per stratum exteriorem encapsulationis (dum fasciculus intra cuniculum est) refrenat.
eth0 — loci interfaciei ad quod cuniculus ipip tenebitur
172.28.0.1 - IP clientis cuniculi interface (privata)
172.28.0.0 - IP servo interface cuniculum (privatum)
Quamdiu UDP nexus vivit, cuniculum in ordine operando erit, at si frangatur, felix eris - si huius IP: portus idem manet - vivet, si mutant - franget.
Facillime via ad omnia terga vertere est modulorum nuclei exonerare: modprobe -r fou ipip
Etiamsi authenticas non requiritur, publica IP et portus huius non semper cognoscuntur et saepe vagus vel variabilis sunt (prout typum NAT). Si omittis encap-dport in servo latere, cuniculum non laboro, non satis sapis portum nexu remoto capere. In hoc casu, ipipou etiam adiuvare possunt, vel WireGuard et alii similes te adiuvare possunt.
Quid opus est?
Cliens (quod plerumque post NAT) cuniculum aperit (ut supra exemplo est) authenticum fasciculum mittit servo ut cuniculum in latere suo conformet. Secundum uncinos, haec fasciculus vacuus esse potest (ita ut server videre possit publicum IP: nexum portum), vel cum notitia qua servus clientem cognoscere potest. Notitia passphrase simplex in textu perspicuo esse potest (pro analogia cum HTTP Basic Auth occurrit) vel specialiter designata notitia clavem privatam signatam (similis HTTP digestorum Auth tantum fortioris, functionem vide. client_auth in codice).
De servo (latere cum IP publico), quando incipit ipipou, tractatorem creat nfqueue queue et netfilter conformat ut necessaria mittantur facis ubi debeant: facis initializing nexum ad nfqueue queue, et [paene]. ceteri omnes recta audiente FOU.
Illis non in notis, nfqueue (vel NetfilterQueue) speciale est pro amantibus qui nesciunt modulos nucleos evolvere, qui per netfilter (nftables/iptables) permittunt te ad redirectionem reticulorum ad spatium usoris redirectum et eas ibi utendo processus. primitivum significat ad manum: modificare (libitum) et reddere ad nucleum vel abiicias.
Nam programmandi linguae quaedam ligaturae sunt ad operandum cum nfqueue, nam bash non erat (heh, non mirum), uti Python: ipipou utitur. NetfilterQueue.
Si perficientur critica non est, hac re utens potes rationem tuam cito et facile concoquere ad operandum cum fasciculis in gradu satis humili, exempli gratia, notitias experimentales creare protocolla transferre, seu troglodytam localem et remotam operas cum moribus non-commodus.
Rudis bases operantur una cum nfqueue, exempli gratia, cum cuniculum iam figuratum est et FOU in portum desideratum auscultat, fasciculum ex eodem portu mittere solito more non poteris - occupatus est, sed Potes accipere et mittere fasciculum passim generatum directe ad retis interfaciei utens nervum rudis, quamvis generans talem fasciculum paulo plus tinkerius requiret. Hoc modo creantur authenticae facis in ipipou.
Cum ipipou processibus tantum primae fasciculi e connexione (et ea quae in queue ante nexum firmata sunt emanare curaverunt), effectus fere non patitur.
Cum primum servo ipipou fasciculum authenticum accipit, cuniculum creatur et omnes fasciculi subsequentes in connexione iam a nucleo nfqueue praetereunte discesserunt. Si nexus deficiat, prima fasciculus sequentis ad queue mittetur, secundum uncinos, si authenticas fasciculus non est, sed ab ultimo recordationis IP et clientis portus, potest vel transiri. in vel abdicavit. Si fasciculus authenticus ex novo IP et portu venit, cuniculum illis uti configuratur.
Solet IPIP-super-FOU unum problematum cum NAT - fieri non potest duos IPIP cuniculos in UDP eodem IP inclusos creare, propterea quod moduli FOU et IPIP inter se dissident. Illae. par clientium post eandem IP publici non poterit simul cum eodem servo coniungere hoc modo. In futuro, nequicquamad nucleum libramentum solvendum, sed hoc certum non est. Interim NAT problemata solvi possunt per NAT - si contingat ut par IP oratio iam ab alio cuniculo occupata, ipipou faciet NAT e publico ad aliud IP privatum, voila! — cuniculos creare potes donec portus excurrat.
Quod Non omnes fasciculi in nexu signati sunt, tunc simplex haec protectio MITM vulnerabilis est, ergo si sceleratus est in via inter clientem et servitorem latentem, qui negotiationem audire potest eamque mutare, per fasciculos authenticas redigere potest. alia electronica et cuniculum ab infido exercitu creo .
Si quis ideas habet quomodo hoc figat, relicto mole negocii in nucleo, loqui non dubitas.
Obiter encapsulation in UDP optime se probavit. Comparatus ad encapsulationi super IP, multo stabilior est et saepe velocior, non obstante additamento capitis capitis UDP capitis. Hoc accidit ex eo quod maxime exercituum in Interreti bene operantur solum cum tribus protocollis popularibus: TCP, UDP, ICMP. Pars tangibilis potest totaliter omnia alia deponere vel tardius procedere, quia solum his tribus optimized est.
Exempli gratia, hoc est, quare ORIGINAL, qua HTTP/3 innititur, super UDP creatus sit, non super IP.
Bene, satis verbis, tempus est videre quomodo in "reali mundo" operatur.
Proelium
Ad aemulandum realem mundi iperf3. Secundum gradum propinquitatis ad rem, hoc est proxime sicut in Minecraft aemulari realem mundum, sed nunc faciet.
Praesent in auctor odio:
referat pelagus channel
heros huius articuli ipipou
OpenVPN cum authenticas sed non encryption
OpenVPN in omni-inclusive modus
WireGuard sine PresharedKey, cum MTU=1440 (exemplum IPv4-tantum)
Technical notitia pro geeks Metrica sumuntur cum mandatis sequentibus.
in clientelam:
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", чтобы лишние пакеты не плодить и не портить производительность.