我想将 GELF(Graylog 扩展日志格式)日志消息从 logstash 实例发送到 Graylog。但由于 logstash 中的 GELF 输出不支持 TLS,因此我想使用 stunnel 来加密通信。
我设置了一个测试环境,它由两个 stunnel、一个客户端、一个服务器和一个模拟接收端(最终是 Graylog)的 netcat 组成。但是,当我配置好一切并通过 stunnel 发送消息时,第一个数据包丢失了。我使用 tshark 捕获了流量,可以看到数据从源发送到 stunnel,但 stunnel 只是用 RST 响应,数据包无处可寻,但第二个数据包传输正常。
我曾尝试将 stunnel 客户端连接到 stunnel 服务器、graylog、HAProxy,但总是出现数据包丢失。
Stunnel 客户端
verify = 0
chroot = /usr/local/var/run/stunnel/
pid = /stunnel.pid
setuid = nobody
setgid = nobody
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7
output = stunnel.log
client = yes
[test]
accept = 3333
connect = <server>:7777
隧道服务器
cert = /etc/stunnel/stunnel.pem
verify = 0
chroot = /usr/local/var/run/stunnel/
pid = /stunnel.pid
setuid = nobody
setgid = nobody
[test]
accept = 7777
connect = 4445
logstash 配置
input {
syslog {
port => 10514
}
}
output {
gelf {
host => "localhost"
port => 3333
protocol => TCP
}
}
我使用以下方法测试所有功能:
loggen --rate 1 --interval 1 localhost 10514
编辑
通讯的Tshark:
No. Time Source Destination Protocol Length Info
1 0.000000000 127.0.0.1 127.0.0.1 TCP 883 47016 → 3333 [PSH, ACK] Seq=1 Ack=1 Win=342 Len=815 TSval=193491 TSecr=160751
No. Time Source Destination Protocol Length Info
2 0.000028908 127.0.0.1 127.0.0.1 TCP 56 3333 → 47016 [RST] Seq=1 Win=0 Len=0
No. Time Source Destination Protocol Length Info
3 1.019395050 127.0.0.1 127.0.0.1 TCP 76 47040 → 3333 [SYN] Seq=0 Win=43690 Len=0 MSS=65495 SACK_PERM=1 TSval=194510 TSecr=0 WS=128
No. Time Source Destination Protocol Length Info
4 -1525790179.613104197 127.0.0.1 127.0.0.1 TCP 76 3333 → 47040 [SYN, ACK] Seq=0 Ack=1 Win=43690 Len=0 MSS=65495 SACK_PERM=1 TSval=194510 TSecr=194510 WS=128
No. Time Source Destination Protocol Length Info
5 1.019427365 127.0.0.1 127.0.0.1 TCP 68 47040 → 3333 [ACK] Seq=1 Ack=1 Win=43776 Len=0 TSval=194510 TSecr=194510
No. Time Source Destination Protocol Length Info
6 1.019725293 127.0.0.1 127.0.0.1 TCP 883 47040 → 3333 [PSH, ACK] Seq=1 Ack=1 Win=43776 Len=815 TSval=194510 TSecr=194510
No. Time Source Destination Protocol Length Info
7 1.019733354 127.0.0.1 127.0.0.1 TCP 68 3333 → 47040 [ACK] Seq=1 Ack=816 Win=45440 Len=0 TSval=194510 TSecr=194510
[
谢谢!