![为不同的网络设置不同的静态 IP 地址](https://linux22.com/image/822750/%E4%B8%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BD%91%E7%BB%9C%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E9%9D%99%E6%80%81%20IP%20%E5%9C%B0%E5%9D%80.png)
我对网络相对缺乏经验,但我知道在这种情况下我想要实现什么。我有一台计算机,我会在两个独立的本地网络之间移动它,但当计算机位于其中一个网络上时,我想为该机器分配一个不同的静态 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 重启