如何使Raspberry Pi Web服务器公开?


8

因此,我终于有了一个Web服务器,除了它仅可用于我的本地网络,而且我想将其公开。我有一个D-Link DIR-615作为路由器,我的Pi的IP地址是192.168.0.14,我的公共IP信息如下所示:

IP Information: xx.xx.xx.xx
ISP:    Xplornet Communications
Organization:   Xplornet Communications
Connection: Broadband
Services:   None Detected
City:   Sherwood Park
Region: Alberta
Country:    Canada

一切听起来不错,除了我不住在Sherwood Park,距离我大约2小时路程。

我需要怎么做才能使服务器公开?

我的路由器支持端口转发,虚拟服务器和DMZ。我正在使用Apache HTTP服务器。

谢谢,但这仍然不能解决我的问题。我只想从外部连接一次,然后我会找出DDNS之类的信息,但是现在当我输入Xplornet IP地址时,它将无法连接任何东西。

Answers:


13

将端口80从路由器转发到您的Pi,如果要从外部进行SSH,也要端口22。请注意,使用外部的SSH,任何可以进入的人都可以SSH或访问网络上的其他设备。

设置完成后,如果您的IP几乎保持不变,则可以使用Cloudflare之类的东西指向它。如果每天都在变化,则需要DynDNS之类的服务。


K,所以我将路由器设置为使用树莓派的IP地址或其他任何地址将端口80转发至端口80,但是每次我输入外部IP地址时,它仍然只是“超时”
Jim Jones

尝试访问它并指定端口80,例如xx.xx.xx.xx:80
George Pearce 2013年

@Spencer:由于并非所有路由器都支持“发夹”,因此您无法从网络内部可靠地测试端口转发。尝试从局域网外部进行测试。例如,使用关闭了WiFi的手机,并使用蜂窝数据(3G,HCSD等)进行非LAN连接。
RedGrittyBrick

@SpencerKillen您是在外面测试吗?如果与树莓派位于同一局域网中并访问路由器的公共IP,许多设备将不会为您进行NAT。如果您可以从局域网访问位于192.168.0.14的Web服务器,则RPI或Apache没问题,但是端口转发未正确完成,或者您的路由器在某处也有防火墙。

如果端口转发太麻烦,或者根本没有选择权(例如,如果您位于移动路由器后面),则可以尝试像PageKite或Yaler.net这样的中继服务(公开:我是Yaler的创始人)
tamberg

3

有几件事要牢记。

一个是即使您在路由器中正确配置了端口转发,也可能无法从家中连接到公用IP,因为某些路由器仅转发来自“外部”而不是“内部”的连接。另一个常见的问题是某些ISP不想让其用户运行公用服务器并阻止公用的传入端口(例如端口80或25)。

我不知道这两种方法是否都适用于您的情况,但它们可能适用。除此之外,我会说您处在正确的轨道上,如果可以的话,配置路由器和动态DNS解决方案是最有效的方法。

但是,如果由于某种原因它不起作用,我创建了一个称为PageKite(http://pagekite.net/),以使服务器从严格的防火墙后面或经常更改位置的设备上公开。它通过创建从Raspberry Pi到“前端”中继服务器的隧道来工作,该服务器通过隧道转发您的传入请求和答复。因此,只要您的Pi具有正常的Internet连接并且可以连接到中继,就可以看到您的服务器(无需进行路由器调整或ddns)。它是免费的软件,但是如果人们使用我们的在线服务进行连接(而不是在某个地方运行自己的中继),我们会要求人们为此特权付出一些代价。这与其他地方提到的localtunnel相似,除了PageKite的设计考虑了可靠性和永久连接,而不仅仅是临时测试。

祝好运!


我应该指出,使用PageKite与树莓派的目的,最好是遵循Debian的,这里的说明:pagekite.net/wiki/Howto/GNULinux/ConfigureYourSystem
BjarniRúnar

0

您将需要类似的服务DynDNS,或者为自己获取静态IP。否则,您可以考虑使用VPN。


0

这取决于您是否要永久共享您的Web内容,还是只需要偶尔的公共访问。对于后者,无需费心设置DynDNS帐户并在路由器中打开转发端口。

一个很简单的解决方案是使用LocalTunnel,这将使您的Web服务器可以通过以下域名访问:

http://8bv2.localtunnel.com

这对于共享您在计算机上托管的网站的进度非常有用。


0

我为动态ip下的多个系统提供的解决方案如下:

我的路由器上有一个来自godaddy Entrydns 1 cron作业的域,该域正在使用令牌(entrydns提供的令牌)将我的IP地址上载到entrydns。我的godaddy域下的dns服务器设置为entrydns。哦,别忘了转发:)

如果您需要,我可以为您提供更详细的分步指南,但希望您可以通过Google找出这个简单的过程:)


1
也许最好提供逐步的详细指导,特别是如果它可以帮助其他有类似问题的人。我知道谷歌搜索会有所帮助,但是我想每个问题都可以用Google回答!
kolin
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.