• 端口转发(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隧道:端口转发功能详解 - 骏马金龙 - 博客园

  • 相关阅读:
    【MyBatis Plus】初识 MyBatis Plus,在 Spring Boot 项目中集成 MyBatis Plus,理解常用注解以及常见配置
    Android10 状态栏蓝牙电量图标
    unittest 数据驱动DDT应用
    时空智友企业流程化管控系统文件存在任意文件上传漏洞 附POC
    2023大数据挑战赛全国六强团队获奖经验+ppt分享(二)
    「Verilog学习笔记」含有无关项的序列检测
    Vue2.x秘籍(上)
    flutter dio^5.3.3实现刷新token
    Apache APISIX 集成 Elasticsearch 实现实时日志监控
    Java 并发高频面试题:聊聊你对 AQS 的理解?
  • 原文地址:https://blog.csdn.net/ly1358152944/article/details/126436052