[20190211]简单测试端口是否打开.txt
[20190211]简单测试端口是否打开.txt
--//昨天看一个链接,提到如果判断一个端口是否打开可以简单执行如下:
--//参考链接:https://dba010.com/2019/02/04/check-if-a-port-on-a-remote-system-is-reachable-without-telnet/
1.测试:
# cat < /dev/tcp/192.168.100.40/1521
# echo $?
0
# cat < /dev/tcp/192.168.100.40/1522
-bash: connect: Connection refused
-bash: /dev/tcp/192.168.100.40/1522: Connection refused
# alias zdate
alias zdate='date +'\''%Y/%m/%d %T'\'''
--//不过我的测试需要等待一分钟,不知道那个受那个内核参数的影响,不知道那位知道:
# zdate ;cat < /dev/tcp/192.168.100.40/1521 ; zdate
2019/02/11 08:42:59
2019/02/11 08:43:59
--//换另外一台机器测试:
# zdate ;cat < /dev/tcp/192.168.100.78/1521;zdate
2019/02/11 08:46:07
2019/02/11 08:46:17
# zdate ;cat < /dev/tcp/192.168.100.40/1521;zdate
2019/02/11 08:46:36
2019/02/11 08:47:36
--//视乎和远程服务器某个内核参数有关.测试100.40需要60秒(这台机器很老redhat 4.3的版本),而测试100.78需要10秒.
--//在100.78上使用tcpdump监测:
# tcpdump -i eth0 host 192.168.xxx.xx -nnn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
09:03:41.242607 IP 192.168.xxx.xx.48292 > 192.168.100.78.1521: S 226276375:226276375(0) win 29200 <mss 1460,sackOK,timestamp 3393435130 0,nop,wscale 7>
09:03:41.242785 IP 192.168.100.78.1521 > 192.168.xxx.xx.48292: S 995705425:995705425(0) ack 226276376 win 14480 <mss 1460,sackOK,timestamp 1354661055 3393435130,nop,wscale 7>
09:03:41.242852 IP 192.168.xxx.xx.48292 > 192.168.100.78.1521: . ack 1 win 229 <nop,nop,timestamp 3393435130 1354661055>
09:03:51.253449 IP 192.168.100.78.1521 > 192.168.xxx.xx.48292: F 1:1(0) ack 1 win 114 <nop,nop,timestamp 1354671066 3393435130>
09:03:51.253770 IP 192.168.xxx.xx.48292 > 192.168.100.78.1521: F 1:1(0) ack 2 win 229 <nop,nop,timestamp 3393445141 1354671066>
09:03:51.253797 IP 192.168.100.78.1521 > 192.168.xxx.xx.48292: . ack 2 win 114 <nop,nop,timestamp 1354671066 3393445141>
--//也可以看出有10秒的等待时间.在100.78上执行:
# echo /proc/sys/net/ipv4/* | xargs   -n 1  strings -1 -f | grep ": 10$"
/proc/sys/net/ipv4/cipso_cache_bucket_size: 10
/proc/sys/net/ipv4/igmp_max_msf: 10
/proc/sys/net/ipv4/inet_peer_gc_mintime: 10
/proc/sys/net/ipv4/tcp_keepalive_intvl: 10
*/
--//开始以为/proc/sys/net/ipv4/tcp_keepalive_intvl: 10有关,我查看100.40的设置/proc/sys/net/ipv4/tcp_keepalive_intvl=75,也不是这个
--//参数.我修改这个参数测试还是10秒.
--//实际上还有1个更快的测试方法,发送信息到/dev/tcp/ip_address/port,例子如下:
# echo a >  /dev/tcp/192.168.100.78/1521
# echo $?
0
# echo a >  /dev/tcp/192.168.100.78/1522
-bash: connect: 拒绝连接
-bash: /dev/tcp/192.168.100.78/1522: 拒绝连接
--//在100.78上使用tcpdump监测:
 # tcpdump -i eth0 host 192.168.xxx.xx -nnn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
09:12:41.312584 IP 192.168.xxx.xx.48331 > 192.168.100.78.1521: S 3309983125:3309983125(0) win 29200 <mss 1460,sackOK,timestamp 3393975215 0,nop,wscale 7>
09:12:41.312761 IP 192.168.100.78.1521 > 192.168.xxx.xx.48331: S 124881852:124881852(0) ack 3309983126 win 14480 <mss 1460,sackOK,timestamp 1355201125 3393975215,nop,wscale 7>
09:12:41.312850 IP 192.168.xxx.xx.48331 > 192.168.100.78.1521: . ack 1 win 229 <nop,nop,timestamp 3393975216 1355201125>
09:12:41.312895 IP 192.168.xxx.xx.48331 > 192.168.100.78.1521: P 1:3(2) ack 1 win 229 <nop,nop,timestamp 3393975216 1355201125>
09:12:41.312911 IP 192.168.100.78.1521 > 192.168.xxx.xx.48331: . ack 3 win 114 <nop,nop,timestamp 1355201125 3393975216>
09:12:41.312922 IP 192.168.xxx.xx.48331 > 192.168.100.78.1521: F 3:3(0) ack 1 win 229 <nop,nop,timestamp 3393975216 1355201125>
09:12:41.313454 IP 192.168.100.78.1521 > 192.168.xxx.xx.48331: F 1:1(0) ack 4 win 114 <nop,nop,timestamp 1355201126 3393975216>
09:12:41.313661 IP 192.168.xxx.xx.48331 > 192.168.100.78.1521: . ack 2 win 229 <nop,nop,timestamp 3393975217 1355201126>
--//这样几乎瞬间响应.后面2个网络包是监测1522端口的.
09:13:08.704102 IP 192.168.xxx.xx.15174 > 192.168.100.78.1522: S 2841139274:2841139274(0) win 29200 <mss 1460,sackOK,timestamp 3394002608 0,nop,wscale 7>
09:13:08.704140 IP 192.168.100.78.1522 > 192.168.xxx.xx.15174: R 0:0(0) ack 2841139275 win 0
--//前面测试在root用户下进行,我在oracle用户下测试看看:
# zdate ;cat < /dev/tcp/192.168.100.40/1521 ; zdate
2019/02/11 09:22:51
2019/02/11 09:23:51
--//也是可以的.
2.继续测试:
--//我反复测试发现仅仅探测100.78需要10秒,其它的机器都是60秒.这样可能与内核的参数无关,因为我们服务器许多版本使用与100.78一样的.
--//我最终测试与参数INBOUND_CONNECT_TIMEOUT_LISTENER设置有关(在$ORACLE_HOME/network/admin/listener.ora下).
$ grep INBOUND_CONNECT_TIMEOUT_LISTENER listener.ora
INBOUND_CONNECT_TIMEOUT_LISTENER=10
--//而这个参数缺省就是60秒.修改它等于1,要重启监听看看(我测试要重启监听才生效):
# zdate ;cat < /dev/tcp/192.168.100.78/1521;zdate
2019/02/11 09:36:14
2019/02/11 09:36:15
--//OK现在需要1秒.
--//一般以前使用nc或者telnet判断,链接如下:
# echo a | nc -w 1 -n -v  192.168.xxx.xx 1-1521 2>/dev/null | grep "succeeded" 
--//参考链接:http://blog.itpub.net/267265/viewspace-2148257/
--//关于INBOUND_CONNECT_TIMEOUT的设置,在sqlnet.ora与listener.ora意义不一样,一个表示等待用户认证超时的时间,一个表示等待用
--//户连接请求超时的时间. 可以参考我以前链接:
--// http://blog.itpub.net/267265/viewspace-2147529/
3.自己在重复验证看看.
$ grep INBOUND_CONNECT_TIMEOUT sqlnet.ora listener.ora
sqlnet.ora:SQLNET.INBOUND_CONNECT_TIMEOUT=30
listener.ora:INBOUND_CONNECT_TIMEOUT_LISTENER=1
$ ps -ef | grep oracleboo[k]
--//没有任何输出.也就是远程没有客户连接服务器.
$ zdate;sqlplus scott/xxxxx@book 
2019/02/11 09:48:04
SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 11 09:48:04 2019
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
--//注意sqlplus不能使用-l参数,不然马上退出了.
--//切换终端会话,执行如下:
$ ps -ef | grep oracleboo[k]
oracle   43849     1  0 09:48 ?        00:00:00 oraclebook (LOCAL=NO)
--//可以发现实际上网络连接已经建立.
--//等alert*.log出现如下信息,在取消上面sqlplus的执行:
--//alert.log
Mon Feb 11 09:48:34 2019
WARNING: inbound connection timed out (ORA-3136)
--//两者时间相减就是30秒.这个参数也就是sqlnet.ora有关.也就是等待用户认证超时的时间.
$ zdate ;cat < /dev/tcp/192.168.100.78/1521;zdate
2019/02/11 10:00:21
2019/02/11 10:00:22
--//正好1秒,这个时候就是表示等待用户连接请求超时的时间.
$ zdate; telnet 192.168.100.78 1521;zdate
2019/02/11 10:01:38
Trying 192.168.100.78...
Connected to xxxxxdg4.com (192.168.100.78).
Escape character is '^]'.
Connection closed by foreign host.
2019/02/11 10:01:39
$ time telnet  192.168.100.78 1521
Trying 192.168.100.78...
Connected to xxxxxdg4.com (192.168.100.78).
Escape character is '^]'.
Connection closed by foreign host.
real    0m1.007s
user    0m0.001s
sys     0m0.003s
$ /usr/bin/time -p telnet  192.168.100.78 1521 > /dev/null
Connection closed by foreign host.
Command exited with non-zero status 1
real 1.00
user 0.00
sys 0.00
[20190211]简单测试端口是否打开.txt的更多相关文章
- telnet测试端口是否打开?
		
如何测试远程服务器的某个端口是否打开? 例如: telnet 192.168.1.1 5000 返回: Trying 127.0.0.1...Connected to 127.0.0.1.Escape ...
 - telnet 测试端口是否打开
		
[root@mysqld ~]# yum list |grep telnet telnet.x86_64 1:0.17-48.el6 @base telnet-server.x86_64 1:0.17 ...
 - [20190423]简单测试latch nowilling等待模式.txt
		
[20190423]简单测试latch nowilling等待模式.txt --//我对这个问题的理解就是如果参数willing=0,表示无法获取该latch,直接退出,再寻找类似的latch.--/ ...
 - telnet测试端口是否正常打开
		
点击计算机的开始菜单-->运行 ,输入CMD命令,然后确定.打开cmd命令行. 输入telnet测试端口命令: telnet IP 端口 或者 telnet 域名 端口 回车 如果端口关 ...
 - 内网服务器设置NAT123端口映射,方便外网连接;如何测试端口连通情况。
		
一.nat123设置端口映射. 1)首先去nat123官网注册账号. http://www.nat123.com/ 2)下载nat123客户端 http://www.nat123.com/Pages_ ...
 - [20180123]测试SQLNET.EXPIRE_TIME参数.txt
		
[20180123]测试SQLNET.EXPIRE_TIME参数.txt --//曾经写过一篇linux内核网络参数测试tcp_keepalive,链接http://blog.itpub.net/26 ...
 - springboot+nginx+https+linux实现负载均衡加域名访问简单测试
		
把springboot项目打包成三个jar包,并指定端口为 14341,14342,14343 下载腾讯云免费ssl证书,解压后会出现如下图文件夹 把nginx文件夹下的 .crt 和 .key文件复 ...
 - 只有小于65535端口编程可以用,查看哪些端口被打开netstat -anp,nc命令,nmap命令
		
1024以下是系统保留的,从1024-65535是用户使用的 个人写的应用程序,尽量不要使用0到1024之间的端口号. 1024到65535我们编程可以用.这个不是Linux规定的,是socket规定 ...
 - 开放windows服务器端口-----以打开端口8080为例
		
[转载]原文地址:https://blog.csdn.net/spt_dream/article/details/75014619 本文记录两个内容: 1.win7下打开端口 2.服务器(2003或者 ...
 
随机推荐
- [java核心外篇]__Object类与对象类型的转型
			
前言 我们在之前的学习中提过很多次了,java是面向对象的,java的基础可以说是建立在类和对象上面的.然后我们又学到了类的继承,发现了在java类库中,类的继承是极为普遍的,一个类继承另一个类,就像 ...
 - 小程序this.setData
			
data: { isChecked: [ { key: true },{ key: true },{ key: true} ]} 如上,如果我想动态修改isChecked里面指定某个下标的值怎么办? ...
 - MySQL 锁信息和事务
			
1 锁概念 1.1 什么是锁 锁是数据库系统区别于文件系统的一个关键特性.数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性.例如:操作缓冲池中的LRU列表,删除.添加.移动L ...
 - [NewLife.XCode]事务处理(算准你的每一分钱)
			
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...
 - java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次
			
java后台controller中,for循环执行数据库操作,但是发现实际仅仅执行了一次,或者说提交成功了一次,并没有实际的个数循环 有可能是同一个对象导致的 可以仔细看一下下面两段代码有什么区别 p ...
 - OJ:奇怪的类复制
			
描述 程序填空,使其输出9 22 5 #include <iostream> using namespace std; class Sample { public: int v; // 在 ...
 - 重构——一个小例子
			
菜鸟区域,老鸟绕路! 原代码,这是一个可以借阅影片的小程序,你可以想象成某个大型系统,我想代码应该都能很容易看懂: using System; using System.Collections.Gen ...
 - git error: RPC failed; result=56, HTTP code = 200
			
突然发现git pull 后出现几次都无果,百度后, 发现是curl的postBuffer 默认值较小的原因,配置下这个值,就不会出现该错误了.解决如下: git config --global ht ...
 - C语言异常处理之 setjmp()和longjmp()
			
异常处理之除0情况 相信大家处理除0时,都会通过函数,然后判断除数是否为0,代码如下所示: double divide(doublea,double b) { const double delta = ...
 - mysql基础整理01
			
在终端或命令行中和数据库软件建立连接 mysql -uroot -p 数据库相关SQL 查看所有数据库 show databases; 创建数据库 create database 数据库名; crea ...