如何使用keepalive选项保持socat存活


10

我的socat命令运行正常,但是当没有数据传输时,它恰好在5分钟后就死了,我不明白为什么将它设置为在前10秒后每10秒发送100个keepalive 。据我对socat手册页的了解,这应该使它存活1000秒钟,即16分钟。另外,如果我尝试将keepcnt设置为200,则会收到“ setsockopt(7,6,6,{200},4):无效的参数”,但是在Internet上我找不到该参数的最大值是多少,所以我认为我必须在这里遗漏一些非常明显的东西。对参数进行更多的实验不会更改5000000的超时值。可以为keepcnt设置较低的值,为keepintvl设置较高的值,但是根本没有可见效果。

socat -d -d -d -v pty,link=/tmp/lp1 tcp:192.168.0.5:9100,reuseaddr,keepalive,keepidle=10,keepintvl=10,keepcnt=100
2017/05/31 08:53:01 socat [16065] I本产品包含由OpenSSL Project开发的,用于OpenSSL Toolkit的软件。(http://www.openssl.org/)
2017/05/31 08:53:01 socat [16065] I本产品包括Tim Hudson编写的软件(tjh@cryptsoft.com)
2017/05/31 08:53:01 socat [16065]我将选项“ symbolic-link”设置为“ / tmp / lp1”
2017/05/31 08:53:01 socat [16065]我openpty({5},{6},{“ / dev / pts / 1”} ,,)-> 0
2017/05/31 08:53:01 socat [16065] N PTY是/ dev / pts / 1
2017/05/31 08:53:01 socat [16065]我将选项“ so-keepalive”设置为1
2017/05/31 08:53:01 socat [16065]我将选项“ tcp-keepidle”设置为10
2017/05/31 08:53:01 socat [16065]我将选项“ tcp-keepintvl”设置为10
2017/05/31 08:53:01 socat [16065]我将选项“ tcp-keepcnt”设置为100
2017/05/31 08:53:01 socat [16065] N打开与AF = 2 192.168.0.5:9100的连接
2017/05/31 08:53:01 socat [16065]我开始连接循环
2017/05/31 08:53:01 socat [16065] I socket(2,1,6)-> 7
2017/05/31 08:53:01 socat [16065] N已成功从本地地址AF = 2 192.168.0.4:56482连接
2017/05/31 08:53:01 socat [16065]我解决并打开了所有袜子地址
2017/05/31 08:53:01 socat [16065] N使用FD [5,5]和[7,7]启动数据传输循环
2017/05/31 08:58:01 socat [16065] N插槽2(fd 7)位于EOF
2017/05/31 08:58:02 socat [16065]我轮询超时(0.500000秒内无数据)
2017/05/31 08:58:02 socat [16065]我关闭(5)
2017/05/31 08:58:02 socat [16065]我关机(7,2)
2017/05/31 08:58:02 socat [16065] N退出,状态为0

某些NAT路由器在特定时间后没有活动就断开连接
Ferrybig

Answers:



0

如果您使用的是LISTEN命令,例如OPENSSL-LISTENTCP-LISTEN等,该fork选项将断开与子进程的连接,以便socat可以继续接收。

例:

socat - OPENSSL-LISTEN:443,method=TLS1.2,verify=0,cert=cert.pem,key=key.pem,fork

感谢:https : //unix.stackexchange.com/a/283289/15954

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.