SSH和ddns:可以远程连接,但不能本地连接

SSH和ddns:可以远程连接,但不能本地连接

我已经设置了一个无IP帐户用于远程访问我家中的 ssh 服务器myserver.ddns.net,效果很好......仅从外部。

从外面:

远程 ping:

$ ping myserver.ddns.net # success

远程ssh:

$ ssh myserver.ddns.net # success

从本地:

本地ping:

$ ping 192.168.2.8 # success

本地 ssh:

$ ssh 192.168.2.8 # success

远程 ping:

$ ping myserver.ddns.net # success, resolving to 90.113.108.192

远程ssh:

$ ssh myserver.ddns.net # loOong time waiting, then..
Connection closed by 90.113.108.192 port 22

为什么会这样呢?

答案1

更正确地说,关于从内部网络访问 NAT 的答案是:您不想这样做,因为:

  • 消费级技术的限制;
  • 性能原因 - NAT 使用更多的 CPU 资源和内存 - 尽管在国内规模上并不令人担忧;
  • 路由更加复杂——要么使用,要么调试。

替代方案是:

  • 如果仅从本地服务器访问,则创建一个主机文件条目;
  • 创建名称服务器,并创建属于您的公共 DNS 名称的视图 - 不是您所呈现的情况,但通常在企业中;
  • 创建名称服务器,并创建自定义内部名称,例如 ssh.home;
  • 使用BIND+RPZ,并将外部名称重新定义为您的内部IP地址;
  • 如果使用 Linux 机器进行路由,则使用 iptables+NAT,捕获到外部 IP 的 SSH 会话,并将它们 NAT 到您的内部 IP 地址。

关于我关于捕获 IP 地址/创建主机文件的评论,请参阅此答案我如何在家处理我的 DDNS 地址。处理 ISP 更改 IP 地址的更好方法?

对于 BIND+RPZ,请参阅:

将 BIND 配置为仅转发器(无根提示),加密 + RPZ 黑名单/白名单

Bind9 的大区域文件:广告拦截

答案2

好的,从评论和这一页,据我了解,路由器不接受此类“是一种常见的安全功能”NAT 环回”:IE从本地计算机连接到另一台本地计算机通过外部域解析。

作为解决方法,我被建议:

  • 使用 openwrt 或 ddwrt 等自定义映像来代替我的本机路由器软件。 (干杯伊普尔·瑟瑟
  • 设置本地 DNS 服务器(干杯狐狸

请随意提供我可以附加到此列表中的任何其他项目:)

相关内容