J'utilise Ubuntu et j'ai de nombreuses interfaces. eth0
, qui est ma connexion Internet, et il reçoit ses informations d'un serveur DHCP totalement hors de mon contrôle.
J'ai alors eth1
, eth2
, eth3
et eth4
pour lesquels j'ai créé un serveur DHCP. (Serveur DHCP ISC)
Cela semble fonctionner et je reçois même une adresse IP du serveur DHCP étranger sur l'interface Internet.
Cependant, pour une raison quelconque, il semble que ma passerelle pour eth0
soit devenue vissée après avoir installé mon serveur DHCP local pour eth1
-eth4
. (Je pense que oui, parce que j'ai une adresse IP pour eth0
, et que je peux cingler d'autres trucs sur le réseau local, mais je ne peux pas avoir accès à Internet).
Mon eth0
- informations spécifiques dans /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
Mon /etc/default/isc-dhcp-server
:
INTERFACES="eth1 eth2 eth3 eth4"
Alors pourquoi mon serveur DHCP local gâche-t-il la passerelle pour eth0
, quand je lui dis de ne pas écouter eth0
? Quelqu'un voit le problème ou ce que je peux faire pour le résoudre?
Le problème semble en effet être les passerelles. netstat -nr
donne:
0.0.0.0 --- 10.X.X.X ---- 0.0.0.0 --- UG 0 0 0 eth3
Ça aurait dû être
0.0.0.0 129.2XX.X.X 0.0.0.0 UG 0 0 0 eth0
Donc, pour une raison quelconque, mon serveur DHCP local remplace la passerelle que je reçois du réseau DHCP.
Edit: dhcp.conf
ressemble à ceci (j'ai inclus des informations uniquement pour le sous-réseau eth1
):
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; }
}
De plus, il semble que la passerelle soit correctement définie si j'exécute /etc/init.d/networking restart
dans un terminal, mais cela ne m'aide pas. J'ai besoin que la bonne passerelle soit définie au démarrage et je préfère trouver la source du fichier. problème
Je ne suis quasiment pas un expert sur ce sujet, mais je soupçonne qu'en raison de la nature de diffusion des paquets DHCP, votre serveur DHCP local va toujours répondre aux demandes locales, quelles que soient les interfaces d'écoute que vous avez configurées.
Donc, je vous suggérerais d'essayer simplement de définir des instructions "rejeter" dans votre dhclient.conf pour rejeter les offres du serveur local:
reject 10.0.1.1;
reject 10.0.2.1;
(Je suppose seulement que vous pouvez utiliser plusieurs déclarations de rejet, la page de manuel n’est pas claire.)
Je peux penser à quelques autres choses à essayer aussi, mais je me trompe peut-être quand même dans mon hypothèse initiale. Je trouve toujours cela un outil utile pour diagnostiquer ce qui se passe:
apt-get install dhcpdump
dhcpdump -i eth1
PS: si vous souhaitez conserver eth0, eth1, eth2, etc. correctement séparés, envisagez l’utilisation de VLAN pour isoler le trafic en couche 2.
Vous ne devriez avoir qu'une seule passerelle par défaut sur votre ordinateur. Et cela devrait aller à un routeur qui va vers la frontière ou hors de votre réseau. Vous pouvez toujours utiliser ip route list
pour voir vos routeurs.
Il y a donc deux erreurs dans chacune de vos strates eth1
et eht2
dans /e/n/interfaces
.
gateway
pointant sur elle-même. Si votre ordinateur ne sait pas où envoyer un paquet avec une adresse inconnue IP
-, pourquoi devriez-vous lui dire de transmettre ce paquet à lui-même? Donc, vous ne devriez jamais pointer une gateway
sur elle-même.eth0
, et cela prend le gatway de dhcp
. Donc, pas besoin de définir gateway
ici.Donc, supprimez tous les gateway
dirctives de /e/n/interfaces
et cela fonctionnera (mieux).
Et soit dit en passant, network
et broadcast
sont calculés à partir de address
et netmask
, vous n'avez donc pas besoin de les spécifier. Cela peut en fait créer des erreurs étranges si vous vous trompez, il est donc préférable de ne pas les spécifier. Voir https://askubuntu.com/a/432876/999
Si vous avez votre propre serveur DHCP sur vos clients de votre réseau local, vous devez leur dire d’utiliser votre ordinateur dans la configuration du serveur DHCP. Ainsi, sur eth1
, vous devez indiquer aux clients d'utiliser 10.0.1.1
comme routeur. Vous ne pouvez pas faire cela dans /e/n/interfaces
.