Sonsuza kadar netcat ile proxy


16

Netcat ile bir VNC TCP sunucu portunu proxy olarak kullanıyorum. Proxy makinesi Linux çalıştırıyor.

Bu kullandığım kommandır:

mkfifo backpipe
nc -l 5902  0<backpipe | nc 10.1.1.116 5902 1>backpipe

10.1.1.116, orijinal VNC hizmeti bağlantı noktası 5902'de çalışan "uzak" bir makinedir. Bu komuttan sonra VNC hizmeti, diğer makineler için localhost üzerinde kullanılabilir.

Ancak her VNC oturumundan sonra netcat "proxy sunucusu" durur, netcat böyle çalışır.

Bir VNC oturumu sonlandırıldıktan sonra netcat'in "proxy hizmetini" çalışır durumda tutmasını nasıl sağlayabilirim?


Geçici bir çözüm olarak, netcat komut satırını sonsuz bir döngüye koyuyorum:

mkfifo backpipe
while true; do   nc -l 5902  0<backpipe | nc 10.1.1.116 5902 1>backpipe; done

Ancak hizmeti hiç kesintiye uğratmayan "resmi" bir netcat çözümünü tercih ederim.


"-" parametresi hakkında okudum ama bu duruma uygun olup olmadığından emin değilim ve henüz doğru bir şekilde uygulayamadım.


Ek açıklamalar:

Elbette bunu ssh tünellemesiyle farklı şekillerde yapabilirim, ancak VNC istemcisi için mümkün olduğunca duyarlı hale getirmek için şifreleme yükü olmayan bir çözüm istedim. Aksi takdirde farklı bir proxy çözümü sorun olmaz.

İstemci VNC olmalıdır, başka hiçbir protokol mümkün değildir.

Yanıtlar:


24

-kSeçenek hile yapmak gerekir.

Şu sayfanın kılavuzundan nc(1):

 -k      Forces nc to stay listening for another connection after its
         current connection is completed.  It is an error to use this
         option without the -l option.

netcat-traditionalDebian / Ubuntu paketinin olması gerektiği gibi dinlemeye devam etmediğini fark ettim . Bu durumda netcat-openbsdpaketi kullanın ve tekrar deneyin!

Alternatif olarak, socatproxy sunucu kullanımınız için daha fazla hedeflenen kullanın. El kitabından socatbazı değişiklikler yapılması gereken rastgele TCP iletici örneği .

   socat -d -d -lmlocal2 \
   TCP4-LISTEN:80,bind=myaddr1,reuseaddr,fork,su=nobody,range=10.0.0.0/8 \
   TCP4:www.domain.org:80,bind=myaddr2

          TCP  port  forwarder,  each  side  bound to another local IP
          address (bind). This example  handles  an  almost  arbitrary
          number  of parallel or consecutive connections by fork'ing a
          new process after each accept() . It provides a little secu‐
          rity by su'ing to user nobody after forking; it only permits
          connections from the private  10  network  (range);  due  to
          reuseaddr,   it   allows   immediate  restart  after  master
          process's termination, even if some child  sockets  are  not
          completely  shut down.  With -lmlocal2, socat logs to stderr
          until successfully reaching the accept loop. Further logging
          is directed to syslog with facility local2.

@AlojzJanez Evet, dürüst olmak gerekirse çok açık. Okuma sayfalarını alışkanlık haline getirin. :)
gertvdijk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.