为不同的网络设置不同的静态 IP 地址

为不同的网络设置不同的静态 IP 地址

我对网络相对缺乏经验,但我知道在这种情况下我想要实现什么。我有一台计算机,我会在两个独立的本地网络之间移动它,但当计算机位于其中一个网络上时,我想为该机器分配一个不同的静态 IP 地址。

一个内部网络是 192.168.1.0,另一个是 192.168.2.0。因此,我希望一个静态 IP 地址为 192.168.1.x,另一个为 192.168.2.x。

有没有办法分配两个静态 IP,但只有一个 IP 生效,具体取决于所连接的网络?/etc/network/interfaces例如,这可以纯粹在 中完成吗?

我很可能误解了情况,所以如果有不同的方法可以实现我的目标,那么我很高兴听到解决方案。

答案1

可能有更好的解决方案(至少更接近您的要求),但我想到的是:

  • 配置每个位置的 DHCP 服务器以为您的 MAC 地址分配静态 IP,并在笔记本电脑上让它自动从 DHCP 获取 IP。如果您在每个地方都有路由器访问权限,这是迄今为止最简单的方法。

  • 接下来的三个本质上是相同的解决方案 - 拆分连接:

    • 在一个位置添加并使用不同的网卡。
    • 将 USB 网卡留在两根以太网电缆上(比原生千兆慢)。
    • 使用两个无线连接。网络管理器可以自动完成困难的工作,这样您就可以从一个地方漫游到另一个地方。
  • 为接口启动时编写一些脚本。我不知道事件的真正名称 - 但您本质上想知道电缆何时插入并且整个事情准备就绪。您可以只为一个网络设置静态设置并等待其启动。

    • 如果你知道启动时连接已建立,则使用 upstart 进行绑定,或者考虑这样做连接无线网络后调用脚本如果您在启动后建立连接。

    • 网络启动后,进行一些服务发现。网关是否位于您预期的位置?是否还有其他已知服务器可以 ping 通?

    • 如果一切正确,则保留原配置,否则切换到备用网络配置。您可以使用手动设置,ifconfig也可以在网络管理器中设置两个连接,然后只需使用nmcli即可切换您所使用的连接。

在这三种方式中,DHCP 是最简单的。

答案2

您应该创建一个虚拟接口并为其分配一个 IP 地址。
如果您想配置更多静态 IP 地址,则需要编辑

/etc/网络/接口

你需要输入以下几行替换eth0与您的网络接口卡。

主网络接口

auto eth0 
iface eth0 inet static
address 192.168.1.2
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

虚拟网络接口

要为您的机器分配第二个 IP 地址,您需要再次编辑/etc/网络/接口文件。第二个 IP 名为 eth0:0,第三个 IP 名为 eth0:2,依此类推...因此只需将它们添加到文件中即可:

sudo vi /etc/network/interfaces

auto eth0:0
iface eth0:0 inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1

输入所有详细信息后,您需要使用以下命令重新启动网络服务

sudo /etc/init.d/networking 重启

相关内容