网硕互联技术交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2660|回复: 0

如何端口转发

[复制链接]

主题

帖子

0

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
0
发表于 2017-10-30 10:54:46 | 显示全部楼层 |阅读模式
1. windows平台上的转发神器TCPMapping
可以实现跨网段、同网段的端口转发。例如本机IP为192.168.150.8,访问本机的27018端口会访问到192.168.4.16的27017端口,前提条件是192.168.150.8与
192.168.4.16互通。

WX20171030-105428.png

2.Linux平台 rinetd
linux上的rinetd,实现端口映射、转发、重定向,简单又好用

下载rinetd.tar.gz,解压、安装

  1. [root@PortForward02 src]# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
  2. [root@PortForward02 src]# ls
  3. rinetd.tar.gz
  4. [root@PortForward02 src]# tar -zxvf rinetd.tar.gz
  5. [root@PortForward02 src]# cd rinetd
  6. [root@PortForward02 rinetd]# make
  7. cc -DLINUX -g   -c -o rinetd.o rinetd.c
  8. rinetd.c:176: warning: conflicting types for built-in function ‘log’
  9. cc -DLINUX -g   -c -o match.o match.c
  10. gcc rinetd.o match.o -o rinetd
  11. [root@PortForward02 rinetd]# make install
  12. install -m 700 rinetd /usr/sbin
  13. install -m 644 rinetd.8 /usr/man/man8
  14. install: cannot create regular file `/usr/man/man8': No such file or directory
  15. make: *** [install] Error 1
  16. [root@PortForward02 rinetd]#
复制代码

运行make可能会出现错误,需如下修改,将rinetd.c文件中bindPort >= 65536和connectPort >= 65536修改为65535,不然在make的时候会提示超出系统最大定义端口,按n可以查找下一处,如果没有出错,请跳过此步骤

  1. [root@PortForward02 rinetd]# vim rinetd.c
  2. 544                         if ((bindPort == 0) || (bindPort >= 65535)) {
  3.   567                         if ((connectPort == 0) || (connectPort >= 65535)) {
  4. 或者
  5. [root@localhost rinetd]# sed -i "s/35536/35535/g" rinetd.c
复制代码


手动建目录/usr/man/

  1. [root@PortForward02 rinetd]# mkdir -p /usr/man/
  2. [root@PortForward02 rinetd]# make clean
  3. [root@localhost rinetd]# make
  4. cc -DLINUX -g   -c -o rinetd.o rinetd.c
  5. rinetd.c:176: warning: conflicting types for built-in function ‘log’
  6. cc -DLINUX -g   -c -o match.o match.c
  7. gcc rinetd.o match.o -o rinetd
  8. [root@localhost rinetd]# make install
  9. install -m 700 rinetd /usr/sbin
  10. install -m 644 rinetd.8 /usr/man/man8
  11. [root@localhost rinetd]#
复制代码


成功后会提示文件路径

  1. install -m 700 rinetd /usr/sbin
  2. install -m 644 rinetd.8 /usr/man/man8
复制代码


程序路径/usr/sbin/rinetd
建立配置文件/etc/rinetd.conf,内容格式:源IP 源端口 要跳转的IP 要跳转的端口;在每一单独的行中指定每个要转发的端口。源地址和目的地址都可以是主机名或IP 地址,IP 地址0.0.0.0 将rinetd 绑定到任何可用的本地IP地址上:
例如将所有发往本机80端口的请求转发到192.168.4.247的80端口

  1. [root@localhost rinetd]# vim /etc/rinetd.conf
  2. allow 10.15.44.162                //设置允许访问的ip地址信息
  3. # allow 0.0.0.0
  4. #allow 10.15.44.*
  5. #deny 10.15.44.144
  6. 0.0.0.0 8090 10.15.44.133 80      //设置端口转发
  7. logfile /var/log/rinetd.log        //设置打印的log
复制代码

启动程序并将rinetd加入开机启动

  1. [root@PortForward02 rinetd]# /usr/sbin/rinetd
  2. 或者
  3. [root@localhost rinetd]# rinetd -c /etc/rinetd.conf
  4. [root@localhost rinetd]# netstat -antulp|grep -i rinetd
  5. tcp        0      0 0.0.0.0:8090                0.0.0.0:*                   LISTEN      5849/rinetd         
  6. [root@localhost rinetd]# killall -9 rinetd  或者pkill -9 rinetd
  7. [root@localhost rinetd]# netstat -antulp|grep -i rinetd
  8. [root@localhost rinetd]# rinetd
  9. [root@localhost rinetd]# netstat -antulp|grep -i rinetd
  10. tcp        0      0 0.0.0.0:8090                0.0.0.0:*                   LISTEN      5861/rinetd               
  11. [root@PortForward02 rinetd]# cat /etc/rc.d/rc.local |grep -v "#"
  12. /usr/sbin/rinetd -c /etc/rinetd.conf
  13. touch /var/lock/subsys/local
  14. [root@PortForward02 rinetd]#
复制代码


这样的话只要在任意浏览器访问:http://10.15.44.125:8090(rinetd服务器地址)就和访问http://10.15.44.133同样的效果。但是这个只能在10.15.44.162机器上实现,其他机器就不行,如果
注意事项

1. rinetd.conf中绑定的本机端口必须没有被其它程序占用
2. 运行rinetd的系统防火墙应该打开绑定的本机端口

  1. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
复制代码
3.不支持FTP的跳

3.Socat端口转发
socat作用是在两个流之间建立双向的通道,且支持众多协议和链接方式:ip,tcp,udp,ipv6,pipe,exec,system,open,proxy,openssl,socket等
yum 方式安装:

  1. wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
  2. yum makecache
  3. yum install socat
复制代码


使用方式:
  1. nohup socat tcp-l:外部访问端口,reuseaddr,fork tcp:192.168.xxx.xxx:内部转发端口
  2. nohup  socat TCP4-LISTEN:188,reuseaddr,fork TCP4:192.168.1.22:123 &
复制代码

在本地监听188端口,并将请求转发至192.168.1.22的123端口
TCP4-LISTEN:在本地建立的是一个TCP ipv4协议的监听端口;
reuseaddr:绑定本地一个端口;
fork:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听
socat启动监听模式会在前端占用一个shell,因此需使其在后台执行。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|网硕互联技术交流社区

GMT+8, 2024-4-26 18:26 , Processed in 0.223111 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表