为什么netcat端口转发只能接收一次连接?

时间:2019-06-26 14:53:27

标签: bash netcat

  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. 最后,我启动测试客户端:

    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进行端口转发的方法,同时它将在首次连接后继续使用。

0 个答案:

没有答案