外网访问树莓派,详细介绍端口转发和动态DNS系统

在本指南中,我将带你了解如何在路由器上设置Raspberry Pi端口转发,同时设置Raspberry Pi动态DNS。这两者相辅相成,如果你想通过互联网访问网络应用,端口转发是非常重要的。

raspberry-pi-dynamic-dns-1.jpg

重要的是要记住,开放端口会增加安全风险。Fail2ban等工具将有助于保护你的Raspberry Pi免受入侵。另外,请确保你选择强大、安全的密码。

设置Raspberry Pi端口转发

树莓Pi端口转发是一种可以让外部访问Pi的方法。要做到这一点,我们将需要改变路由器上的一些设置。

所有的路由器都是不同的,但我将尝试,并使这作为通用的可能性,但仍可能有很多的差异。我在本教程使用的路由器是TP-Link AC1750无线双频千兆路由器.

1. 在连接到本地网络的计算机上,通过网页浏览器连接到路由器管理页面。路由器IP一般为192.168.1.1或192.168.1.254。

2. 输入路由器的用户名和密码。默认情况下,通常是admin与admin。

3. 在路由器管理页面前往转发->虚拟服务器。

4. 在本页输入以下内容

  • 服务端口:这是外部端口。
  • IP地址: 这是Pi的IP。
  • 内部端口:设置为Pi的应用端口。(例如,网络服务器运行在80端口)
  • 协议。除非指定,否则设置为ALL。
  • 状态。设置为启用。

5. 这些设置将把指定端口的流量路由到Raspberry Pi上的端口。

6. 现在您应该可以连接到您网络之外的Raspberry Pi上的应用程序。检查你的端口转发是否正确的最好方法是找一个朋友来连接,或者去本地网络以外的地方(VPN可以实现这一点)。

下面是一个设置访问在80端口上运行的Web服务器的例子,Raspberry Pi的IP为192.168.1.103。

raspberry-pi-port-forwarding.jpg

疑难解答

在尝试设置Pi的外部访问时,可能会出现一些问题。以下是您在设置Raspberry Pi端口转发时可能遇到的几个问题。

  • 仔细检查你的路由器设置并确认它们是正确的。
  • 检查你的外部IP有没有改变。ISP会给你提供一个动态IP而不是静态IP。
  • 重新启动路由器可能会清除问题。
  • 重新启动Raspberry Pi也可能清除任何问题。

设置Raspberry Pi动态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/ddclient

5. ddclient安装完成后,我们现在直接去编辑配置文件,进行一些关键的修改。使用下面的命令启动该文件的编辑器。

sudo nano /etc/ddclient/ddclient.conf

6. 我们需要在这个文件中添加几行,我们将在每个不同的配置中使用这些相同的行。它们定义了是否使用SSL以及如何获取Raspberry Pi的外部IP地址。

7. 在文件中的注释头下面添加以下内容,也要删除文件中的其他内容。后面我们会在使用No-IP或Cloudflare的指南中对文件进行补充。

use=web, web=checkip.dyndns.com/, web-skip='IP Address'
ssl=yes

ddclient-config-file.png

8. 好了,现在已经完成了,我们可以进行接下来的几个步骤,如何用动态DNS提供商来设置ddclient。

只想快速指出,CloudFlare和No-IP的主要区别在于,你需要拥有一个域名才能使用CloudFlare。No-IP然而提供免费的子域名,这意味着它是一个无成本的服务使用。

需要注意的是,虽然Cloudflare并不是真正意义上的动态DNS提供商,但由于其API的存在,我们也可以同样使用它。Cloudflare还提供了更多的保护功能,比如免费SSL、匿名IP、DDOS保护等。如果你愿意的话,你可以关闭Cloudflare的功能,只把它作为一个DNS提供商使用。你可能会发现,无论如何你都需要这样做。

使用Cloudflare的动态DNS

1. 在您开始使用Cloudflare作为动态DNS提供商之前,您需要购买一个域名。如果你已经有一个域名,你可以跳到本指南的下一步。否则,您可以从某个地方购买域名,如NameCheap。

2. 现在你需要注册Cloudflare,不要担心,因为它不会花费你任何费用。

3. 注册并按照给出的步骤更新你的域名指向Cloudflare的DNS(域名服务器)。

4. 接下来,你将需要Cloudflare API-key,你能够在账户页面找到。你要的是全局API密钥,先把这个复制粘贴到安全的地方。

raspberry-pi-cloudflare-api-keys.png

5. 现在我们需要在DDclient配置文件中输入Cloudflare的详细信息。通过运行以下命令打开它。

sudo nano /etc/ddclient/ddclient.conf

6. 更新或添加以下行到文件底部,确保将用户名、api-key、zone和主机名替换为你用来设置Cloudflare账户的内容。

区域是域名本身,然后下面是你要更新的记录/域名。无论是输入子域还是主域本身。确保记录存在Cloudflare内的DNS页面上,它将需要是一个 “a “记录。

protocol=cloudflare
server=api.cloudflare.com/client/v4
login=your_email
password=your_api-key
zone=your_domain.com
anything.your_domain.com

7. 更新文件后,可以用Ctrl-X保存并退出。

8. 现在,我们需要做的就是重启DDclient,只要你在步骤3中输入了正确的信息,一切应该都能正常工作。使用以下命令重启动态DNS客户端。(有时你需要重启两次才能进行更改)

sudo /etc/init.d/ddclient restart

9. 现在IP应该在Cloudflare中更新了,您现在应该可以使用您选择的域名连接到您的Raspberry Pi。你可能需要关闭Cloudflare代理才能工作,你可以通过进入Cloudflare内的DNS页面并点击域名记录旁边的云,使其变成灰色。

cloudflare-proxy.png

现在你要继续学习本指南中的 “将dclient作为守护进程运行 “一节,这样你就可以让IP自动更新,否则每次更新IP时,你都需要手动重启dclient。

使用NOIP的动态DNS

1. 要设置Raspberry Pi动态DNS与NOIP,您需要在他们的网站上创建一个免费账户。确保你记下用户名,密码和你选择的主机名,因为我们将在下一步需要它们。

raspberry-pi-no-ip-signup.png

2. 创建完账号后,就可以把这些输入到DDclient配置文件中了。您可以通过运行以下命令打开配置文件。

sudo nano /etc/ddclient/ddclient.conf

3. 现在,更新或在文件底部添加以下几行内容,确保将用户名、密码和主机名替换为你用来创建No-IP账户的内容。

protocol=dyndns2
server=dynupdate.no-ip.com
login=your_username
password=your_password
your_domain.com

4. 更新此文件后,保存并使用ctrl-X退出。

5. 现在,我们需要做的就是重启ddclient,只要你在步骤3中输入了正确的信息,一切都应该是正常的。使用以下命令重启客户端。

sudo /etc/init.d/ddclient restart

6. 您的IP地址现在应该已经更新了,您将能够使用您选择的域名连接到您的Raspberry Pi,只要正确的端口是开放的。

继续下面的教程,确保ddclient自动更新IP。

作为守护进程运行dclient

由于我们并不只是想让IP地址更新一次,我们还需要将dclient设置为守护进程运行,这样它就可以定期检查IP地址的变化,并在必要时通知所选的动态DNS提供商。

1. 要使DDclient以Daemon的形式运行,我们需要对配置文件进行修改。运行以下命令开始编辑该文件。

sudo nano /etc/default/ddclient

2. 在文件中,你需要修改run_daemon,使其与下面的一行相匹配。这个改动主要是让它在守护进程模式下运行ddclient。

run_daemon="true"

3. 您还需要检查该文件中的另外两行,确保它们是假的。否则,dclient将无法在守护模式下正确运行。确保以下两行是匹配的,如果它们被设置为true,则将它们改为false。

run_dhclient="false"
run_ipup="false"

4. 按Ctrl+X,然后按Y键保存对配置文件的更改。

5. 现在输入下面的命令,将 ddclient 作为一个服务来启动。

sudo service ddclient start

6. 为确保服务已正确启动,您可以使用以下命令检查其状态。

sudo service ddclient status

7. 一些动态DNS提供商要求您频繁地更新您的IP地址,我们可以帮助确保您不会因为强迫dclient每周更新一次IP地址而超时。我们可以通过强制 ddclient 每周更新一次 IP 地址来帮助确保您不会被淘汰。我们可以通过使用下面的命令,首先打开每周一次的crontab来实现。

sudo nano /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 status

12. 这应该是你需要做的所有事情,以使一切顺利进行。

如果你发现某些东西不能正常工作,那么下面这行就很适合调试。它将会吐出大量的行,只要寻找任何可能看起来像一个错误或提示为什么它不工作的东西。

sudo ddclient -daemon=0 -debug -verbose -noquiet

只要你正确设置了Raspberry Pi的端口转发,你现在应该可以在本地网络之外使用域名访问你的Pi。如果上面的说明对你不起作用,那么你可以随时尝试下面详细介绍的老方法。

设置动态DNS(旧方法

接下来这部分是一个老流程,我用上面的方法代替了。它应该还能用,但上面的那个应该更容易上手和运行。

1. 首先,你需要在No-IP上创建一个账户(确保 “稍后创建一个主机名 “没有被选中)。

2. 现在在Raspberry Pi上输入以下命令: 1.

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/
make install
  • 现在您将看到一些您需要设置的设置。
  • 输入您希望连接Pi的帐户的电子邮件和密码。
  • 接下来设置更新时间间隔,默认为30分钟。(这样可以检查IP是否有变化)
  • 你现在也可以设置一些东西,每当IP更新时就会运行。

raspberry-pi-no-ip.png

3. 现在在rc.local文件的最后一行exit 0之前添加一行新的内容,这将确保no-ip在重启时自动启动。

nano /etc/rc.local

4. 在0号出口线的正上方输入以下一行。

/usr/local/bin/noip2

5. 使用CTRL+X退出(确保保存)

6. 你可以用以下命令启动no-ip。

sudo /usr/local/bin/noip2

7. 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

现在你应该已经设置了一个Raspberry Pi动态DNS服务器,并且能够用域名而不是IP进行连接。即使你的IP地址发生变化,这个名字也会保持不变。

如果你正在寻找一个需要接入互联网的项目,可以看看看看Raspberry Pi Web服务器、mumble服务器甚至网络摄像头服务器。

平均: 3 / 5. votes: 2

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 外网访问树莓派,详细介绍端口转发和动态DNS系统

赞 (0)

评论

4+7=