我有一个ELK堆栈。 在两个Logstash主机之前,我设置了两个NGINX负载均衡器作为透明代理。 UDPstream量正在发挥作用。 TCP与configuration一起工作:
stream { upstream syslog { server sapvmlogstash01.sa.projectplace.com:514; server sapvmlogstash02.sa.projectplace.com:514; } server { listen 514; proxy_pass syslog; } }
但是我得到的是source_ip和source_host,而不是input服务器的IP。
设置相同的joinproxy_bind $remote_addr transparent;
不起作用,抛出超时。
*1 upstream timed out (110: Connection timed out) while connecting to upstream, client: $SOURCEHOST_IP, server: 0.0.0.0:514, upstream: "$LOGSTASH_IP:514", bytes from/to client:0/0, bytes from/to upstream:0/0
我尝试从这里设置TPROXY: https ://www.nginx.com/blog/ip-transparency-direct-server-return-nginx-plus-transparent-proxy/
Logstash主机:
route add default gw $NGINX_IP route del default gw $DEFAULT_GW
NGINX主机:
# Following nginx how-to iptables -t mangle -N DIVERT iptables -t mangle -A PREROUTING -p udp -m socket -j DIVERT iptables -t mangle -A DIVERT -j MARK --set-xmark 0x1/0xffffffff iptables -t mangle -A DIVERT -j ACCEPT iptables -t mangle -A PREROUTING -p tcp -s $LOGSTASH_IP/24 --sport 514 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 0 ip rule add fwmark 1 lookup 100 ip route add local 0.0.0.0/0 dev lo table 100 # Enabling Upstream Servers to Reach External Servers sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
但是在超时之前仍然像以前一样失败。
什么是缺less一个透明的TCP主机?