Почему переадресация портов NetCat может получить одноразовое соединение? - PullRequest
0 голосов
/ 26 июня 2019
  1. У меня один http-сервер с открытым портом 8000, как у следующего:

    orange@orange:~$ python -m SimpleHTTPServer
    Serving HTTP on 0.0.0.0 port 8000 ...
    
  2. Как известно всем, есть несколько версий netcat, но по некоторым причинамЯ могу просто использовать следующие версии:

    root@orange:~# busybox nc
    BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.2) multi-call binary.
    
    Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]
    
    Open a pipe to IP:PORT or FILE
    
    -l      Listen mode, for inbound connects
            (use -ll with -e for persistent server)
    -p PORT Local port
    -w SEC  Connect timeout
    -i SEC  Delay interval for lines sent
    -f FILE Use file (ala /dev/ttyS0) instead of network
    -e PROG Run PROG after connect
    

    Это означает, что должны использоваться только вышеприведенные параметры.

  3. Я сделал следующее:

    root@orange:~# rm -f /tmp/backpipe && mkfifo /tmp/backpipe && cat /tmp/backpipe | busybox nc 127.0.0.1 8000 | busybox nc -l -p 80 > /tmp/backpipe
    

    Цель: когда пользователь посещает http://127.0.0.1:80, он автоматически переходит к http://127.0.0.1:8000, поэтому пользователю возвращается содержимое python simplehttpserver.

  4. Наконец, я запускаю тестclient:

    orange@orange:~$ wget http://127.0.0.1
    --2019-06-26 22:47:25--  http://127.0.0.1/
    Connecting to 127.0.0.1:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1378 (1.3K) [text/html]
    Saving to: ‘index.html’
    
    index.html                              100% 
    [==============================================>]   1.35K  --.-KB/s    in 0s
    2019-06-26 22:47:25 (505 MB/s) - ‘index.html’ saved [1378/1378]
    
  5. Прежде всего, все в порядке, но, вернувшись к команде переадресации порта, я обнаружил, что это был выход, поэтому он не получает второй раз при подключении.

Итак, мой вопрос, с вышеупомянутым busybox netcat, как я могу сделать так, чтобы команда перенаправления портов не выходила после первого соединения.

ПРИМЕЧАНИЕ: я не хочу, чтобы решение с for-loop, я просто хочу найти способ сделать переадресацию порта с помощью вышеупомянутого netcat, тем временем он продолжит обслуживать после первого соединения.

...