linux rinetd、socat端口转发部署(很实用的网络工具)

linux rinetd、socat端口转发部署(很实用的网络工具)端口转发映射的程序叫 rinetd 下载地址 直接 manke 编译安装即可 6 root PortForward0 nbsp src nbsp wget nbsp http www boutell com r

端口转发映射的程序叫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



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221691.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午5:30
下一篇 2026年3月17日 下午5:30


相关推荐

  • J2SE框架

    J2SE框架尚学堂马老师主讲的 J2SE 分十个模块 每个模块所讲的主要内容见下图 nbsp nbsp nbsp nbsp nbsp 每一模块的重点内容都已明确 细节的知识还需要总结 学习首先要掌握整体框架 然后在消化细节 这是短时间内学习最快最有效的方法 学会学习真的不是一件简单的事情

    2026年3月16日
    2
  • 华为云:申请免费证书、部署HTTPS证书操作流程[通俗易懂]

    华为云:申请免费证书、部署HTTPS证书操作流程[通俗易懂]一、前提:(1)已经有华为云账号;(2)已经申请域名;(3)已经购买华为云弹性服务器;二、目的:(1)部署SSL证书之后能通过https地址访问服务;三、流程:1.申请免费证书:(注:官方证书操作链接:https://support.huaweicloud.com/usermanual-scm/scm_01_0132.html)(1)在搜索栏搜索“免…

    2026年4月15日
    3
  • mac idea大小写快捷键

    mac idea大小写快捷键Command Shift U 大小写切换

    2026年3月11日
    3
  • Oracle数据库学习的小结-1

    Oracle数据库学习的小结-1Oracle数据库监听配置 一、监听器(LISTENER)  监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。 二、本地服务名(Tnsname)  Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器

    2026年4月13日
    6
  • 腾讯元宝「双模」更新:最新DeepSeekV3+混元T1正式版,一次配齐

    腾讯元宝「双模」更新:最新DeepSeekV3+混元T1正式版,一次配齐

    2026年3月13日
    2
  • 卸载Docker CE

    卸载Docker CEnbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 卸载 DockerCE 前言针对上一篇博客中的 DockerCE 的安装 有可能在实际的生产环境中使用 Docker 不是最新的 Latest 而需要特定 TAG 这儿就需要以前的 DockerCE 所有的安装包卸载干净 才能再次进行安装 nbsp 卸载 Do

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号