keepalive 옵션을 사용하여 socat을 유지하는 방법


10

이 socat 명령이 제대로 실행 중이지만 데이터가 전송되지 않으면 정확히 5 분 후에 죽어 가고 처음 10 초 후에 10 초마다 100 개의 keepalive를 보내도록 설정 한 이유를 이해할 수 없습니다. . socat 매뉴얼 페이지를 이해 한 결과 16 분 동안 1000 년대 동안 살아 있어야합니다. 또한 keepcnt를 200으로 설정하려고하면 "setsockopt (7, 6, 6, {200}, 4) : Invalid argument"가 표시되지만 인터넷의 어느 곳에서도 해당 인수의 최대 값을 찾을 수 없으므로 나는 여기에 매우 명백한 것을 놓치고 있어야합니다. 인수를 더 실험해도 시간 초과 값이 5 백만으로 변경되지 않았습니다. 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 툴킷에서 사용하기 위해 OpenSSL Project에서 개발 한 소프트웨어가 포함되어 있습니다. (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] I 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] AF에 대한 N 개방 연결 = 2 192.168.0.5:9100
2017/05/31 08:53:01 socat [16065] 연결 루프를 시작합니다
2017/05/31 08:53:01 socat [16065] I 소켓 (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] FD를 가진 N 시작 데이터 전송 루프 [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] I 종료 (7, 2)
2017/05/31 08:58:02 socat [16065] N 상태 0으로 종료

활동 대신 특정 시간이 지나면 일부 NAT 라우터 연결이 끊어짐
Ferrybig

답변:


5

로부터 socat 맨 을위한 -t<timeout>:

한 채널이 EOF에 도달하면 다른 채널의 쓰기 부분이 종료됩니다.

ignoreeof옵션을 추가하십시오 .


0

사용중인 경우 같은 명령 LISTEN OPENSSL-LISTEN, TCP-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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.