web-dev-qa-db-fra.com

Ubuntu en tant que routeur / passerelle - Impossible d'accéder à WAN

J'essaie actuellement de configurer un routeur domestique à l'aide d'une machine exécutant Ubuntu 12.04. La machine a deux ports Ethernet. eth0 est LAN et eth1 est WAN.

J'ai mis eth0 sur une adresse IP statique et eth1 demande une adresse IP via DHCP.

/etc/network/interface

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.1.1.10
  netmask 255.255.255.0
  gateway 10.1.1.10
  dns-nameservers 10.1.1.1 10.1.1.10

auto eth1
iface eth1 inet dhcp

Cela me permet d’envoyer une requête ping aux ordinateurs du réseau local, mais je ne parviens pas à envoyer de requête ping ou d’accéder à des hôtes externes. Le modem donne à eth1 une adresse IP valide. La machine règle son adresse IP réseau sur 10.1.1.10 (à déplacer vers 10.1.1.1 lorsque tout fonctionne).

J'ai ajouté ce qui suit à /etc/bind/named.conf.options:

    forwarders {
            8.8.8.8;
            8.8.4.4;
    };

net.ipv4.ip_forward = 1 a été ajouté à /etc/sysctl.conf.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         Vanir.local     0.0.0.0         UG    100    0        0 eth0
10.1.1.0        *               255.255.255.0   U     0      0        0 eth0
98.162.168.0    *               255.255.252.0   U     0      0        0 eth1
link-local      *               255.255.0.0     U     1000   0        0 eth0

Quelqu'un voit-il ce qui me manque pour autoriser le trafic WAN et le réseau local sur ma machine?

2
earthmeLon

J'ai pu résoudre ce problème en modifiant /etc/udev/rules.d/70-persistent-net.rules. En faisant de eth0 mon WAN NIC, Linux a automatiquement utilisé sa passerelle comme passerelle par défaut.

/ etc/udev/rules.d/70-persittent-net.rules :

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.4/0000:03:00.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="FF:FF:FF:FF:FF:F0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:1c.5/0000:04:00.0/0000:05:01.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="FF:FF:FF:FF:FF:F1", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="FF:FF:FF:FF:FF:F2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
2
earthmeLon

Même si vous avez pu résoudre ce problème en réorganisant les interfaces, ce n’est pas la véritable source du problème.

La vraie source du problème est la suivante:

 auto eth0 
 iface eth0 inet static 
 adresse 10.1.1.10 
 masque de réseau 255.255.255.0 
  passerelle 10.1 .1.10  
 Serveur de noms DNS 10.1.1.1 10.1.1.10 

Vous dites ici que si vous avez un paquet destiné à une entité qui ne se trouve pas sur le sous-réseau 10.1.1.0/24, il doit être envoyé à 10.1.1.10, qui saura comment le gérer. Mais 10.1.1.10 est l'ordinateur local. Le paquet n'est pas destiné à cet ordinateur. Il recherche donc dans sa table de routage et décide de le transférer à 10.1.1.10 ... C'est une boucle de routage sur un ordinateur.

Si vous ne possédez qu'un seul routeur chez vous (probablement), aucune passerelle ne doit être définie sur l'interface locale, car toutes les adresses IP du sous-réseau sont accessibles localement. Si vous avez plusieurs routeurs chez vous, vous devez configurer des routes spécifiques vers les réseaux gérés par ces routeurs. La seule fois où il est logique d'utiliser deux itinéraires par défaut est si vous avez réellement deux itinéraires différents vers Internet.

Dans votre configuration, uniquement , l'interface pointant vers Internet doit avoir une passerelle par défaut définie. Ainsi, la configuration devrait être

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.1.1.10
  netmask 255.255.255.0
  dns-nameservers 10.1.1.1 10.1.1.10

auto eth1
iface eth1 inet dhcp

Cela aurait fonctionné.

Si vous avez plusieurs routeurs chez vous, c'est probablement à cause d'un homelab ou similaire, et vous utiliseriez probablement un protocole de routage pour le gérer, mais il pourrait être configuré de manière statique avec le post-up route add 192.168.1.0/24 gw 10.1.1.20 par exemple.

Le fait que la réorganisation des interfaces a fonctionné pour vous n’est que pure coïncidence, probablement en raison de l’ordre de la table de routage. Votre configuration est toujours incorrecte.

0
vidarlo