设置两种可能的网络配置,但只使用一种

设置两种可能的网络配置,但只使用一种

我有一台仪器,它通过运行 rasbian 的 raspberry pi 具有网络接口。我正在尝试设置接口文件,以便它能够自动在具有静态 IP 的两个子网中工作。基本上,当在子网 0(或默认)中时,它应该具有以下内容:

auto eth0
iface eth0 inet static
    address 192.168.0.77
    netmask 255.255.255.0
    gateway 192.168.0.254

当在另一个子网(1)时,它应该具有:

auto eth0
iface eth0 inet static
    address 192.168.1.77
    netmask 255.255.255.0
    gateway 192.168.1.254

我最后一次尝试如下:

# etc/networking/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.0.77
    netmask 255.255.255.0
    gateway 192.168.0.254
    up ip route add default via 192.168.1.254 table cbs
    up ip rule add from 192.168.1.77 table cbs
    up ip route add default via 192.168.0.254

auto eth0:0
iface eth0:0 inet static
    address 192.168.1.77
    netmask 255.255.255.0

不使用 DHCP 的原因是仪器可以直接连接到笔记本电脑(没有路由器),并且仍然具有已知 IP。当前设置的问题是,当在子网 0 上时,任何指向子网 1 的数据包都将来自 192.168.1.77,然后将被定向到 192.168.1.254,而 192.168.0.254 只能通过 192.168.0.254 获得。解决这个问题的最佳方法是什么?也许在启动时使用一个脚本来检测它所在的网络并为该会话设置默认网关和 IP?我该如何实现它?

或者是否有通过 DHCP 请求特定地址的方法?

答案1

最后我修改了 Nath 的答案(谢谢!)。我的接口文件现在如下所示:

# etc/networking/interfaces
auto lo
iface lo inet loopback

iface eth0 inet manual

我的 dhcpcd.conf 附加了以下内容:

# etc/dhcpcd.conf
interface eth0
arping 192.168.1.254
arping 192.168.0.254
fallback nicutpi2

profile 192.168.1.254
static ip_address=192.168.1.77
static routers=192.168.1.254
static domain_name_servers=192.168.1.254

profile 192.168.0.254
static ip_address=192.168.0.77
static routers=192.168.0.254
static domain_name_servers=192.168.0.254

profile nicutpi2
static ip_address=192.168.0.77

arping 是通过在本地网络上寻找匹配的服务器(注意,这可以是任何始终开启的 IP,而不仅仅是 DHCP 服务器)来运行的,如果找到,它将使用相应的配置文件。如果没有找到配置文件,它将在标准 DHCP 上运行。如果网络上没有 DHCP 服务器(技术上 DHCP 失败),它将应用后备配置文件。

要点:

  • 这需要 dhcpcd5(不是 dhcpcd)包,它是 raspbian Jessie 的标准配置,但不是 Wheezy 的标准配置(我必须在 Wheezy 上安装)

  • iputils-arping 与 dhcpcd.conf 中使用的 arping 冲突,如果存在此问题,则需要卸载并全新安装 dhcpcd5。

答案2

DHCP 服务器可以配置为向相同的以太网 MAC 提供相同的 IP 地址。这样您每次都可以获得相同的 IP。

答案3

我认为最好的办法是在连接到网络时执行静态 DHCP 分配,然后使用 dhcpcd.conffallback profile 选项让 dhcp 客户端仅在无法从 dhcp 获取 IP 时才生成静态 IP,这是 Raspberry Pi 的一个非常常见的配置,请参阅https://raspberrypi.stackexchange.com/questions/37920/how-do-i-set-up-networking-wifi-static-ip有关使用fallback profile

相关内容