在本指南中,我将指导您完成如何在路由器上设置树莓派端口转发以及如何设置树莓派动态 DNS 。两者相辅相成,但是如果您希望通过 Internet 访问 Web 应用程序,则端口转发非常重要。
我在页面下方准备了一个视频,带您逐步了解设置这两种方法所需的全部知识。
请记住,开放端口会增加安全风险。诸如 Fail2ban 之类的工具将有助于保护树莓派免受入侵。另外,请确保选择安全可靠的密码。
如果您喜欢本教程,请订阅,以便您可以随时关注所有最新的树莓派真棒项目,指南等。
视频
重要的是要知道视频使用的是比下面提供的文本版本更旧的方法。
两种方法都可以正常工作,但是如果您正在寻找最新的方法,请确保签出全文版本。
设置树莓派端口转发
树莓派端口转发是一种允许外部访问 Pi 的方法。为此,我们将需要更改路由器上的某些设置。
所有路由器都是不同的,但是我会尽力使它尽可能通用,但是这些说明与您的路由器之间仍然可能存在很多差异。我在本教程中使用的路由器是 TP -Link AC1750 无线双频千兆路由器。
1 在连接到本地网络的计算机上,通过网络浏览器连接到路由器管理页面。
路由器 IP 通常是 192 .168.1.1 或 192 .168.1.254
2 输入路由器的用户名和密码。默认情况下,这通常是 admin 和 admin 。
3 在路由器管理页面中,转到转发 -> 虚拟服务器。
4 在此页面上输入以下内容
- 服务端口:这是外部端口。
- IP 地址:这是 Pi 的 IP 。
- 内部端口:将此设置为 Pi 的应用程序端口。 (例如,Web 服务器在端口 80 上运行)
- 协议:除非指定,否则将其设置为 ALL 。
- 状态:将其设置为启用。
5 这些设置会将目的地为指定端口的流量路由到树莓派上的端口。
6 您现在应该可以连接到网络外部的树莓派上的应用程序。
检查端口是否正确转发的最佳方法是让朋友连接或进入本地网络之外的某个地方 (VPN 可以实现此目的)。
以下是使用树莓派设置 IP 地址为”192.168.1.103” 的 Web 服务器在端口 80 上运行的访问权限的示例。
故障排除
尝试设置 Pi 进行外部访问时,可能会发生一些问题。以下是设置树莓派端口转发时可能遇到的一些问题。
* 仔细检查您的路由器设置,并确认它们正确无误。
* 检查您的外部 IP 是否未更改。 ISP 将为您提供动态 IP ,而不是静态 IP 。
* 重新启动路由器可能会解决问题。
* 重新启动树莓派可能还会清除所有问题。
设置树莓派动态 DNS
如果您的 ISP 为您提供了动态 IP (一个经常更改的 IP),那么可能值得设置树莓派动态 DNS (有时路由器具有此功能)。这种方法意味着即使您的外部 IP 发生更改,您也将始终能够连接到 Pi 上的应用程序。
首先,我们需要安装 DDclient ,这是一个非常简单的过程,安装时间不会太长。
1 首先,运行以下行以安装 DDclient 。请注意,只需跳过安装过程,我们将覆盖这些设置。
sudo apt-get update
sudo apt-get install ddclient libjson-any-perl libdata-validate-ip-perl
2 毕竟,我们现在需要用较新版本的 DDclient 替换该版本。此更新版本将为 Cloudflare 等服务提供更好的支持。要下载最新版本,请输入以下命令。
wget https://files.pimylifeup.com/portforwarding/ddclient-3.9.1.tar.gz
tar -zxvf ddclient-3.9.1.tar.gz
3 下载和解压缩完成后,我们将使用以下命令通过将新二进制文件复制到当前二进制文件中来使用新二进制文件:
sudo cp -f ddclient-3.9.1/ddclient/usr/sbin/ddclient
4 由于在最新版本的 DDclient 中进行了更改,因此配置文件的位置已移动。我们将使用以下命令来重新定位第一次安装随附的命令。
sudo mkdir /etc/ddclient
sudo mv /etc/ddclient.conf/etc/ddclient5 ddclient完成安装后,我们现在将直接编辑配置文件以进行一些重要更改。使用以下命令启动文件编辑器。
sudovim/etc/ddclient/ddclient.conf
6 我们将需要在此文件中添加几行,并且将在所有不同的配置中使用这些相同的行。它们定义了是否使用 SSL 以及如何获取树莓派的外部 IP 地址。
7 将以下内容添加到文件中带注释的标题下方,同时删除文件中的其他任何内容。稍后,我们将在使用 No -IP 或 Cloudflare 的指南中为文件添加更多内容。
use = web,web = checkip.dyndns.com /,web-skip ="IP地址"
ssl =是
8 好,现在完成了,我们可以继续进行以下几步,以了解如何使用动态 DNS 提供程序设置 ddclient 。
为了快速指出,CloudFlare 和 No -IP 之间的主要区别在于您需要拥有一个域名才能使用 CloudFlare 。 No-IP 然而提供免费的子域,这意味着它是一项免费的服务。
需要注意的是,尽管 Cloudflare 并不是真正的动态 DNS 提供商,但借助其 API ,我们可以以相同的方式使用它。 Cloudflare 还提供了更多保护,例如免费 SSL ,匿名 IP ,DDOS 保护等等。您可以关闭 Cloudflare 功能,并根据需要将其用作 DNS 提供程序。您可能会发现仍然需要这样做。
使用 Cloudflare 的动态 DNS
1 在开始将 Cloudflare 用作动态 DNS 提供程序之前,您需要购买域名。如果您已经拥有域名,则可以跳至本指南的下一步。否则,您可以从某个地方 (例如 NameCheap)(https://go.pimylifeup.com/wV60yP/namecheap) 购买域名。
2 现在,您需要注册 Cloudflare ,不用担心,因为它不会花费您任何费用。
3 注册并按照给出的步骤更新域名,以指向 Cloudflare 的 DNS (域名服务器)。
4 接下来,您将需要可以在帐户页面上找到的 Cloudflare API 密钥。您需要全局 API 密钥,暂时将其复制并粘贴到安全的位置。
5 现在,我们需要将 Cloudflare 详细信息输入到 DDclient 配置文件中。通过运行以下命令将其打开。
sudovim/etc/ddclient/ddclient.conf
6 更新或将以下行添加到文件底部,请确保将用户名,api-key,区域和主机名替换为用于设置 Cloudflare 帐户的用户名。
该区域是域名本身,然后在下面是您要更新的记录 / 域。输入子域或主域本身。确保该记录存在于 DNS 页面上的 Cloudflare 中,它必须是”a” 记录。
协议= cloudflare
server = api.cloudflare.com/client/v4
登录名=您的电子邮件
密码=您的 API 密钥
zone = your_domain.com
everything.your_domain.com
7 更新文件后,您可以使用_Ctrl-X_保存并退出。
8 现在,只要您在_step 3._中输入了正确的信息,我们就需要重新启动 DDclient ,一切都会正常进行。使用以下命令重新启动动态 DNS 客户端。 (有时您需要重新启动两次才能进行更改)
sudo /etc/init.d/ddclient restart
9 现在应该在 Cloudflare 中更新 IP ,并且您现在应该能够使用所选的域名连接到树莓派。您可能需要关闭 Cloudflare 代理才能使其正常工作,您可以通过以下步骤进行操作:转到 Cloudflare 中的 DNS 页面,然后单击域记录旁边的云,使其变为灰色。
现在,您将要继续本指南的” 将 ddclient 作为守护程序运行” 部分,以便可以自动更新 IP ,否则,每次要更新 IP 时都需要手动重新启动 ddclient 。
使用 NOIP 的动态 DNS
1 要使用 NOIP 设置树莓派动态 DNS ,您需要在其网站上创建一个免费帐户。确保记下您选择的用户名,密码和主机名,因为在下一步中我们将需要它们。
2 创建完帐户后,是时候将其输入到 DDclient 配置文件中了。您可以通过运行以下命令来打开配置文件。
sudovim/etc/ddclient/ddclient.conf
3 现在,更新或在文件底部添加以下几行,确保将用户名,密码和主机名替换为用于创建 No -IP 帐户的用户名,密码和主机名。
协议= dyndns2
server = dynupdate.no-ip.com登录名=您的用户名密码=您的密码
your_domain.com
4 更新此文件后,请保存并使用_ctrl-X_退出。
5 现在,我们需要做的就是重启 ddclient ,只要您在_step 3._中输入了正确的信息,一切就可以正常进行。使用以下命令重新启动客户端。
sudo /etc/init.d/ddclient restart
6 现在,您的 IP 地址应该已更新,并且只要打开了正确的端口,您就可以使用所选的域名连接到树莓派。
继续下面的教程,以确保 ddclient 自动更新 IP 。
将 ddclient 作为守护程序运行
由于我们不仅希望 IP 地址更新一次,因此我们仍然需要设置 ddclient 作为守护程序运行,以便它可以定期检查 IP 地址的更改并在必要时通知所选的动态 DNS 提供商。
1 要使 DDclient 作为守护程序运行,我们需要对配置文件进行更改。运行以下命令以开始编辑文件。
sudo vim /etc/default/ddclient
2 在文件中,您需要更改 run \ _daemon,使其与下面的行匹配。此更改基本上告诉它以守护程序模式运行 ddclient 。
run_daemon ="true"
3 您还需要检查此文件中的其他两行,以确保它们是错误的。否则,ddclient 将无法在守护程序模式下正确运行。确保以下两行匹配,如果将它们设置为 true ,则将它们更改为 false 。
run_dhclient ="false"
run_ipup ="false"
4 按_Ctrl + X_,然后按_Y_将更改保存到配置文件。
5 现在输入以下命令以将 ddclient 作为服务启动。
sudo service ddclient 启动
6 为确保服务已正确启动,您可以使用以下命令检查其状态。
sudo service ddclient 状态
7 一些动态 DNS 提供商要求您非常频繁地更新 IP 地址。我们可以通过强制 ddclient 每周更新一次 IP 地址来确保您不会超时。为此,我们首先使用以下命令打开每周的 crontab 。
sudo vim /etc/cron.weekly/ddclient
8 向该文件添加以下行。
#!/bin/sh
/usr/sbin/ddclient -force
9 保存更改,方法是先按_Ctrl-X_,然后按_Y_接受更改。
10 最后,我们需要允许我们的新脚本执行,并且可以通过执行以下操作来快速完成此操作。
sudo chmod + x /etc/cron.weekly/ddclient
11 ddclient 现在应该可以作为守护程序成功运行,请使用以下命令确保其正确运行。
sudo service ddclient 状态
12 这应该是使一切平稳运行所需的全部工作。
如果您发现某些问题无法正常运行,则以下几行非常适合调试。它将查找大量行,只是查找可能看起来像错误或提示其不起作用的任何内容。
sudo ddclient -daemon = 0 -debug -verbose -noquiet
只要正确设置了树莓派端口转发设置,您现在就可以使用域名在本地网络之外访问您的 Pi 。如果上述说明对您不起作用,那么您始终可以尝试下面详细介绍的旧方法。
设置动态 DNS (旧方法)
下一部分是一个旧过程,我用上面的方法替换了。它仍然应该起作用,但是上面的一个应该更容易启动和运行。
1 首先,您需要在 No-IP 上创建一个帐户 (确保未选中” 稍后创建主机名”)
2 现在在树莓派上输入以下命令
sudo bash
cd/usr/local/src /
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
cd noip-2.1.9-1 /
进行安装
* 现在将为您提供一些您需要设置的设置。
* 输入您想将 Pi 连接到的帐户的” 电子邮件” 和” 密码”。
* 接下来设置更新间隔,默认间隔为 30 分钟。 (这会检查 IP 是否已更改)
* 现在,您还可以设置一些在 IP 更新时运行的内容。
3 现在,在 rc .local 文件的最后一行_exit 0_之前添加新行,以确保 no -ip 在重启时自动启动。为此,请输入以下命令:
vim /etc/rc.local
4 在出口 0 行的上方输入以下行。
/usr/local/bin/noip2
5 使用 CTRL + X 退出 (请确保保存)
6 您可以使用以下命令启动 no -ip:
sudo /usr/local/bin/noip2
7 使用以下命令检查状态:
sudo /usr/local/bin/noip2 -S
8 您可以使用以下命令将其关闭。用 - S 命令中的 pid 替换_pid_。
sudo /usr/local/bin/noip2 -K'pid'9 如果需要,您可以通过输入以下命令来重新创建默认配置文件:
sudo /usr/local/bin/noip2 -C
现在,您应该具有树莓派动态 DNS 服务器设置,并且能够使用域名而不是 IP 进行连接。即使您的 IP 地址更改,此名称也将保持不变。
此设置意味着您将始终能够连接到 Pi 或其他家庭网络设备,而无需查找新的外部 IP 。
如果您正在寻找需要访问 Internet 的项目,则应该查看树莓派 Web 服务器或什至网络摄像头服务器。