前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 端口转发

Linux 端口转发

作者头像
以谁为师
发布2019-05-28 23:09:11
20.8K1
发布2019-05-28 23:09:11
举报

Linux 端口转发

iptables 端口转发

代码语言:javascript
复制
iptables -t nat -A PREROUTING  -d 114.114.114.114 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 10.0.1.123:3389
iptables -t nat -A POSTROUTING -d 10.0.1.123 -p tcp -m tcp --dport 3389 -j SNAT --to-source 10.0.0.254
#外网接口地址114.114.114.114 内网接口地址10.0.0.254,内部服务器10.0.1.123转发端口3389

rinetd

编译安装

代码语言:javascript
复制
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar xzvf rinetd.tar.gz
cd rinetd
mkdir -p /usr/man/man8
make &&make install

配置文件 cat /etc/rinetd.conf

代码语言:javascript
复制
 0.0.0.0 9001 192.168.1.1 3306
 0.0.0.0 9002 192.168.1.2 80
#绑定的地址、绑定的端口、转发的地址 、转发的端口

启动rinetd服务

代码语言:javascript
复制
rinetd -c /etc/rinetd.conf

SSH

ssh转发命令

本地执行建立隧道,通过本机端口访问内部主机

代码语言:javascript
复制
ssh -N -L   0.0.0.0:888:192.168.10.1:55555   -p55555  root@192.168.10.1 -f
#外网ssh访问转发主机888端口就可以连接到内网192.168.10.1;
-L 本机端口,-f 后台启用,-N 不打开远程shell,

本地执行建立隧道,通过远端端口访问本机 vim /etc/ssh/sshd_config

代码语言:javascript
复制
GatewayPorts yes
#隧道监听0.0.0.0 ;默认127.0.0.1

service sshd restart

代码语言:javascript
复制
ps aux|grep -v awk |awk   '/qngfNTR/ {print $2}'|xargs kill -9
ssh  -qngfNTR 8022:localhost:22  root@attacker.club -p55555

ssh转发脚本 (数组)

代码语言:javascript
复制
#!/bin/bash
HOST=192.168.21.103
SSH_SERVER="dev@134.96.138.125 -p 24242"
declare -a T
declare -a D
T[0]="-L $HOST:33900:192.168.102.90:3389"
T[1]="-L $HOST:33910:192.168.102.93:3389"
function start()
{
pidwl=$(ps -ef|grep -v grep|grep "$SSH_SERVER"|wc -l)
if [ "X$pidwl" == "X0" ]; then
    nohup /usr/local/bin/sshpass -p 'password' ssh -o ServerAliveInterval=6 -2 -f -nNT ${T[*]} $SSH_SERVER &
    echo "start $SSH_SERVER"
fi
echo `date +%Y%m%d%H%M%S`
}
function stop()
{
    ps -ef|grep -v grep|egrep "ServerAliveInterval"|awk '{print $2}'|xargs kill -9
    echo "stop Transmit"
}
case "$1" in
    start)
    $1
    ;;
    stop)
    $1
    ;;
    restart)
    stop
    start
    ;;
esac

nginx (stream模块)

nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信。Module ngx_stream_core_module

cat vhost/port_forword.conf

代码语言:javascript
复制
stream {
    # 添加socket转发的代理
    upstream manager {
        hash $remote_addr consistent;
        # 转发的目的地址和端口
        server 10.0.10.10:3389 max_fails=3 fail_timeout=30s;
    }
    server {
    listen 9001;
    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass manager;
    }
}
# 通过nginx 9001端口可以访问内网Windows跳板机。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年2月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux 端口转发
  • iptables 端口转发
  • rinetd
  • SSH
    • ssh转发命令
      • ssh转发脚本 (数组)
      • nginx (stream模块)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档