在 Linux 上使用 DHCP 时添加静态 IP(用于 Web 开发)

在 Linux 上使用 DHCP 时添加静态 IP(用于 Web 开发)

(这篇文章分为两部分:上半部分是我尝试过的,下半部分是我实际正在尝试做的。)

新笔记本,Mint 16(使用 NetworkManager),我尝试使用 wifi+DHCP 连接到互联网。这样很好。但我也从事 Web 开发、运行 Apache 等,并且想要拥有多个虚拟主机。我以为这只是添加一些静态 IP 的问题,但发生了一些非常奇怪的事情。

假设 wifi 路由器给我 10.1.2.3,我可以使用 或 在 wlan0 下看到它ifconfigip address show我还看到eth0没有任何 IP 地址,并且lo有 127.0.0.1。此时一切都很好。但后来我做了:

ip address add 10.1.2.61/8 scope global dev eth0 label eth0:61

(我已经在这个地址上设置了一个 Apache 虚拟主机。)看起来一切http://10.1.2.61/正常。Ping 也正常工作。但互联网肯定出问题了。例如,当我用 Google 搜索某些内容时,它现在要等很长时间才能回复。或者根本不回复。(抱歉,我还没有完全确定是哪一种原因。)

我也尝试过:

ip address add 10.1.2.61/8 scope global dev lo label lo:61

这再次起作用(ping 有效),但互联网再次中断。

我已确认 /etc/resolv.conf 没有被触及。当我使用 时, 的输出route -n没有变化dev lo,当我使用 时,dev eth0我在其中看到一个 eth0 条目,但该wlan0条目仍然正常。

当我删除添加的 IP 地址(ip address del 10.1.2.61 dev eth0)时,互联网又开始工作了。

我并不局限于这种方法。我花了很长时间阅读 NetworkManager 文档,但似乎没有涵盖这种情况。这似乎很奇怪。

实际目标

  • 能够在此笔记本上拥有​​多个 Apache 虚拟主机,我可以使用 URL(无论是 IP 地址、类似http://10.1.2.61/还是名称http://mytestsite/)访问每个虚拟主机
  • 让 URL 保持不变,这样我就可以将它们加入书签。例如http://mytestsite/some/site/part.html)
  • 它仍然可以在我的本地 LAN(我控制路由器和 DHCP 的地方)和外出(当我不控制路由器和 DHCP 时)工作。
  • 当我在我的 LAN 上时,我希望测试站点对连接到同一 wifi 路由器的其他设备可见。(这是一项可选要求:这是我唯一不确定是否可行的部分……我想如果我从 wlan0 DHCP 地址运行所有 VirtualHosts,那么它就可以工作,但我不知道如何配置 Apache 和 /etc/hosts,因为我不知道我会提前获得什么 DHCP 地址,而且当我从一个网络移动到另一个网络时,它可能随时发生变化。)

答案1

除了最后一个要求之外,您应该能够使用本地主机范围内的 IP 地址完成所有这些操作。如果您将系统设置为在 127.0.0.0/8 范围内有多个 IP(使用别名接口),则可以将 Apache 绑定到这些 IP:

/etc/network/interfaces

auto lo lo:1 lo:2
iface lo inet loopback

iface lo:1 inet loopback
ipaddress 127.0.0.11
netmask 255.0.0.0

iface lo:2 inet loopback
ipaddress 127.0.0.12
netmask 255.0.0.0

重新启动您的网络堆栈并/etc/hosts使用您的站点名称相应地编辑文件和 Apache 配置。

对于最后一个要求,您可以设置 Apache 反向代理。代理可以侦听所有接口,因此 DHCP 接口将自动包含在内。然后,您可以将 URL 转发到侦听 127.0.0.x 的接口。

答案2

对于您在笔记本电脑上本地执行的操作更简单的是,您只需输入一堆不同的名称/etc/hosts,然后让 apache 监听所有 IP 地址。

Apache 有 3 种主要方法来确定使用哪个虚拟主机来为网站提供服务。

  • IP地址
  • 端口号
  • 客户端用于访问站点的主机名

为了使您的最后一个要求半实用,就是让您的站点监听自己的端口号,以便您工作局域网上的其他人在您收到 IP 地址 10.2.1.54 时可以访问以下内容

http://10.2.1.54 默认站点
http://10.2.1.54:81 站点 1
http://10.2.1.54:82 站点 2
http://10.2.1.54:83 站点 3
http://10.2.1.54:84 站点 4
ETC

他们无法收藏这些网站,但你可以收藏

http://127.0.0.1 默认站点
http://127.0.0.1:81 站点 1
http://127.0.0.1:82 站点 2
http://127.0.0.1:83 站点 3
http://127.0.0.1:84 站点 4

如果您的主机文件中有 127.0.0.1 的额外名称,那么当您在笔记本电脑上访问网站时,您可以使用名称代替,如果您将这些条目放入家中的 DNS,则家庭局域网中的其他人也可以使用这些名称。您可能还应该为家中的笔记本电脑使用 DHCP 保留,以使此功能正常工作。

查看网站http://httpd.apache.org/docs/2.2/vhosts/examples.html有关如何将其写入 Apache 配置的一些示例。请注意在各个位置使用 *

相关内容