背景
我正在运行以下命令
在我的笔记本电脑上,有最新版本的 arch linux 以及所有最新更新。我正是从这台笔记本电脑上查询树莓派上的 SNMP 堆栈
$ uname -a Linux 4.20.13-arch1-1-ARCH #1 SMP PREEMPT Wed Feb 27 19:10:28 UTC 2019 x86_64 GNU/Linux
在树莓派上,我正在运行带有所有最新更新的 raspian。
$ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
在树莓派上,我正在运行 SNMP 堆栈,其配置如下
$ sudo apt-get install -y snmp snmpd
$ snmpd -v
NET-SNMP version: 5.7.3
/etc/snmp/snmp.conf 文件为空
/etc/snmp/snmpd.conf 文件内容粘贴在下面
问题描述
我无法snmpstatus
从 WAN 获取命令,即在离开时通过互联网远程访问 LAN。在 WAN 端不起作用但在 LAN 端起作用的命令是
snmpstatus -v1 -c public my_dydns.org:1234
(执行此命令后,不会显示任何内容)。
从路由器的 LAN 端,相同的命令按预期工作,
snmpstatus -v1 -c public my_dydns.org:1234
给出以下正确的输出:
[UDP: [94.94.94.94]:1234->[0.0.0.0]:40866]=>[Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l] Up: 15:33:34.58
我已经设置了我的家庭路由器,以便外部WAN面向端口1234端口,端口转发到192.168.1.30端口161,这是rasp pi上的SNMP堆栈。
我知道我的 dydns 和端口转发工作得很好,因为用于获取同一 LAN 上打印机的 SNMP 状态的相同 snmpstatus 命令,从 WAN 访问,使用类似的端口转发方案工作得很好。
下面是我在 rasp pi 上使用的 snmpd.conf 文件。
snmp.conf 文件存在且为空。
下面粘贴了 /etc/snmp/snmpd.conf 的内容
agentAddress udp:161,udp6:[::1]:161
# below allows any ip in the range 192.168.1.0 to 192.168.1.254 access to this SNMP, including the router at 192.168.1.1
rocommunity public 192.168.1.0/24
# allows port forwarding through the router from the WAN (ie the outside side of the router)
rocommunity public me.my_dydns.org
答案1
SNMP 文件中的 IP 地址错误。然而,它已经包含在 192.168.0/24 中,因为该注释正确地提到了“包括路由器”。例如你可以注释掉该行rocommunity public me.my_dydns.org
尽管如此,出于安全原因,不建议在 Internet 公开接口上提供 SNMP 服务。更不用说带有 v1/v2 身份验证的 SNMP,其中身份验证未加密。
我建议设置一个 VPN,以便通过 VPN 进行 SNMP 通信。
然而,据我所知,有些协议对 NAT 不友好,而 SNMP 也不是对 NAT 最友好的协议之一。例如,SNMP 在 NAT 上不能很好地工作。它可能起作用,也可能不起作用,在这种情况下,可能不起作用。
我建议设置一个 VPN,以便通过 Internet 进行 SNMP 通信。
以 Cisco 设备为例:
网络地址转换 > NAT 问题
表 4-1 Cisco NAT 支持的 IP 流量类型/
应用 不支持的 SNMP 流量类型/应用
附言。在企业设备中,他们有检查员/专门代理来重写 SNMP 数据包,使其能够通过 NAT 工作。