在Linux局域网下唯一定位一台机器的技巧(不需要samba)

最近做智能家居,需要知道智能家居网关(wifi转zigbee,以下简称网关屏)的ip(DNS动态分配)

一开始想的办法是遍历子网内所有机器,每个机器都尝试链接其5005端口,能连上就算找到了,但明显效率太低

还想出个办法是获取路由器上的主机列表,考虑到每个路由器的登陆方式都不尽相同,扩展性差,放弃

最后想着写个广播自身ip的程序,然后上传到网关屏上,上电自动执行,这样客户机就收到了。但没成想网关屏的arm工具链不是gnu的,交叉编译的程序运行不正常,放弃

在调试上面说的广播程序时,想到除了工具链问题外,机器本身对广播的禁止响应也是因素之一?于是在网管屏上ping广播地址

ping 192.168.0.255

结果只有路由器回应了我,客户机并没有回应,难道客户机没收到?搜索ping的相关资料,原来ping命令发出的广播icmp消息到链路层被放到以太网的广播地址,就是

ff:ff:ff:ff:ff:ff

这个消息在客户机的tcp/ip协议栈向上传递的过程中,默认是被过滤掉的,这就是为什么局域网里广播ping时,只有路由器搭理你的原因

不过这倒给了我一个灵感:如果让网关屏也搭理我,那ping命令返回的主机就只剩下2个,除了NPC路由器外,剩下的一定是网关屏了,直接就找到了!

想要网关屏搭理你也很简单,修改网关屏的内核参数即可。修改方法

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

修改后,从客户机ping广播地址

[email protected]:~$ ping -b 192.168.0.255
WARNING: pinging broadcast address
PING 192.168.0.255 (192.168.0.255) 56(84) bytes of data.
64 bytes from 192.168.0.100: icmp_req=1 ttl=64 time=0.953 ms
64 bytes from 192.168.0.1: icmp_req=1 ttl=255 time=1.90 ms (DUP!)
64 bytes from 192.168.0.100: icmp_req=2 ttl=64 time=0.361 ms
64 bytes from 192.168.0.1: icmp_req=2 ttl=255 time=0.531 ms (DUP!)
64 bytes from 192.168.0.100: icmp_req=3 ttl=64 time=0.346 ms
64 bytes from 192.168.0.1: icmp_req=3 ttl=255 time=0.523 ms (DUP!)
64 bytes from 192.168.0.100: icmp_req=4 ttl=64 time=0.350 ms
64 bytes from 192.168.0.1: icmp_req=4 ttl=255 time=0.523 ms (DUP!)
^C
--- 192.168.0.255 ping statistics ---
4 packets transmitted, 4 received, +4 duplicates, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.346/0.685/1.900/0.495 ms

可以看到,路由器(192.168.0.1)和网关屏(192.168.0.100)都给ping命令应答了

另外,修改内核参数的命令最好放到网关屏的rc启动脚本里,这样每次上电都是自动响应广播的

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 20:33:01

在Linux局域网下唯一定位一台机器的技巧(不需要samba)的相关文章

Linux系统下查找大文件或目录的技巧

命令行如下 find . -type f -size +1000000k 当硬盘空间不够时,我们就很关心哪些目录或文件比较大,看看能否干掉一些了,怎么才能知道呢? #已易读的格式显示指定目录或文件的大小,-s选项指定对于目录不详细显示每个子目录或文件的大小 du -sh [dirname|filename] 如: 当前目录的大小: du -sh . 当前目录下个文件或目录的大小: du -sh * [[email protected] var]# du -sh *12K     account1

在同一台机器上启动多个tomcat服务

一台机器上启动多个tomcat服务应用,能够让我们更好的测试下自己的分布式应用,下面简单介绍下如何在一台机器上开启多个tomcat应用,其实会弄两个,之后的多个都是一样的了 找到电脑上的tomcat安装目录,复制一份,出现两份tomcat,为了区别给复制的一份起一个特别的名称apache-tomcat-6.0.35-8090 进入apache-tomcat-6.0.35-8090目录中,进入conf目录下找到server.xml需要进行多个地方修改 conf目录下修改sever.xml 主要修改

linux下重新定位svn url方法

linux下重新定位svn url方法: 如果更换了SVN服务器,就需要重新定位,指向新的svn url. 重新定位命令:svn switch --relocate 原svn地址 新svn地址. 查看原svn路径方法:svn info linux下重新定位svn url方法

Linux环境下Java应用性能分析定位-CPU使用篇

1     CPU热点分析定位背景 CPU资源还是很昂贵的,为了深刻感受到这种昂贵,间下图当前CPU的资源售价: 所以对于程序猿们来说,需要让程序合理高效的使用CPU资源.利用有限的CPU资源来解决完成我们面对的实际问题,这就是为什么我们要尽可能优化程序. 不篇从微观层面展开介绍说明,不做宏观层面的介绍(譬如数据中心级容量监控,管理调度(OpenStack,Kubernates等)以及迁移(手动,自动,冷迁,热迁)). 本篇将以倒推式方法组织目录结构.出现了问题怎么办,以及为什么要这样做,以及后

linux环境下,利用tc限制两台服务器间的网速,非常简单。

最近再搞postgres的数据同步,需要模拟异地机房有带宽限制时的同步效果,所以想要限制一下两台机器之间的网速. ts命令功能很强,同时也好难理解和使用,经常浪费了好半天还是搞不定. 这里分享一个简单好用的脚本,只要设置一下目标ip和需要限制的速率,执行下就可以了: #!/bin/bash # # tc uses the following units when passed as a parameter. # kbps: Kilobytes per second # mbps: Megabyt

Linux下 两台机器文件/文件夹 相互拷贝

设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp [email protected]*.101:/temp/var/a.txt /test/ 或 进入A机器:scp /temp/var/a.txt [email protected]*.102:/test/ 把A下的文件夹(含子文件夹)/temp/var/拷贝到B机器/test/目录下: 进入B机器:scp -r [email protected]*.

linux环境下搭建MySQL数据库的双击热备

准备服务器 由于Mysql不同版本之间的(二进制日志)binlog格式可能会不太一样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本.本次我用于测试的两台服务器版本都是Mysql-5.5.17. Mysql 建立主-从服务器双机热备配置步骤 2.1环境描述A服务器(主服务器Master):59.151.15.36B服务器(从服务器Slave):218.206.70.146主从服务器的Mysql版本皆为5

mosquitto在Linux环境下的部署/安装/使用/测试

mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http://mosquitto.org/files/source/官网下载源码,放到Linux环境中.解压后,找到主要配置文件config.mk,其中包含mosquitto的安装选项,需要注意的是,默认情况下mosquitto的安装需要OpenSSL(一个强大的安全

linux系统下,11款常见远程桌面控制软件

linux系统下,11款常见远程桌面控制软件 一. Grdc 它是一个用GTK+编写的,适用于gnome桌面环境的远程桌面访问软件.看图: 常见功能: 1.提供全屏,窗口化的远程控制.支持高分辨率下的窗口显示以及调整. 2.可浮动的工具栏 3.可抓取键盘 4.支持建立一个“常用访问列表” 5.连接快速,高效 6.全屏模式下,当鼠标划过屏幕边缘时自动滚动 7.全屏模式下工具栏同样支持浮动效果,可直接进行例如模式切换,键盘抓取最小化等常见操作. 8. rdesktop 支持RDP协议, 9. 支持