د دې نیمې ستونزې د حل لپاره، افادیت پیدا شو ipipou. دا د ریموټ کوربه تصدیق کولو لپاره کور جوړ شوی میکانیزم پلي کوي ، پرته لدې چې د کرنل FOU عملیات ګډوډ کړي ، کوم چې به په ګړندۍ او مؤثره توګه د کرنل ځای کې پاکټونه پروسس کړي.
موږ ستاسو سکریپټ ته اړتیا نلرو!
ښه، که تاسو د مراجعینو عامه بندر او IP پیژنئ (د مثال په توګه، هرڅوک د هغې شاته هیڅ ځای نه ځي، NAT هڅه کوي د 1-in-1 بندرونو نقشه کړي)، تاسو کولی شئ د IPIP-over-FOU تونل جوړ کړئ. لاندې کمانډونه، پرته له کوم سکریپټ.
په سرور کې:
# Подгрузить модуль ядра 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
د پیرودونکي په اړه:
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
چې
ipipou* - د سیمه ایز تونل شبکې انٹرفیس نوم
203.0.113.1 - عامه IP سرور
198.51.100.2 - د پیرودونکي عامه IP
192.168.0.2 - د پیرودونکي IP eth0 انٹرفیس ته ټاکل شوی
eth0 - سیمه ایز انٹرفیس چې د آی پی پی تونل به تړلی وي
172.28.0.1 - د پیرودونکي تونل انٹرفیس IP (شخصي)
172.28.0.0 - د IP تونل سرور انٹرفیس (شخصي)
تر هغه چې د UDP اتصال ژوندی وي، تونل به په کاري ترتیب کې وي، مګر که دا مات شي، تاسو به خوشحاله وي - که د پیرودونکي IP: پورټ ورته پاتې شي - دا به ژوند وکړي، که دوی بدل شي - دا به مات شي.
د هرڅه شاته اړولو ترټولو اسانه لار د کرنل ماډلونو خلاصول دي: modprobe -r fou ipip
حتی که تصدیق ته اړتیا نه وي، د پیرودونکي عامه IP او پورټ تل نه پیژندل کیږي او ډیری وختونه غیر متوقع یا متغیر وي (د NAT ډول پورې اړه لري). که تاسو پریږدئ encap-dport د سرور اړخ کې ، تونل به کار ونکړي ، دا دومره هوښیار ندی چې د ریموټ اتصال بندر واخلي. په دې حالت کې، ipipou هم مرسته کولی شي، یا WireGuard او داسې نور کولی شي ستاسو سره مرسته وکړي.
په سرور کې (د عامه IP سره اړخ)، کله چې ipipou پیل شي، دا د nfqueue قطار هینډلر رامینځته کوي او د netfilter ترتیبوي ترڅو اړین پاکټونه ولیږل شي چیرې چې دوی باید وي: پاکټونه د nfqueue کتار سره اړیکه پیل کوي، او [تقریبا] پاتې ټول په مستقیم ډول اوریدونکي FOU ته ځي.
د هغو کسانو لپاره چې نه پوهیږي، nfqueue (یا NetfilterQueue) د شوقیانو لپاره یو ځانګړی شی دی چې نه پوهیږي چې څنګه د کرنل ماډلونه رامینځته کړي، کوم چې د netfilter (nftables/iptables) په کارولو سره تاسو ته اجازه درکوي د شبکې پاکټونه د کاروونکي ځای ته واستوئ او هلته یې پروسس کړئ. ابتدايي معنی په لاس کې: تعدیل (اختیاري) او دا بیرته داني ته ورکړئ، یا یې رد کړئ.
د ځینو پروګرامینګ ژبو لپاره د nfqueue سره کار کولو لپاره بندیزونه شتون لري، د باش لپاره هیڅ نه و (هې، حیرانتیا نه ده)، ما باید د python کارول: ipipou use د NetfilterQueue.
که فعالیت مهم نه وي، د دې شی په کارولو سره تاسو کولی شئ په نسبتا ټیټه کچه د پیکټو سره کار کولو لپاره په نسبتا چټکه او اسانۍ سره خپل منطق جوړ کړئ، د بیلګې په توګه، د تجربوي ډیټا لیږد پروتوکولونه جوړ کړئ، یا د غیر معیاري چلند سره محلي او لیرې خدمتونه ټرول کړئ.
خام ساکټونه د nfqueue سره لاس په لاس کار کوي، د بیلګې په توګه، کله چې تونل لا دمخه تنظیم شوی وي او FOU په مطلوب بندر کې اوریدل کیږي، تاسو به نشئ کولی په معمول ډول د ورته بندر څخه پیکټ ولیږئ - دا بوخت دی، مګر تاسو کولی شئ د خام ساکټ په کارولو سره په تصادفي ډول تولید شوي پاکټ مستقیم د شبکې انٹرفیس ته واستوئ ، که څه هم د داسې کڅوړې رامینځته کول به یو څه نور ټینکر کولو ته اړتیا ولري. دا څنګه په ipipou کې د تصدیق سره پاکټونه رامینځته کیږي.
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", чтобы лишние пакеты не плодить и не портить производительность.