udp replicator
1.0.0
トラフィックを 1 つ以上のエンドポイントに複製できる小さな UDP プロキシ。
単一の Netflow ストリームを取得して、それを複数のエンドポイントに送信する方法が必要でした。これは汎用の UDP レプリケーターであるため、ネットフロー、syslog などのあらゆるトラフィックに使用できます。
Zapier などの iptables を使用することもできますが、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
でリッスンする UDP サーバーを開始します。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 トム・セドン
マサチューセッツ工科大学