وكيل UDP صغير يمكنه تكرار حركة المرور إلى نقطة نهاية واحدة أو أكثر.
كنا بحاجة إلى طريقة لأخذ تدفق شبكة واحد وإرساله إلى نقاط نهاية متعددة. نظرًا لأن هذا عبارة عن نسخة متماثلة عامة لـ UDP، فيمكن استخدامه لأي حركة مرور مثل netflow أو syslog وما إلى ذلك.
يمكنك استخدام iptables، مثل Zapier، لكننا أردنا شيئًا يمكننا نشره بسهولة في مجموعة kubernetes الخاصة بنا. يوجد أيضًا عدد من وكلاء UDP الحاليين، لكن لا يدعم أي منها الوكلاء الشائعون النسخ المتماثل. يوجد أيضًا عدد صغير من النسخ المتماثلة، ولكن يبدو أن معظمها عبارة عن مشاريع ألعاب لم تتم صيانتها/لم يتم اختبارها مع القليل من الوثائق.
./replicator --listen-port=9500 --forward=192.0.2.1 --forward=198.51.100.5:9100
time="2019-09-23T14:29:50+01:00" level=info msg="Server started" ip=0.0.0.0 port=9500
time="2019-09-23T14:29:50+01:00" level=info msg="Forwarding target configured" addr="192.0.2.1:9500" num=1 total=2
time="2019-09-23T14:29:50+01:00" level=info msg="Forwarding target configured" addr="198.51.100.5:9100" num=2 total=2
الأمر أعلاه سوف:
0.0.0.0
(الافتراضي) 9500
192.0.2.1:9500
(يستخدم listen-port
لمنفذ الوجهة كما لم يتم تحديده في التكوين)198.51.100.5:9100
سيبدأ الخادم بالاستماع على 0.0.0.0:9500
، وسيتم نسخ أي حزمة يتلقاها وإرسالها إلى كل من 192.0.2.1:9500
و 198.51.100.5:9100
docker run -e FORWARDS=$'192.0.2.1n198.51.100.5:9100' thomseddon/udp-replicator:1
version: '3'
services:
udp-replicator:
run: thomseddon/udp-replicator:1
environment:
DEBUG: "true"
FORWARD: "192.0.2.1n198.51.100.5:9100"
usage: replicator [<flags>]
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
--debug Enable debug mode
--listen-ip=0.0.0.0 IP to listen in
--listen-port=9000 Port to listen on
--body-size=4096 Size of body to read
--forward=ip:port ... ip:port to forward traffic to (port defaults to listen-port)
يمكن تمرير كافة معلمات التكوين كوسيطات كما هو موضح أعلاه، أو كمتغيرات بيئة (كما هو موضح في الاستخدام أعلاه) - حيث تكون متغيرات البيئة بأحرف كبيرة على شكل ثعبان، على سبيل المثال LISTEN_IP
2019 توم سيدون
معهد ماساتشوستس للتكنولوجيا