无法从 WAN 通过路由器访问 rasp pi 上的 SNMP 堆栈

无法从 WAN 通过路由器访问 rasp pi 上的 SNMP 堆栈

背景

我正在运行以下命令

  • 在我的笔记本电脑上,有最新版本的 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 工作。

相关内容