如果愿意,您可以在家庭系统上托管网站。不过,有一个警告。一些Internet服务提供商(ISP)不允许其客户托管自己的服务器,而其他Internet服务提供商则允许您托管。不允许家庭用户托管自己的服务器的ISP可能会阻止服务器常用端口上的流量。例如,通过阻止从Internet到分配给家庭用户的IP地址上的端口25的连接,它可以阻止某人运行自己的邮件服务器。同样,通过阻止HTTP使用的默认端口,端口80和HTTPS使用的默认端口,它可以阻止某人托管自己的Web服务器。,端口443。通过在非标准端口上运行Web服务器,某人也许能够绕过此类阻止。例如,如果将Web服务器配置为侦听端口7080上的HTTP连接,则如果您可以将该端口号提供给所有可能访问您的站点的人,他们仍然可以访问该服务器。例如,网站访问者可以使用http://www.example.com:7080/来代替http://www.example.com/sompage.html或http://10.0.0.5/somepage.html来使用somepage.html或http://10.0.0.5/sompage.html。尽管即使是该流量也可能被ISP阻止。
如果您希望只有几个朋友访问您的网站,则该解决方案可能会起作用,但如果您希望站点拥有全球互联网受众,则该解决方案可能会出现问题,因为大多数人都不习惯在访问时包含端口号网站。但是,如果您要从其他站点链接到您的站点,则只要包含端口号,该链接就可以工作。
但是,假设ISP不会阻止您托管自己的Web服务器。您将需要配置路由器,以将发往默认HTTP端口(可能还会使用HTTPS)的流量转发到局域网(LAN)上Web服务器的内部专用IP地址(如果您也将使用该协议)。这是必要的,因为大多数家庭用户都有一个路由器执行网络地址转换,以实现LAN侧路由器后面的系统与路由器“面向互联网”的外部(即广域网(WAN))之间的通信。 )。即,它们具有一个用于路由器的外部公共IP地址,但可能有多个私有IP地址用于路由器后面的系统。例如,您可能在路由器后面有一台笔记本电脑,其地址为192.168.0.4,而台式机系统的IP地址为192.168.0.5。这些专用IP地址不会通过Internet路由。家用路由器通常将执行NAT,以允许仅看到一个公共IP地址的外部系统与具有专用IP地址的路由器后面的系统通信。
大多数家用路由器都具有执行网络地址和端口地址转换的功能,并且通常很容易设置,您只需要知道必须这样做即可。某些路由器可能具有非军事区(DMZ)设置,该设置使您可以指定源自路由器外部的所有连接都将转到路由器内部的特定系统。如果您希望通过NAT / PAT可以访问家庭服务器,则可能需要为其分配一个静态IP地址,而不是一个可能会更改的地址,因为它是通过动态主机配置协议(DHCP)分配的,因此路由器可以始终将传入的连接路由到正确的系统。
除了路由器内部的系统IP地址可能会更改之外,如果您使用的是家庭网络连接,则ISP可能还会通过DHCP分配路由器的外部IP地址。假设它是xxx.xxx.10.250。明天可能是xxx.xxx.10.251。这取决于ISP通过DHCP为客户分配IP地址所使用的“租用时间”。租约时间可能是几个小时,几天,一个月等。因此,如果您告诉人们您的Web服务器可以在xxx.xxx.10.250上访问,则每当更改时,您都需要告诉他们新的地址。但是,对于某些系统,即使您的ISP可能没有为您提供静态IP地址,而是提供了动态IP地址,但只要您不更换路由器,它就可以保持不变。例如,对于我的家庭互联网服务,我不来自新路由器的媒体访问控制地址。
即使您的IP地址经常更改,您也可以从ISP购买静态IP地址。有些会按月向家庭用户出售静态IP地址,而有些则不会。
但是,当我需要能够从外部连接到家庭用户的系统进行故障排除或设置基于家庭的服务器时,我使用的解决方案是使用动态域名系统。这样,即使路由器的外部IP地址有所不同,也可以使用完全限定的域名(FQDN)(例如martijn.example.com )访问基于家庭的服务器。我使用No-IP.com,但还有其他DDNS服务。DDNS的工作方式是在路由器内部LAN侧的系统上安装软件,该系统与DDNS服务提供者系统进行定期通信,以便DDNS提供程序知道系统正在与之通信的当前外部IP地址。 。然后,DDNS提供程序将更新其域名系统(DNS)服务器,是将FQDN(例如martijn.example.com)转换为IP地址的服务器,以反映路由器的当前外部IP地址。因此,将martijn.example.com放入其浏览器的任何人都将被定向到正确的IP地址。某些路由器具有配置选项,允许您指定DDNS服务提供者,因此您甚至不需要在家庭系统上安装任何软件即可工作。您只需要拥有DDNS提供商的帐户即可。
如果您希望购买自己的域名,DDNS提供商会向您收取使用自己的域名(例如martijn.com)的费用。但是您甚至可以免费使用DDNS服务,例如,如果您愿意使用DDNS提供商提供的域名,则No-IP提供免费服务。例如,如果提供商拥有example.com,则您可以免费使用martijn.example.com,尽管您必须付费购买martijn.com。即,您可以指定一个特定的主机名,例如martijn,以与它们的域名之一一起使用。
多年来,我已经在家庭网站上使用过这种配置。如果您具有相当可靠的Internet连接,并且您的ISP不会阻止对基于家庭服务器的访问,那么它对于低流量站点实际上可以很好地工作。例如,如果您不希望每天有超过数百名访问者访问您的站点,并且还没有饱和您的可用带宽。但是,在设置基于家庭的服务器时,您需要了解一些注意事项,即我上面提到的注意事项,这可能会导致一些人建议使用托管服务。
尽管这种配置甚至可以用于小型或家庭式企业,但如果访问您的网站很关键,您的外部IP地址可以经常更改,则我不建议您将其用于小型或家庭式企业。访问您的站点时,其系统将缓存您的IP地址,以便下次访问该站点时,系统不必再次查找与该名称对应的IP地址。有生存时间(TTL)缓存的DNS条目的值,因此它们将过期,并且系统将再次查找IP地址,但是它们可能在系统上停留了几分钟甚至几小时。其他DNS服务器也缓存条目。例如,假设Mary是Comcast客户,其系统连接到martijn.example.com。她的系统可以查询Comcast DNS服务器以获取网站的IP地址。因此,现在Comcast服务器知道FQDN附带的IP地址。康卡斯特的另一位客户Bill也想访问您的网站。他以前从未访问过您的网站,因此他的系统尚未缓存martijn.example.com及其IP地址之间的转换,但是当他的系统查询Comcast DNS服务器时,如果该服务器已经知道与该服务器关联的地址, FQDN,它将从其缓存中提供答案。
因此,即使您的服务器或路由器可能在一分钟内更新了DDNS提供商的DNS服务器,如果您的IP地址发生了更改,其他人仍可能会获得旧的IP地址,因此直到他们的系统或ISP的DNS服务器都无法访问您的网站获取新的当前IP地址。由于缓存并取决于TTL设置,某些系统可能在数小时后甚至第二天仍可能尝试连接到旧IP地址。如果您只是想让家人和朋友访问您的网站,那可能不是一个严重的问题,但是如果您经营一家企业,则可能是一个无法接受的问题。
更新地址评论:
当您从域名注册商处购买域名时,通常可以选择指定应通过这些地址处的域名访问的系统的一个或多个IP地址,或者您可以暂时“停放”该名称,因此它指向属于注册服务商的系统。当您准备好指定自己的IP地址时,注册服务商通常会提供DNS服务,使您可以在需要时修改与域名相关联的IP地址。许多服务器还允许您通过其DNS服务来调整TTL值,即系统应缓存FQDN附带的IP地址的时间。因此,如果您认为可能需要经常更改IP地址,则可以指定较短的TTL。注册服务商可能具有您可以指定的最小TTL,例如5分钟或30分钟。该值通常以秒为单位指定,因此5分钟的TTL将显示为300。
因此,如果您正在使用注册服务商的DNS服务,则每次更改时都需要使用注册服务商登录帐户并手动更改与您的域名相关的IP地址。或者,您也可以使用DDNS服务提供商,以便自动进行从FQDN到IP地址的转换更改。您既可以通过DDNS服务提供商购买域名,然后默认使用其DNS服务器,也可以从其他注册商那里购买域名,然后通过该域提供的网站的配置页面为DDNS提供者的域名服务器指定IP地址域名注册商
另一种选择是运行您自己的DNS服务器。购买域名时,您可以指定应与其一起使用的名称服务器,可以是注册服务商的名称服务器,也可以是其他一些名称服务器。例如,您可能拥有与网络服务器相同的系统,即DNS服务器。您必须确保可以通过UDP和TCP IP协议在端口53(DNS的默认端口)上访问服务器。然后,您可以在服务器上创建脚本/程序,该脚本/程序定期检查以查看分配给路由器的外部IP地址并更新区域文件。您的DNS服务器上的域名。但是,设置DNS服务器比依赖DDNS提供程序要复杂得多。如果您希望采用更复杂的方法,可以找到在线设置DNS服务器的教程。BIND通常用于Linux系统上的DNS服务。Microsoft的Windows服务器版本,例如Windows Server 2012,具有Microsoft提供的DNS服务也可以使用。我建议您从注册服务商的DNS服务开始,该服务通常是免费的,但是您从注册服务商那里购买了域名后,即使您认为自己可能想走一条艰难的路来运行自己的DNS服务器。除非有人想了解Internet基础设施(例如DNS服务器)如何工作,否则对于大多数人来说,坚持注册服务商或DDNS服务提供商的DNS服务器可能是最好的选择。您还可以通过专门从事DNS服务的公司(例如OpenDNS)获得DNS服务。
但是请记住,即使您指定了较短的TTL值并进行了自动更新,在获得新IP地址的时间与Internet上所有系统停止使用之间的延迟也可能比TTL大。旧的IP地址,然后使用新的IP地址。例如,请参阅GoDaddy文章,哪些因素影响DNS传播时间?(GoDaddy是域名注册商),这说明了为什么可能需要多达48小时才能将新地址提供给Internet上的所有系统。例如,该文章指出:“某些ISP忽略TTL设置,仅每两到三天更新一次其缓存的记录。”