Configure duas configurações de rede possíveis, mas use apenas uma

1

Eu tenho um instrumento que tem uma interface de rede através de um raspberry pi executando o rasbian. Eu estou tentando configurar o arquivo de interfaces para que ele funcione automaticamente em ambas as sub-redes com um IP estático. Basicamente, quando na sub-rede 0 (ou padrão), deve ter o seguinte:

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

E quando na outra sub-rede (1), deve ter:

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

Minha última tentativa foi a seguinte:

# 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

O motivo para não usar o DHCP é para que o instrumento possa ser conectado diretamente a um laptop (sem roteador) e ainda tenha um IP conhecido. O problema com a configuração atual é quando na sub-rede 0, qualquer pacote direcionado para a sub-rede 1 será de 192.168.1.77 e será direcionado para 192.168.1.254, que está disponível somente via 192.168.0.254. Qual é a melhor maneira de contornar isso? Talvez um script na inicialização que detecta em qual rede ele está e define o gateway padrão e o IP para essa sessão? E como eu implementaria isso?

Ou existe um método para solicitar um endereço específico via DHCP?

    
por Toby 07.12.2016 / 13:47

3 respostas

2

No final, modifiquei a resposta de Nath (obrigado!). Meu arquivo de interfaces agora é assim:

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

iface eth0 inet manual

E meu dhcpcd.conf tem isto anexado:

# 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

Os arpings são executados procurando por um servidor correspondente (note que este pode ser qualquer IP que esteja consistentemente ligado, não apenas o servidor DHCP) na rede local; se algum deles for encontrado, ele usará o perfil correspondente. Se nenhum perfil for encontrado, ele será executado no DHCP padrão. Se não houver um servidor DHCP na rede (tecnicamente o DHCP falha), ele aplica o perfil de fallback.

PONTOS IMPORTANTES:

  • Isso requer o pacote dhcpcd5 (não dhcpcd), que vem com o Jessie raspberry, mas não com o Wheezy (eu tive que instalar no Wheezy)

  • O iputils-arping entra em conflito com a arping usada no dhcpcd.conf, se você tiver isso, precisará desinstalar e fazer uma instalação limpa do dhcpcd5.

por 12.01.2017 / 15:52
1

O servidor DHCP pode ser configurado para fornecer o mesmo endereço IP ao mesmo MAC Ethernet. Isso deve permitir que você obtenha o mesmo IP toda vez.

    
por 07.12.2016 / 21:51
1

Acho que sua melhor aposta é fazer uma atribuição DHCP estática quando conectado à rede e, em seguida, usar o dhcpcd.conf fallback profile opção para que o cliente dhcp gere um IP estático somente quando ele não pode obter um do dhcp, essa é uma configuração bastante comum para um pi de framboesa veja para mais detalhes sobre como usar o fallback profile

    
por 08.12.2016 / 08:49