linux udp 端口映射,Linux下的UDP/TCP端口映射(netcat and socat)
原文链接: http://www.wenquan.name/?p=1158
说起来有点土,事到如今才第一次用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工具等等!
附:
socat官方文档:http://www.dest-unreach.org/socat/doc/socat.html
linux udp 端口映射,Linux下的UDP/TCP端口映射(netcat and socat)相关推荐
- mysql命令行查看端口占用_linux下常用命令查看端口占用
在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询 netstat命令各个参数说明如下: -t : 指明显示TCP端 ...
- 需要额外端口信息_使用Python进行TCP端口扫描
使用Python进行TCP端口扫描 首先我们供给一台主机,要进行的步骤就是对其主机端口的扫描,查看其中开放的端口. 我们创建一个TCP的全连接的扫描器,使用socket来创建连接器. 扫描端口开放 # ...
- linux mysql 端口号_linux下mysql 查看默认端口号与修改端口号方法
一.查看默认端口号 1.登录mysql [root@localhost ~]# mysql -uroot -p Enter password: 输入数据库密码: 2.使用show global var ...
- php开启端口复用,请问下workman是否支持端口复用?
workerman 支持端口复用. bool Worker::$reusePort 设置当前worker是否开启监听端口复用(socket的SO_REUSEPORT选项). 开启监听端口复用后允许多个 ...
- 【Python脚本进阶】2.1、端口扫描器(下):NMAP端口扫描
目录 一.简介 1.1.扩展 1.2.端口扫描类型 1.3.实现: 一.简介 1.1.扩展 由TCP连接扫描脚本,到其他类型的扫描,Nmap端口扫描工具包提供了大量的功能,如提供的ACK.RST.FI ...
- linux防火墙开放所有端口命令,linux centos7 防火墙及端口开放相关命令
一.防火墙相关命令 1.查看防火墙状态 : systemctl status firewalld.service 注:active是绿的running表示防火墙开启 2.关闭防火墙 :systemct ...
- Windows 2003 下手动关闭危险端口
Windows 2003 下手动关闭危险端口怎样关闭端口 默认情况下windows有很多端口是开放的.在你上网的时候,网络病毒和黑客可以通过这些端口连上你的电脑.所以应该关闭.主要有tcp 135 , ...
- Windows 中 TCP 端口 139 和 445 的使用
Microsoft 在 Windows 2000 中引入了 TCP 端口 445,它仍在 Windows 10 和 Windows Server 2019 中使用.我将解释此端口的用途,以及它与 Wi ...
- Windows根据TCP端口号查找进程PID再kill进程
Windows根据TCP端口号查找进程PID再kill进程 Windows环境下,有时候TCP端口莫名其妙的被占用,导致正常的网络端口绑定失败,比如Android开发中,adb无法识别,有时候原因就是 ...
最新文章
- Center OS 离线安装Mysql5.7
- 主角有智能芯片的种田小说_推荐3本克苏鲁类小说,压抑邪恶与搞笑逗乐并存,看看是你的菜吗...
- BU_DATE_CHAR abap screen 日期字段搜索帮助
- 深入研究嵌入式操作系统的绝佳教材
- 湖北工业大学计算机专硕学费,2019年湖北工业大学硕士研究生学费奖助政策
- leetcode 有效的数独
- Javascript 的函数式对象(三)利用闭包模拟类的静态变量和方法
- linux下重启tomcat命令
- As Giants Step In, Asustek Defends A Tiny PC
- 无线路由器如何建立ftp服务器,利用无线路由器建立FTP服务器
- eclipse Strut2环境搭建
- 微信中禁止网页下拉出现网页由XXX提供
- spyglass CDC方法学
- 怎么写竞品分析报告(思路):
- python字符串修改
- 十二、梯度和散度--流体力学理论知识
- 让智能更落地,让中台更智能
- Bonobo Git Server 后台服务安装 详细教程
- css中min-height和max-height的区别
- 开篇:数据驱动UI的设计理念
热门文章
- Javascript实现计数器,定时警告和停止
- Red Hat 6.5安装Oracle 10g故障汇总
- Android程序打开和关闭输入法
- Android Service被系统回收的解决方法
- 开机出现“CPU fan error
- Win7(包括32和64位)使用GitHub
- 3t硬盘坏道检测需要多久_卤素检测报告需要多久更新一次
- 信息学奥赛一本通 2047:【例5.16】过滤空格 | OpenJudge NOI 1.7 23:过滤多余的空格
- 信息学奥赛一本通(1111:不高兴的津津)
- String Problem(HDU-3374)