Ssh

SSH 和 ddns:可以遠端連接但不能本地連接

  • February 3, 2018

我已經設置了一個無 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

為什麼會這樣?

關於從內部網路訪問 NAT 的答案更正確的是:您不想這樣做,因為:

  • 消費級技術的限制;
  • 性能原因 - NAT 使用更多的 CPU 資源和記憶體 - 儘管在國內規模上並不令人擔憂;
  • 路由更複雜 - 使用和調試。

替代方案是:

  • 如果僅從該本地伺服器訪問,則創建一個主機文件條目;
  • 創建名稱伺服器,如果公共 DNS 名稱屬於您,則創建視圖 - 不是您提供的情況,但通常在企業中;
  • 創建名稱伺服器,並創建自定義內部名稱,如 ssh.home;
  • 使用 BIND+RPZ,並將外部名稱重新定義為您的內部 IP 地址;
  • 如果使用 Linux 機器進行路由,使用 iptables+NAT,將 SSH 會話擷取到您的外部 IP,並將它們 NAT 到您的內部 IP 地址。

關於我關於擷取 IP 地址/創建主機文件的評論,請參閱這個答案我如何在家處理我的 DDNS 地址。從 ISP 處更改 IP 地址的更好方法?

對於 BIND+RPZ,請參見:

僅將 BIND 配置為轉發器(無根提示),加密 + RPZ 黑名單/白名單一起

bind9 的大區域文件:廣告攔截

引用自:https://unix.stackexchange.com/questions/346024