我正在尝试以低成本在我的家庭局域网上建立一个开发环境。我购买了 3 台带有额外 RAM 的 PC 来充当“服务器”,并计划在这 3 台“服务器”和我的开发机器(笔记本电脑)之间只使用我的 Netgear(无线)路由器。
由于这些不是真正的服务器,我不想让它们 24/7/365 全天候运行,因为它们可能很快就会坏掉,而我又没有足够的预算来更换零件。因此,一个很大的限制是我需要能够每天打开和关闭它们。除此之外,可能还有一些开发“小块”,我在那里编码几天,然后关闭它们以节省电量/硬件,然后直到周末我才能回到项目中。我提到这一点只是为了以防我的路由器有某种具有明确 TTL 的缓存等。
据我了解,每次我启动这些机器时,路由器都会为它们分配一个新的 IP。这将使持续开发成为我的噩梦,因为我的应用程序和构建脚本都需要在其整个生命周期内引用这三台服务器。例如,一台服务器将是我的 Apache Ivy 和 Subversion 存储库,因此我的 Ant 构建脚本将需要引用http://<build-server-ip>/svn/my-app/trunk
等。如果<build-server-ip>
每次我重新启动服务器时 都在不断变化,这将使开发变得非常不连贯和痛苦。
我想知道这些所谓的“静态路由”(或类似的东西)是否能帮助解决我的问题。所以我问:有没有办法做一些路由器魔法并且无论我打开/关闭多少次,都以某种方式为每个服务器分配一个静态的专用 IP 地址?
具体内容:
- 我的路由器:Netgear WGR614v7
- 我的服务器(全部 3 个相同):运行 Ubuntu Server 12.04 的 Acer 台式机
答案1
您所说的“路由器魔法”称为“预留” - 它基本上允许您告诉设备上运行的 DHCP 服务器始终将特定 IP 分配给特定 MAC 地址。我很确定您的路由器有此功能。
@RedGrittyBrick 是正确的,但总有那么一小点可能发生变化或出错(例如,您必须重置路由器,因为它是消费级路由器,所以您在某些时候会这样做),因此,如果您希望 100% 可靠地知道特定机器的 IP 地址,请设置 DHCP 预留或手动分配 IP。在“现实生活中”,服务器通常设置有静态 IP 地址,而不是通过 DHCP 获取配置信息。
在服务器上分配 IP 不会导致服务器将分配情况告知任何其他机器。您必须手动记录设置。
“静态路由”会告诉您的机器或路由器,哪个特定的“更下游”路由器会将流量转发到一组特定的目的地。它与分配 IP 地址无关。
答案2
动态配置
一般来说,更新 DHCP 租约的计算机会提供以前使用的地址,并且可能会重新分配该地址。
只要您使用 DNS 名称并且将 DHCP 服务器用作您的本地 DNS 服务器,更改 IP 地址就无关紧要。
您通常可以配置大多数路由器进行 DHCP 预留,以便始终为每个设备分配相同的 IP 地址(基于刻录在其以太网适配器上的特定 MAC 地址)
静态配置
然而对于三或四台电脑来说,静态配置很容易管理。
如果有大量计算机,那么四处走动、登录每台计算机、配置静态 IP 地址、子网掩码、默认网关、DNS 服务器或本地主机表等可能非常繁琐。跟踪所有这些需要仔细记录,保存 MAC 地址列表并注意意外的 IP 地址重复,了解如何识别和诊断错误配置等。如果只有四台计算机,这不是问题。
答案3
机器获得 IP 地址有两种基本方法。一种是静态的,另一种是动态的。在静态配置中,我坐在机器前,配置一个静态的、不变的 IP 地址(重新启动后仍使用)、子网掩码(此网络中有多少个 IP 地址)和一个网关(我要从哪里退出此网络)。在动态配置 (DHCP) 中,我为路由器配置一个连续的 IP 地址池和一个网关,并让它分发这些 IP 地址。
还有第三个混合选项。我配置了池,但为每个系统配置了一个 IP 地址。这在 DHCP 配置中称为静态 IP。很棘手,不是吗?
为了简洁和一致性,我建议设置静态 IP。这样可以保证 IP 地址不会更改,并且如果您设置了域控制器(活动目录或开放目录)并选择构建 DNS 服务器,它就可以正常工作。您必须使用以下信息配置路由器:
静态网络:您已将网络限制从 5(如果您使用网络附加存储或打印机)设置为 <10。如果您想尝试某些事情,那么最多可以有 254 个主机(单独的 IP 地址)怎么样?
192.168.0.0 到 192.168.0.255(192.168.0.0 将是网络地址,192.168.0.255 将是广播地址,稍后解释)。
要告诉路由器我们想要使用此地址范围,必须将其配置为使用 192.168.0.0 网络 IP 地址和 255.255.255.0 子网掩码。最后一个 0 为您提供了从 0 到 255 的网络 IP 地址范围。因此,您网络中的有效 IP 地址将是 192.168.0.0 到 192.168.0.255(前三个“八位字节”或 192 168 和 0 不变,只有最后一个会改变)。因此,您总共有 2^8 个 IP 地址或 256 个地址(请记住其中两个已经分配了 .0 和 .255),所以实际上您还剩下 254 个。
您可以使用剩下的任何地址,不必按顺序使用它们。我建议从 192.168.0.1 开始,当每个系统都有 IP 地址时停止。为简单起见,在您的配置中分配路由器 192.168.0.1、服务器 A 192.168.0.2、服务器 B 192.168.0.3、服务器 C 192.168.0.4 和您的开发机器 192.168.0.5。是的,如果您愿意,您可以反转顺序,或仅使用偶数,或使它们全部为十的幂(.10、.20、.30、.40、.50)。我只是做简单的。
现在您已经有了网络设计,您需要在每台设备上配置以下内容:
IP地址:
子网掩码:255.255.255.0
网关:对于除路由器之外的所有设备,网关都是路由器的 IP 地址,或者 192.168.0.1(对于路由器,网关是您的 ISP 提供的 IP 地址)。想象一下您的网络和 ISP(或您连接到的任何网络)之间的静态路由。
此系统的一些优点。通过不分发 DHCP 地址,连接到您的网络的新设备不会默认获得 IP 地址。必须对其进行配置。这意味着人们在您不知情的情况下连接到您的网络会稍微困难一些。
另一个好处是,如果你在 Ubuntu 机器上配置 VPN 服务器,你可以远程连接。这里就不提供相关说明。
此外,您不必担心 MAC 地址之类的事情,只需担心 IP 地址。
有了这些,您就应该有一个网络了。如果您想知道如何配置每个单独的盒子,我相信谷歌会帮助您。请记住,这只是我向您介绍的基本网络配置。没有花哨的东西,这样配置、故障排除和安全性都很容易,因为您要处理的变量更少。请记住,在此配置下,您已将 IP 地址硬编码到每个设备。路由器只是在移动流量。有什么问题吗?
哦,回答你的问题,是的,如果将静态路由写入非易失性存储设备,那么它在路由器重启后仍然可以工作,但这与你显然想要问的问题不同。
答案4
在 Ubuntu Server 上,要设置静态 IP 地址,您需要编辑文件/etc/network/interfaces
使其看起来像这样(当然,请将address
、netmask
和 改为您自己的)。gateway
auto eth0
iface eth0 inet static
address 10.0.0.100
netmask 255.255.255.0
gateway 10.0.0.1
引自这里:
要将系统配置为使用静态 IP 地址分配,请将静态方法添加到文件 /etc/network/interfaces 中相应接口的 inet 地址系列语句中。以下示例假设您正在配置标识为 eth0 的第一个以太网接口。更改地址、网络掩码和网关值以满足您的网络要求。