今天在工作中碰到一个奇怪的现象:
原来好好的程序,部署在一台服务器上之后,无法发现网络中的设备。
背景
这个程序(下称检测程序)是用来为网络中的设备做配置用的,当程序进入网络之后,会主动发现网络中的设备,并通过列表将设备展示出来,提供操作人员设置。
发现设备的机制是向所在网络中定时发送特定的 UDP 消息,当网络中的设备接收到消息后,会做一个回应,从而建立于检测程序的关联。
问题
由于开发环境发生变化,将程序部署在了另外一台机器上了。准备调试时,才发现无论网络中接入多少设备,检测程序都不能发现。
于是各种找原因,最后通过交叉测试才发现,检测程序所在的服务器无法发送UDP 广播,即向 255.255.255.255 地址发送 UDP 消息。
解决
检查网络设置
下面命令可以查看特定的网络配置
sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.all.accept_redirects
sysctl net.ipv4.conf.default.accept_redirects
net.ipv4.ip_forward:控制是否允许IP转发。net.ipv4.conf.all.accept_redirects:控制是否接受 ICMP 重定向。net.ipv4.conf.default.accept_redirects:同上,但应用于默认接口。</

最低0.47元/天 解锁文章
495






