端口转发映射的程序叫rinetd,下载地址,直接manke编译安装即可。

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

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

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

手动建目录/usr/man/

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

成功后会提示文件路径

install -m 700 rinetd /usr/sbin

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

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

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

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

yum 方式安装:

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

使用方式:

1
2
nohup socat tcp-l:外部访问端口,reuseaddr,fork tcp:192.168.xxx.xxx:内部转发端口
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,因此需使其在后台执行。

附:socat官方文档:http://www.dest-unreach.org/socat/doc/socat.html


linux rinetd、socat端口转发部署(很实用的网络工具)的更多相关文章

  1. 通过rinetd实现端口转发来访问内网的服务

    通过rinetd实现端口转发来访问内网的服务 一.   问题描述 通过外网来访问内网的服务 二.   环境要求 需要有一台能够外网访问的机器做端口映射,通过数据包转发来实现外部访问阿里云的内网服务 三 ...

  2. linux rinetd 端口转发部署

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向 Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具.Rinetd是单一过程的服务器,它 ...

  3. 【Linux】linux rinetd 端口转发部署

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向 Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具.Rinetd是单一过程的服务器,它 ...

  4. 【Linux】实现端口转发的rinetd

    Linux下端口转发一般都使用iptables来实现,使用iptables可以很容易将TCP和UDP端口从防火墙转发到内部主机上.但是如果需要将流量从专用地址转发到不在您当前网络上的机器上,可尝试另一 ...

  5. rinetd 一个linux下的端口转发工具

    inux下使用iptables实现端口转发,配置较为复杂,使用rinetd工具可以实现快速配置和修改端口转发. 例:本机ip:1.1.1.1 需要实现访问本机的8080端口,自动转发到2.2.2.2 ...

  6. CentOS下用rinetd做端口转发

    windows下的端口转发一般用的是自带的nat和porttunnel.portmap linux下端口转发映射的程序叫rinetd,启动方法rinetd -c /etc/rinetd.conf  , ...

  7. 通过rinetd实现端口转发,同时访问阿里云RDS的内外网

    配置方法如下: 1 wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz& ...

  8. linux centos6 NAT 端口转发

    有很多时候我们为了安全,需要将例如数据库服务器放到内网中.但是有些时候又系统给外网开一个端口,这时就可以利用外网的服务器进行一个端口转发.今天我们以centos6 为例进行端口转发配置. 首先vi / ...

  9. 〖Linux〗iptables端口转发(11.11.136.80:5552 <==> 10.10.136.1:8055/11.11.136.1:8055)

    环境: pc1: 10.10.72.1 (network: 10.10.72.0/22) pc2: 地址1: 10.10.136.1 (nework: 10.10.136.0/22) 地址2: 11. ...

随机推荐

  1. Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)

    Struts2的框架提供了现成的文件下载方式,大大简化了开发下载功能的便利性.网上的例子有很多,我把一些大家普遍比较关注的点,集中一下,给出一个整体方案. 一般我们照着书本或者网上的列子写出了一个De ...

  2. poj 1986 Distance Queries 带权lca 模版题

    Distance Queries   Description Farmer John's cows refused to run in his marathon since he chose a pa ...

  3. ubuntu 14.04 添加、删除用户,修改用户名称,修改主机名

    ubuntu添加用户 sudo adduser test ubuntu删除用户 sudo userdel test cd /home/ sudo rm -r test

  4. 《剑指offer》第三_一题(找出数组中重复的数字,可改变数组)

    // 面试题3(一):找出数组中重复的数字 // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了, // 也不知道每个数字重复了几次.请 ...

  5. 消息/事件, 同步/异步/协程, 并发/并行 协程与状态机 ——从python asyncio引发的集中学习

    我比较笨,只看用await asyncio.sleep(x)实现的例子,看再多,也还是不会. 已经在unity3d里用过coroutine了,也知道是“你执行一下,主动让出权限:我执行一下,主动让出权 ...

  6. Lua中模块初识

    定义了两个文件: Module.lua 和 main.lua 其中,模块的概念,使得Lua工程有了程序主入口的概念,其中main.lua就是用来充当程序主入口的. 工程截图如下: Module.lua ...

  7. Spring Boot入门第二天:一个基于Spring Boot的Web应用,使用了Spring Data JPA和Freemarker。

    原文链接 今天打算从数据库中取数据,并展示到视图中.不多说,先上图: 第一步:添加依赖.打开pom.xml文件,添加必要的依赖,完整代码如下: <?xml version="1.0&q ...

  8. 雷林鹏分享:C# 委托(Delegate)

    C# 委托(Delegate) C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 委托 ...

  9. JDK1.5 新特性

    1:自动装箱与拆箱 自动装箱:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue ...

  10. Android设置全局Context

    新建一个java继承Application类 import android.app.Application; import android.content.Context; /** * 编写自定义Ap ...