SSH端口转发可从任何地方访问我的家用计算机


24

我来自这个问题:https : //superuser.com/questions/359799/how-to-make-freebsd-box-accessible-from-internet

我想了解的整个过程port forwarding

我读了很多东西,但是没有理解端口转发本身的基本概念。

是)我有的:

坐在我家里的一台freebsd服务器。
netgear路由器

这是我要实现的目标:

可以从Windows机器通过Internet访问freebsd服务器,从而可以打开Web浏览器并访问Internet。

我也想从我拥有的ubuntu机器上访问这个freebsd框。

如果有人可以帮助我,那将是很棒的。

这是我为端口转发所做的netgear路由器设置。

netgear端口转发


如果有superuser问题,请迁移。
哈里

需要更多说明。如果Windows机器位于Internet上的某个位置并且已经可以访问Internet,那么为什么要连接到家里的FreeBSD盒以访问Internet?
OldTimer 2011年

@OldTimer:我不确定您的问题/关注是否有意义。
哈里

使用IPv6地址,没有NAT了,没有麻烦了;-)
斯特凡希门尼斯

1
等待!为什么我刚才说的是: - /
斯特凡希门尼斯

Answers:


47

我将从原始事实开始:

  1. 您拥有:A-您的FreeBSD盒子,B-您的路由器,以及C-可以访问Internet的计算机。它是这样的:

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
    \_________ ________/
              v
               `- this is your LAN
    

    请注意,路由器通常如何工作:它允许 LAN上的计算机 Internet的连接(简单来说)。因此,如果A(或LAN上的任何其他计算机)要访问Internet,将被允许(再次谈论基本的了解和配置):

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
          `-->----'  `--->--->---^  
    

    而下面没有默认不允许的:

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
          `--<----'  `---<--- - - - - --<---<-----'
    

    (也就是说,路由器可以保护 LAN上的计算机免受Internet的访问。)请注意,路由器是 Internet 1看到的LAN中唯一的一部分。

  2. 端口转发是允许发生第三种模式的原因。这包括告诉路由器2)中的哪个连接应该连接到LAN上的台计算机。这是根据端口号完成的,这就是为什么将其称为端口转发。您可以通过指示路由器从Internet到给定端口的所有连接进入局域网上的特定计算机来进行配置。这是端口22转发到计算机的示例:CA

    .------.     .-------.                        .-----.
    |  A   | ==  |   B   |  - - ( Internet ) - -  |  C  |
    |      |     |       |                        '-----'
    '-|22|-'     ',--|22|'                          |
        `--<-22---'    `---<---- - - - - - --<-22---'
    
  3. 通过Internet进行的此类连接基于IP地址进行。因此,上面的示例将更精确地表示为:

    .------.      .-------.                                .-----.
    |  A   |  ==  |   B   | - - - - - ( Internet ) - - - - |  C  |
    |      |      |       |                                '-----'
    '-|22|-'      ',--|22|'                                   |
        `--<-A:22--'    `--<-YourIP:22 - - - - --<-YourIP:22--'
    

    如果您没有具有静态 IP 的Internet连接,则必须以某种方式了解ISP当前为路由器分配的IP。否则,C将不知道它必须连接到哪个IP才能到达路由器(以及A)。为了以一种简单的方式解决此问题,可以使用称为动态DNS的服务。这将使您的路由器定期将信息发送到特殊的DNS服务器,该服务器将跟踪您的IP并为您提供域名。有很多免费的动态DNS提供程序。许多路由器都带有配置选项,可以轻松与之联系。

1)同样,这是一种简化-互联网上看到的实际设备是调制解调器-它通常可以与路由器集成在一起,但也可以是单独的盒子。
2)或任何其他具有Internet连接的机器。


现在,您想要什么:

  1. 仅允许ssh从Internet访问您的计算机是一个坏主意。破解者设置了成千上万的僵尸程序,它们在Internet上搜索具有开放SSH端口的计算机。他们通常会在尽可能多的IP的默认SSH端口上“敲门”,一旦发现某个地方运行了SSH守护程序,便会尝试获得对计算机的暴力访问。这不仅有潜在闯入的风险,而且还存在在暴力破解计算机时网络变慢的风险。

  2. 如果您确实需要这种访问权限,则至少应

    • 确保您为所有用户帐户设置了密码,

    • 通过SSH不允许root访问权限(你可以随时登录为普通用户和susudo再)

    • 更改运行SSH服务器的默认端口,

    • 引入一种不允许进行多次SSH登录尝试的机制(增加了后续尝试的等待时间-我不记得它的确切调用方式-我是在FreeBSD上启用的,我记得很简单-试试搜索一些有关保护SSH的FreeBSD论坛等,您会发现它。)

    • 如果可能的话,仅当您知道您将在不久的将来访问计算机时才尝试运行ssh守护程序,然后将其关闭

  3. 习惯于浏览系统日志。如果您开始注意到任何可疑的内容,请引入其他安全机制,例如IP表端口敲门


10
为ASCII善意而
投票

感谢您的详细解释。我将对此稍作整理,然后再发表评论。
哈里

我完全明白你的意思。我的问题是,我已经配置了(正确或错误-我不确定)我的netgear路由器。接下来我需要做什么?
哈里

2
看看我对外部SSH访问的编辑(底部)。
rozcietrzewiacz

感谢您的信息。我明白了你要传达的意思。我的问题是,我需要怎么做才能使互联网上的任何人(可以访问)都可以在freebsd box上运行浏览器。我该如何设置?
哈里

3

有两种方法可以完成此操作。最简单的方法可能是设置所谓的DMZ。但是,更安全的方法是在路由器上设置在端口22上到服务器IP的静态路由。

资源:


谢谢。我已经完成了netgear路由器的部分:我已经以这种方式设置了portforwarding:service:HTTP port:80服务器ip:192.168.1.16-这里的ip是我的freebsd框的ip。接下来我该怎么办?
哈里

在您所在地以外的地方进行测试,我个人只是将手机连接到笔记本电脑,然后尝试将其输入ip地址。我假设您知道您的外部IP地址。或者,您也可以尝试访问Web服务器。
马克D

SSH无法用于我的外部IP。我需要在freebsd服务器上做任何事情吗?
哈里

您可以从内部网络进行SSH吗?
Mark D

是。我可以做到
哈里(Hari)

1

这可以由您的路由器完成。在某些路由器上,此功能称为Virtual Server

请参阅下图,其中有两个端口转发的示例。一种是Web,另一种是SSH。在第一种情况下,您在WAN IP上的任何请求(即带有端口的路由器的IP)80都将转发到LAN IP(192.168.2.4在这种情况下),
借助此功能,您可以从世界上任何地方在LAN上运行的PC /服务器上运行服务即那些服务不限于局域网
路由器上的端口转发或虚拟服务器

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.