linux端口转发技术(单端口分发)

端口转发映射的程序叫rinetd,下载地址,直接manke编译安装即可。12345678910111213141516[root@PortForward02 src]# wget 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


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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125868.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • xray安全漏洞检测(高效能)

    xray安全漏洞检测(高效能)风险告知:请勿在未授权情况下,对网站进行安全扫描,存在很大的法律风险,详细请了解网络安全法。血的案例:”白帽黑客”找漏洞被抓引争议世纪佳缘否认”钓鱼”–传媒–人民网在正式运行xray生成配置文件config.yaml后,请优先修改配置项,确认扫描范围,再重新启动xray如不预先配置,默认扫描所有站点,存在非常大的法律风险,请知悉!!!xray是一款功能强大的安全评估工具,主要特性有:检测速度快。发包速度快;漏洞检测算法高效。 支持范围广。大至OWASPTo.

  • 自学java心路历程(学了半年。。。直到更久。。。。。)[通俗易懂]

    自学java心路历程(学了半年。。。直到更久。。。。。)[通俗易懂]自学背景环境:我是91年的。之前在小贷行业,混了快四年,经历过3家公司倒闭,在找工作发现没什么特技,太难。毕业都近4年了。但是我觉得必须要有所改变,要学。然后听了朋友的意见,不去培训学校自己自学。自学过程:自学的是java,18年三月份的时候因为大学学过2级C语言。java基础部分是在网上找到,大概都能看懂进去,一天看个7,8个小时都OK,但是比较少敲代码,主要学的是javase。java基…

  • Lena图像分解成小块与从小块合成

    Lena图像分解成小块与从小块合成 ➤01背景在2020年人工神经网络课程第一次作业第八题中需要对Lena图像使用AutoEncode网络进行压缩。将Lena(灰度图像)拆解成不同尺寸的大小形成训练压缩样本过程;或者从训练结果重新组合成Lena灰度图像是实验的基础。▲Lena灰度图像下面给出相关操作的Python程序和相关的结果。主要操作包括:将512×512的Lena灰度图片(0~255)分割成边长8~16的图像块,并通过行扫描形行向量;对图像进行归一化,形成数据在-0.5~0.5之

  • Java多线程系列–“JUC锁”09之 CountDownLatch原理和示例

    Java多线程系列–“JUC锁”09之 CountDownLatch原理和示例概要前面对"独占锁"和"共享锁"有了个大致的了解;本章,我们对CountDownLatch进行学习。和ReadWriteLock.ReadLock一样,Coun

  • plsql直接连接远程数据库_mysql切换数据库命令

    plsql直接连接远程数据库_mysql切换数据库命令前言每次安装Oracle以后,都会出现使用plsql连接不上的问题!多次重启电脑、重装系统的磨人经历之后,终于做出这么一篇文章,希望能帮助广大技术人员减少一些时间,顺利进行连接。注:也可以用plsql连接远程数据库(只要有oracle的network\admin\tnsnames.ora就行)。首先下载64位oracle以及32位轻量级客户端(注意版本的对应,我用的是11g的oracl……

  • 安卓短信转发qq邮箱

    安卓短信转发qq邮箱fork一个github项目简介准备工作Tips简介最近不怎么带手机,所以收不到一些验证码什么的,所以想搞一个app放手机上将短信以有邮件的形式发送到指定邮箱,然后用电脑查看邮件,这样就可以不用带手机了。在github上找到一个项目叫sms-backup-plus,于是准备在这个项目的基础上进行更改。准备工作安装androidStudio学习kotlin怎么整合java和k…

发表回复

您的电子邮箱地址不会被公开。

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