Cara menjaga socat tetap hidup menggunakan opsi keepalive


10

Saya memiliki perintah socat ini yang berjalan dengan baik, tetapi ketika tidak ada data yang ditransfer, ia mati setelah tepat 5 menit dan saya tidak mengerti mengapa karena saya telah mengaturnya untuk mengirim 100 keepalive setiap 10 detik setelah 10 detik pertama . Dari apa yang saya pahami dari halaman manual socat, itu harus tetap hidup selama 1000-an yaitu 16 menit. Juga, jika saya mencoba untuk menetapkan keepcnt menjadi 200, saya mendapatkan "setsockopt (7, 6, 6, {200}, 4): Argumen tidak valid" tetapi di internet saya tidak dapat menemukan apa nilai maksimum untuk argumen itu jadi saya pikir Saya pasti kehilangan sesuatu yang sangat jelas di sini. Bereksperimen lebih banyak dengan argumen tidak pernah mengubah nilai batas waktu 5jt. Pengaturan nilai yang lebih rendah untuk keepcnt dan nilai yang lebih tinggi dari keepintvl diterima tetapi tidak memiliki efek yang terlihat.

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 Produk ini termasuk perangkat lunak yang dikembangkan oleh Proyek OpenSSL untuk digunakan dalam OpenSSL Toolkit. (http://www.openssl.org/)
2017/05/31 08:53:01 socat [16065] I Produk ini termasuk perangkat lunak yang ditulis oleh Tim Hudson (tjh@cryptsoft.com)
2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "symbolic-link" ke "/ tmp / lp1"
2017/05/31 08:53:01 socat [16065] Saya openpty ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0
2017/05/31 08:53:01 socat [16065] N PTY ​​adalah / dev / pts / 1
2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "so-keepalive" ke 1
2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "tcp-keepidle" ke 10
2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "tcp-keepintvl" ke 10
2017/05/31 08:53:01 socat [16065] Saya mengatur opsi "tcp-keepcnt" ke 100
2017/05/31 08:53:01 socat [16065] N membuka koneksi ke AF = 2 192.168.0.5:9100
2017/05/31 08:53:01 socat [16065] Saya mulai menghubungkan loop
2017/05/31 08:53:01 socat [16065] I socket (2, 1, 6) -> 7
2017/05/31 08:53:01 socat [16065] N berhasil terhubung dari alamat lokal AF = 2 192.168.0.4:56482
2017/05/31 08:53:01 socat [16065] Saya menyelesaikan dan membuka semua alamat kaus kaki
2017/05/31 08:53:01 socat [16065] N memulai loop transfer data dengan FD [5,5] dan [7,7]
2017/05/31 08:58:01 socat [16065] N socket 2 (fd 7) ada di EOF
2017/05/31 08:58:02 socat [16065] Jajak pendapat saya habis waktu (tidak ada data dalam 0,500000 detik)
2017/05/31 08:58:02 socat [16065] Saya tutup (5)
2017/05/31 08:58:02 socat [16065] I shutdown (7, 2)
2017/05/31 08:58:02 socat [16065] N keluar dengan status 0

Beberapa router NAT terputus setelah waktu tertentu alih-alih aktivitas
Ferrybig

Jawaban:


5

Dari halaman socat untuk -t<timeout>:

Ketika satu saluran telah mencapai EOF, bagian tulis dari saluran lainnya dimatikan.

Coba tambahkan ignoreeofopsi.


0

Jika Anda menggunakan perintah LISTEN seperti OPENSSL-LISTEN,, TCP-LISTENdll., forkOpsi akan memutus koneksi ke proses anak sehingga socat dapat terus menerima.

Contoh:

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

Terima kasih kepada: /unix//a/283289/15954

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.