• 端口转发(iptables,nginx,rinetd)


    端口转发实验

    • rinetd
    • iptables
    • nginx
    • ssh隧道

    一,rinetd转发实验

    服务器内网ip为192.168.195.128,10.1.41.111

    客户端ip 10.1.41.3 

    远程服务端为 192.168.195.132

    通过端口转发,实现访问服务器的10.1.41.111 的63497端口,然后转发到192.168.195.132的3389端口,实现远程桌面的登录

    操作如下:

    1. yum install gcc gcc-c++ -y
    2. wget https://github.com/nineaiyu/rinetd/archive/refs/tags/v1.0.tar.gz
    3. tar -xvf v1.0.tar.gz && cd rinetd-1.0 && mkdir /usr/man/man8 -pv && make && make install

    编辑配置文件

    1. vim /etc/rinetd.conf
    2. 10.1.41.111 63497 192.168.195.132 3389

    启动程序

    rinetd -c /etc/rinetd.conf

    远程连接测试

    写成服务如下

    1. #!/bin/bash
    2. # chkconfig: 2345 88 12
    3. # description: rinetd
    4. RINETD=/usr/sbin/rinetd
    5. RINETDCONF=/etc/rinetd.conf
    6. PID=`ps aux | grep rinetd | grep -v "grep" | awk -F" " '/\/sbin\/rinetd/{print $2}'`
    7. if [ -e $RINETDCONF ]; then
    8.         echo "ok" &> /dev/null
    9. else
    10.         echo "Configuration file not found"
    11.         exit 1
    12. fi
    13. case "$1" in
    14.         start)
    15.                 echo -n "Starting rinetd..."
    16.                 $RINETD -c $RINETDCONF &>/dev/null
    17.                 echo " done."
    18.                 ;;
    19.         stop)
    20.                 echo -n "Stopping rinetd..."
    21.                 kill -9 $PID &>/dev/null
    22.                 echo " done."
    23.         ;;
    24.         restart)
    25.                 $0 stop
    26.                 sleep 1
    27.                 $0 start
    28.                 ;;
    29.         *)
    30.                 echo "Usage: $0 start|stop|restart"
    31.                 ;;
    32.         esac
    33. exit 0

    授执行权限并加入开机启动

    1. chmod a+x /etc/init.d/rinetd 
    2. chkconfig --add rinetd
    3. chkconfig rinetd on

    二,iptables转发实验

    在 转发服务器配置如下

    echo 1 > /proc/sys/net/ipv4/ip_forward #临时开启
    1. iptables -t nat  -A PREROUTING -d 10.1.41.131/32 -p tcp -m tcp --dport 40080 -j DNAT --to-destination 192.168.153.130:80
    2. iptables -t nat -A POSTROUTING -d 192.168.153.130/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.153.128

    三,nginx stream 转发

    编辑NGINX配置文件,默认配置为/etc/nginx/nginx.conf

    vim /etc/nginx/nginx.conf
    1. http{
    2. ....
    3. }
    4. stream {
    5. upstream web1ssh {
    6. hash $remote_addr consistent;
    7. server 10.42.1.200:65534 weight=5 max_fails=3 fail_timeout=30s;
    8. }
    9. server {
    10. listen 36325;
    11. proxy_pass web1ssh ;
    12. }
    13. }

    启动NGINX,即可将远端的端口转发到server监听的端口 

    四,SSH隧道

    SSH转发对于传输使用未加密协议,访问地理限制内容或绕过中间防火墙的服务的网络数据非常有用。 基本上,您可以转发任何TCP端口并通过安全的SSH连接隧道传输流量。

    SSH 端口转发有三种类型:

            本地端口转发。 - 将连接从客户端主机转发到 SSH 服务器主机,然后转发到目标主机端口。

            远程端口转发。 - 将端口从服务器主机转发到客户端主机,然后转发到目标主机端口。

            动态端口转发。 - 创建 SOCKS 代理服务器,允许跨一系列端口进行通信。

    本地端口转发

    语法: ssh -L [local_bind_addr:]local_port:remote:remote_port middle_host
    1. ssh  -L 127.0.0.1:26379:127.0.0.1:6379 root@47.175.68.30 -p22299 -N  -f -i ./siyao
    2. # 意思就是 把远端的 127.0.0.1:6379  映射到本地的 127.0.0.1:26379 端口 
    3. # -f 就是放后台运行
    4. # -i 指定私钥
    1. 其中"-L"选项表示本地端口转发,监听本地端口 ,其工作方式为:在本地指定一个由ssh监听的转发端口(26379),
    2. 将远程主机的端口(127.0.0.1:6379 )映射为本地端口(26379),当有主机连接本地映射端口(26379)时,本地ssh就将此端口的数据包转发给中间主机(或者远端主机)

    远端端口转发

    语法: ssh -R [bind_addr:]remote1_port:host:port remote1

    参考博客:SSH隧道:端口转发功能详解 - 骏马金龙 - 博客园

  • 相关阅读:
    vue3+ts+vite数据大屏自适应总结(两种方法)
    就业 | 面试签约问题
    认识 LLVM
    扩展边界opencv
    【重学C++】04 | 说透C++右值引用、移动语义、完美转发(上)
    python做小游戏之一小迷宫游戏
    Contact us
    x64内核实验2-段机制的变化
    移动开发如何用好热更新?说说其中的技术原理
    冒泡排序详解
  • 原文地址:https://blog.csdn.net/ly1358152944/article/details/126436052