udp replicator
1.0.0
하나 이상의 엔드포인트에 트래픽을 복제할 수 있는 작은 UDP 프록시입니다.
우리는 단일 Netflow 스트림을 가져와 여러 엔드포인트로 보내는 방법이 필요했습니다. 이는 일반 UDP 복제기이므로 netflow, 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 톰 세든
MIT