Servidor DHCP com múltiplas interfaces no Ubuntu, destrói gateway padrão

3

Eu uso o Ubuntu e tenho muitas interfaces. eth0 , que é minha conexão com a internet, e obtém suas informações de um servidor DHCP totalmente fora do meu controle.

Tenho então eth1 , eth2 , eth3 e eth4 para os quais criei um servidor DHCP. (ISC DHCP-Server)

Parece funcionar, e eu até recebo um endereço IP do servidor DHCP externo na interface da Internet.

No entanto, por alguma razão, parece que meu gateway para eth0 foi parafusado depois que instalei meu servidor DHCP local para eth1 - eth4 . (Eu acho que sim porque eu tenho um IP para eth0 , e eu posso pingar outras coisas na rede local, mas não consigo acessar a internet).

Minhas informações eth0 específicas em /etc/network/interfaces :

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
  address 10.0.1.1
  netmask 255.255.255.0
  network 10.0.1.0
  broadcast 10.0.1.255
  gateway 10.0.1.1
  mtu 8192


auto eth2
iface eth2 inet static
  address 10.0.2.1
  netmask 255.255.255.0
  network 10.0.2.0
  broadcast 10.0.2.255
  gateway 10.0.2.1
  mtu 8192

Meu /etc/default/isc-dhcp-server :

INTERFACES="eth1 eth2 eth3 eth4"

Então, por que meu servidor DHCP local atrapalha o gateway para eth0 , quando eu digo para não ouvir eth0 ? Alguém vê o problema ou o que eu posso fazer para consertar isso?

O problema parece ser os portais. netstat -nr dá:

0.0.0.0 --- 10.X.X.X ---- 0.0.0.0 --- UG 0 0 0 eth3

Deveria ter sido

0.0.0.0 129.2XX.X.X 0.0.0.0 UG 0 0 0 eth0

Portanto, por algum motivo, meu servidor DHCP local substitui o gateway que recebo do DHCP da rede.

Editar: dhcp.conf tem esta aparência (incluí informações apenas para eth1 sub-rede):

ddns-update-style none;

not authoritative;

subnet 10.0.1.0 netmask 255.255.255.0 { interface eth1; 
option domain-name "example.org"; 
option domain-name-servers ns1.example.org, 
ns2.example.org; 
default-lease-time 600; 
max-lease-time 7200;
range 10.0.1.10 10.0.1.100;
host camera1_1 { hardware ethernet 00:30:53:11:24:6E; fixed-address 10.0.1.10; }
host camera2_1 { hardware ethernet 00:30:53:10:16:70; fixed-address 10.0.1.11; } 
}

Além disso, parece que o gateway está configurado corretamente se eu executar /etc/init.d/networking restart em um terminal, mas isso não é útil para mim, preciso que o gateway correto seja definido durante a inicialização e prefiro localizar a origem o problema

    
por Henrik Alstad 16.10.2012 / 16:25

2 respostas

1

Eu praticamente não sou especialista nesse assunto, mas suspeito que, por causa da natureza da transmissão dos pacotes DHCP, seu servidor DHCP local sempre responderá às solicitações originadas localmente, independentemente das interfaces de escuta que você configurou. / p>

Então eu sugiro que você tente simplesmente configurar instruções "rejeitar" em seu dhclient.conf para rejeitar ofertas do servidor local:

reject 10.0.1.1;
reject 10.0.2.1;

(Eu estou apenas supondo que você pode usar várias declarações de rejeição, man page não é clara.)

Eu posso pensar em algumas outras coisas para tentar também, mas eu posso estar errado na minha suposição inicial de qualquer maneira. Eu sempre acho isso uma ferramenta útil para diagnosticar o que está acontecendo:

apt-get install dhcpdump
dhcpdump -i eth1

PS: Se você quiser manter eth0, eth1, eth2 etc. devidamente separados, considere o uso de VLANs para isolar o tráfego na camada 2.

    
por Will Daniels 05.11.2012 / 01:23
1

Você deve ter apenas um gateway padrão no seu computador. E deve ir para um roteador que vai em direção à fronteira ou fora de sua rede. Você sempre pode usar ip route list para ver quais roteadores tem.

Portanto, há dois erros em cada uma das sub-rotinas eth1 e eht2 em /e/n/interfaces .

  1. Você não deve ter uma diretiva gateway apontando para si mesma. Se a sua máquina não sabe para onde enviar um pacote com um% desconhecidoIP -address, por que você deveria avisá-lo para encaminhar esse pacote para si mesmo? Então você nunca deve apontar um gateway para si mesmo.
  2. Você deve ter apenas um (ou nenhum) gateway padrão em sua máquina. E isso deve apontar para fora. A interface para o exterior está em eth0 e está obtendo o gatway de dhcp . Portanto, não é necessário definir gateway aqui.

Portanto, remova todos os gateway dirctives de /e/n/interfaces e ele funcionará (melhor).

E, a propósito, ambos network e broadcast são calculados a partir de address e netmask , portanto, você não precisa especificá-los. Na verdade, pode criar alguns erros estranhos se você errar, então é melhor não especificá-los. Veja link

Para seus clientes em sua LAN em que você tem seu próprio servidor dhcp, você deve dizer-lhes para usar sua máquina na configuração do servidor dhcp. Então, em eth1 você deve dizer aos clientes para usar 10.0.1.1 como roteador. Você não pode fazer isso em /e/n/interfaces .

    
por Anders 13.09.2014 / 00:15