网络切换问题

网络切换问题

我有一台运行 Debian 的台式电脑,安装了两个网卡。一张网卡连接到安全的公司网络并需要静态 IP。另一个网卡 (eth1) 连接到 dlink 路由器,然后连接到具有 DHCP 寻址的电缆调制解调器。

我想创建一个脚本来在两个网络之间切换。我想确保两个网络没有同时连接。现在,我的脚本检查每个接口的打开/关闭状态,并使用 ifup/ifdown 切换它们。然而,我在尝试切换网络时遇到了许多问题,我将尝试概述这些问题,但我感觉我只是以错误的方式解决这个问题。

如果我配置 /etc/network/interfaces 以反映公司网络连接所需的静态 IP 设置和电缆连接所需的 DHCP,那么我会收到错误“RTNETLINK 答案:文件存在”,因为我在中定义了多个网关文件。

如果我通过“路由添加”定义网关并包含计量 ifup 将不会启动 eth0。如果我在接口文件中未定义 eth0 和 eth1 并使用网络管理器来管理它们,ifup 将不会启动任何一个接口。在这两种情况下,当我尝试使用 ifup 时,我都会收到错误“无法启动 eth#”(将 # 替换为 0 或 1),并且没有进一步的详细解释。

如果我将 ifup/ifdown 替换为“ifconfig eth# up/down”,则接口可以正常启动和关闭,但 resolv.conf 中的 DNS 设置不会更新,因此我无能为力。添加“resolvconf -u”似乎也不起作用。

如果我在切换后手动编辑 resolv.conf,我可以让任何网络上的一切正常工作,但我希望它尽可能自动化和简单。非常感谢您提供的任何帮助。

- -更新 - -

/etc/网络/接口

auto lo
  iface lo inet loopback

auto eth0
  iface eth0 inet static
  address 10.0.0.152
  netmask 255.255.255.0
  gateway 10.0.0.1
  network 10.0.0.0
  broadcast 10.0.0.255
  dns-search company.com
  dns-nameservers 10.0.0.2 10.0.0.3 10.0.0.4
  meter 100  #without this line I get RNETLINK answers: file does not exist

auto eth1
  iface eth1 inet dhcp  #assigns an address in the 192.168.0.0/24 space with 192.168.0.1 as DNS
  meter 200  #without this line I get RNETLINK answers: file does not exist

/etc/resolv.conf

nameserver 10.0.0.2
nameserver 10.0.0.3
nameserver 10.0.0.4
search company.com cable.provider.com

除非我手动编辑该文件,否则我的 resolv.conf 始终具有 eth0 连接的 DNS 服务器以及搜索路径中的两个域。为了使电缆连接正常工作,我必须删除其他名称服务器线路并添加 192.168.0.1,为了使公司连接正常工作,我只需删除电缆提供商搜索路径。

答案1

DHCP 设置不应包含 中的网关地址/etc/network/interfaces。例如,要在 eth0 上配置 DHCP,您只需要至少以下几行:

auto eth0
    iface eth0 inet dhcp

一旦配置正确ifup并且ifdown应该正常工作,那么您可以在更改接口状态时放置任何想要运行的脚本/etc/network/if-up.d& /etc/network/if-down.d。但是,如果您的 DHCP 服务器设置正确,它应该向其客户端提供 DNS 配置,因此不需要手动配置它

编辑

要自动更改 DNS 设置,您需要向 中的每个相应接口添加必要的配置/etc/network/interfaces,即使该接口使用 DHCP。当使用目录中的挂钩脚本调用&时,
DNS 设置/etc/network/interfaces将被传递到。 resolvconfifupifdown/etc/network/if-(up|down).d

当您使用它打开一个界面时,ifup它的 DNS 设置会附加到/etc/resolv.conf,这就是您所遇到的情况。相反,当使用 拆除界面时,相同的设置也会被删除ifdown。但即使您使用ifdown,如果没有静态 DNS 设置,/etc/network/interfaces则该接口的设置也不会被删除/etc/resolv.conf

所以你的条目eth1应该是这样的:

auto eth1    
    iface eth1 inet dhcp  #assigns an address in the 192.168.0.0/24 space with 192.168.0.1 as DNS
    metric 200            #without this line I get RNETLINK answers: file does not exist
    dns-search cable.provider.com

此外,您可以使用&-v选项来启用详细输出并准确查看正在执行的挂钩脚本。ifupifdown

资料来源: man resolvconf man interfaces

相关内容