`
boisterous
  • 浏览: 62650 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类

Linux下的UDP/TCP端口映射(netcat and socat)

阅读更多
说起来有点土,事到如今才第一次用socat.
不过今天看了一眼,netcat(nc)这东西ms已经N年没有人维护了.最先有个叫nc110的东西,由于太普及, 以至于人们都不想再去改动它的功能.结果导致多年来没有任何进步…现任的RHEL5里面好像也是由nc110改出来的.另外分支出来一个netcat,这个在google上直接netcat最容易出来,但也好多年没有人动过了…由于这些情况,才使得socat应运而生.虽然它已经生了好多年了,不过我才认识…
用socat试几个netcat常用的用法,对比如下:
1. 听tcp 12345端口
# nc -l 127.0.0.1 12345
# socat tcp-listen:12345 -
2. 向远处tcp 12345端口发点字
# echo “test” | nc 127.0.0.1 12345
# echo “test” | socat - tcp-connect:127.0.0.1:12345
3. 听udp 23456端口
# nc -u -l 127.0.0.1 23456
# socat udp-listen:23456 -
4. 向远处udp 23456端口发点字
# echo “test” | nc -u 127.0.0.1 23456
# echo “test” | socat - udp-connect:127.0.0.1:23456
5. 听unix socket /tmp/unix.socket
# nc -U -l /tmp/unix.socket
netcat没有-U选项
# socat unix-listen:/tmp/unix.socket -
6. 向本地unix socket /tmp/unix.socket发点字
# echo “test” | nc -U /tmp/unix.socket
netcat没有-U选项
# echo “test” | socat - unix-connect:/tmp/unix.sock
7. 听本地unix datagram socket /tmp/unix.dg.sock
nc110搞不定,netcat也搞不定
# socat unix-recvfrom:/tmp/unix.dg.sock -
8. 向本地unix datagram socket /dev/log发点字
nc110搞不定,netcat也搞不定
# echo “test” | socat - unix-sendto:/tmp/unix.dg.sock



----------第二篇放一起了-------
linux下实现UDP端口映射
原文链接: http://www.hiadmin.com/?tag=socat

一、实际问题
snmp监听端口默认为UPD 161,当监控服务器无法直接访问时,就需要用到端口映射来解决!
同样问题还有dns服务器的UPD 53端口。
二、使用nc来映射UPD端口
假设被监控服务器的IP为192.168.1.1;用于端口映射的主机为某个公网IP如59.1.1.1;需要映射的端口为UDP 161转发端口设为1161(自定义建议1024以上端口)
在端口映射服务器上操作,要安装nc,一般系统都会安装;
【注:nc存在安全漏洞,一定要设定防火墙】
首先使用mkfifo建立管道文件
#mkfifo /tmp/snmpfifo
通过nc建立端口映射 -l为监听模式 -u为UDP -p为本地端口;将内网监控161端口映射到本地的1161端口上;
#nc -l -u -p 1161 < /tmp/snmpfifo | nc -u 192.168.1.1 161 > /tmp/snmpfifo
查看netstat 1161是否监听
#netstat -nlp |grep :1161
udp     0      0 0.0.0.0:1161       0.0.0.0:*          31472/nc

在监控服务器上进行测试是否能采集到数据:
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
....
#snmpwalk -c public -v2c 59.1.1.1:1161 if

设定成功;这里存在一个问题就是nc监听的端口每次一连接就会挂起,采取一个比较笨的办法就是写个restart.sh脚本放在crontab中每分钟执行一次;
产生该问题的主要原因我在下面讲socat的时候会分析的;
针对snmp采集这样是没有问题,如果dns服务就不行啦!
三、采用nc升级版本的socat来实现UDP端口映射
软件包下载地址:http://www.dest-unreach.org/socat/download/
安装无非就是configure make make install
socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等
这里不一一介绍啦!
有兴趣可以查看官方文档:http://www.dest-unreach.org/socat/doc/socat.html
我们说说如何使用socat建立UPD端口映射
#socat udp4-listen:11161,reuseaddr,fork UDP:[监控服务器IP]:161
udp4-listen:在本地建立的是一个udp ipv4协议的监听端口;
reuseaddr,绑定本地一个端口;
fork,设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听;

【注:nc就是因为缺少fork模式,所以每次监听只能处理一次连接】
socat是一个强大的软件,希望与有这方面需求的同仁一起学习这个好的工具!
ps:无论是nc方式还是socat方式,启动监听模式都是在前端占用一个shell,所以请在后台执行或者使用screen工具等等!
分享到:
评论
1 楼 di1984HIT 2018-03-15  
xuexile!!!

相关推荐

    socat1.7.2.1-windows.zip

    socat的地址类型很多,有ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,等等。 socat 官方文档 http://www.dest-unreach.org/socat/doc/socat.html#EXAMPLES socat LINUX版本下载 ...

    32+64位socat,Android版,arm+arm64,android手机可用,android反向shell工具

    Socat 是 Linux 下的一个多功能的网络工具,名字来由是 「Socket CAT」。其功能与有瑞士军刀之称的 Netcat 类似,可以看做是 Netcat 的加强版。 Socat 的主要特点就是在两个数据流之间建立通道,且支持众多协议和...

    端口转发netcat(nc)

    端口转发工具 内网渗透 netcat(nc) 端口转发工具 内网渗透 netcat(nc)

    socat-1.7.3.3.tar.gz

    socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N 倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。 socat是一个两个独立数据通道之间的双向数据传输的继电器。...

    8个实用的Linux netcat命令示例

    Netcat 或者叫 nc 是 Linux 下的一个用于调试和检查网络工具包。可用于创建 TCP/IP 连接,大的用途是用来处理 TCP/UDP 套接字。  这里我们将通过一些实例来学习 netcat 命令。  1、在服务器-客户端架构上使用 ...

    Linux下网络检测与通讯命令netcat、curl的Windows/DOS版

    Linux下网络检测与通讯命令netcat、curl的Windows/DOS版,经过多方努力才攒成的。 工作中经常需要用ping、netcat、curl等命令进行网络的检测和模拟通讯,通过linux下强大的Shell脚本进行组织调用,克服图形环境灵活...

    netcat 瑞士军刀 linux windows netcat 瑞士军刀 linux windows

    本软件包含windows和linux两种版本 1、 了解NC的用法 命令:  nc –h 技巧:  win98用户可以在autoexec.bat加入path=nc的路径,win2000用户在环境变量中加入path中,linux含有这个命令(redhat) 1、基本使用  ...

    docker-netcat:“ netcat”容器,网络工具的瑞士军刀,已被Dockerized!

    在这种情况下,此netcat容器将打开2个适合侦听TCP / UDP流量的端口。 有关netcat更多信息,请查看此页面: :用法1)构建并运行netcat Docker容器$ git clone https://github.com/chilcano/docker-netcat.git$ cd ...

    Netcat端口扫描、端口监听、远程文件传输

    Netcat是一款非常出名的网络工具,简称“NC”,有渗透测试中的“瑞士军刀”之称。 功能说明:端口扫描、端口监听、远程文件传输

    NetCat 测试TCP UDP 工具

    测试UDP端口时,要用到nc 如果你要命令行测试就用这个

    centos7.9 nc rpm包及依赖

    linux可以使用nc命令来测试网络端口是否正常,类似于telnet命令,但也可以用nc命令来监听本地端口,支持TCP、UDP协议,当我们测试NTP服务网络策略是否正常时,可以使用到nc命令测试UDP 123端口。 使用案例如下: 1...

    socat-1.5.0.0 类似于Netcat的工具

    类似于Netcat的工具,可以工作于许多协议之上,运行于文件、管道、设备(终端或调制解调器等等)、socket(Unix、IP4、IP6-raw、UDP、TCP)、Socks4客户端、代理服务器连接、或者SSL等等之间。它提供forking、...

    netcat.dll(UDP版) by chenghao0511

    netcat.dll(UDP版) by chenghao0511 2013-05-20 by chenghao0511@gmail.com dll.dll(netcat.dll:nc -uLp 66) Load.exe injector in explorer.exe 备份在csdn资源库

    netcat网络调试工具

    netcat工具,俗有网络中的瑞士军刀之称,可以建立基于TCP、UDP的任何连接,包括windows版本和linux版本,windows版本为VC6工程,linux先./configure再make搞定,也可直接在cygwin上编译。

    Linux-NC.rar_NC_linux nc_nc linux_netcat

    Linux下的NC程序,类似于windows下的nc

    ARM 版本netcat ARM 版本netcat ARM 版本netcat ARM 版本netcat ARM 版本netcat

    arm版本的netcat

    linux和win下的NetCat(nc)

    linux和win下的NetCat(nc)

    socat-1.7.2.1.zip

    socat是一個netcat(nc)的替代產品,可以稱得上nc++。socat的特點就是在兩個流之間建立一個雙向的 通道。socat的地址類型很 多,有ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,等等。

    如何在Linux命令行下发送和接收UDP数据包

    众所周知,在传输层有两个常用的协议 TCP 和 UDP,本文介绍在 Linux 命令行下,如何使用 nc 命令发送或接收 UDP 数据包,这些命令的用法对调试 UDP 通信程序将有所帮助;本文适合初学者阅读。

    NC.rar_NC_netcat UDP

    netcat是一个简单的读写网络连接数据的unix工具,用tcp和udp协议

Global site tag (gtag.js) - Google Analytics