我有一个运行 Raspbian 的 Raspberry Pi,它通过以太网连接到我的路由器。例如,路由器一直使用 DCHP 和静态 IP 地址运行,并且在本地 LAN 上我可以通过 ssh 正常连接。但是,该设备从未显示在路由器上的已连接设备列表中,因此我无法配置用于外部访问的端口转发。
我本来想说这是路由器的问题,但我现在尝试了两个不同的路由器(BT Home Hub 2 和 Edimax BR-6428),结果相同,所以我认为这一定是操作系统的问题。
我需要进行一些设置才能使设备出现在路由器上吗?
答案1
如果您的 Rpi 位于具有静态 IP 的网络上,它永远不会与路由器对话来“通告”自己。
一个非常简单的解决方案是使用 upnpc 程序(在小型NPC包)来动态设置端口转发。比一直调整路由器容易得多。
您需要在路由器上启用 upnp,此处适用通常的注意事项。
以下命令会将互联网端口 1337 转发到服务器上的内部端口 22:
upnpc -e "ssh server" -a $(hostname --all-ip-addresses) 22 1337 tcp
当然,请参阅 upnpc 的手册页了解更多详细信息,但在这里您可以看到-e
设置转发设置的名称,-a
列出服务器的 IP 地址,最后三项是内部端口、外部端口、连接类型(tcp/udp) 。
我也使用类似的命令将端口 80 从外部转发到我自己的 Web 服务器,不必设置 DMZ 以及所有涉及安全的内容。 (不,我没有将实际的外部 ssh 端口号放在这里......呃!)
另一种方法是在路由器中为 Rpi 设置静态 DHCP 设置,然后将 Rpi 切换回动态 IP (DHCP) 模式...但除非您还要设置某种名称服务器系统,由于你的 RPi 地址可能会改变,所以这很快就会变得很棘手。 (是的,我知道这不是应该到... )
最好的方法是让它使用当前的 IP 地址设置自己的转发,因为它会根据需要进行调整。