Comment configurer un serveur linux en tant que routeur

34

Motivation:

Je veux utiliser mon serveur Linux au lieu du routeur sans fil moyen pour plusieurs raisons

  1. Je veux apprendre à mettre en place un serveur plus complet sur linux
  2. Je ne veux pas avoir un modem, connecté à un routeur, connecté à un commutateur réseau
  3. Je suis malade et fatigué de devoir débrancher mon routeur tous les 10 jours, car il se bloque
  4. J'en ai assez d'acheter des routeurs pour me rendre compte qu'il leur manque quelque chose de crucial, comme le transfert de port ou l'adressage IP statique (DHCP)

Installer:

En fin de compte, la connexion entrera dans un modem et directement dans mon serveur eth0, puis eth1sera transmise à un commutateur réseau auquel tous les autres ordinateurs clients se connecteront via des câbles Ethernet (oubliez le sans fil pour le moment). Actuellement, cependant, je suis dans un immeuble de bureaux et la connexion est connectée à un modem, qui passe dans un routeur, qui passe ensuite dans un commutateur réseau, qui passe ensuite eth0comme spécifié ci-dessus.

Tutoriels en cours:

J'ai regardé quelques tutoriels (le tutoriel Ubuntu est le meilleur), et j'ai examiné certaines des questions relatives aux routeurs ici (c'est-à-dire celle-ci ), mais elles dissimulent toutes plusieurs concepts clés, tels que:

  • Quel est eth1le lien avec eth0? Dois /etc/network/interfaces-je savoir comment eth1utiliser eth0comme network(généralement l'adresse réelle du routeur physique)?
  • Dois-je faire quelque chose pour ordonner eth1de prendre Internet eth0et de le transmettre à qui le souhaite via le commutateur de réseau?

Approche actuelle:

Voici mon /etc/network/interfacesfichier sur le serveur:

iface lo inet loopback

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   # iface eth1 inet dhcp
   iface eth1 inet static
   address 192.168.7.0
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0

Et ifconfigme dit que les deux NIC fonctionnent bien:

eth0      Link encap:Ethernet  HWaddr 20:cf:30:55:a0:5f  
          inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::22cf:30ff:fe55:a05f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11297 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16639 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:948633 (948.6 KB)  TX bytes:1274685 (1.2 MB)

eth1      Link encap:Ethernet  HWaddr 00:11:95:f7:f4:6d  
          inet addr:192.168.7.0  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::211:95ff:fef7:f46d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3231 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29934 (29.9 KB)  TX bytes:213055 (213.0 KB)
          Interrupt:21 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5348 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:470737 (470.7 KB)  TX bytes:470737 (470.7 KB)

wlan0     Link encap:Ethernet  HWaddr bc:f6:85:f8:70:5c  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Et voici ce que route -n returnssur le serveur:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.7.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Puis sur le client j'ai

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Mais on ne lui attribue pas d'adresse IP.

EDIT: Voici le fichier de configuration isc-dhcp-server situé dans /etc/dhcp3/dhcpd.conlequel j'ai copié le plus souvent à partir de ce site .

# Sample /etc/dhcpd.conf                                                                                                                                                  
# (add your comments here) 
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";

subnet 192.168.7.0 netmask 255.255.255.0 {
   range 192.168.7.10 192.168.7.25;
}  

EDIT: Sortie desudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Question:

Quelles sont les étapes / composants cruciaux qui me manquent dans cette configuration?

puk
la source
Quel dhcpd utilisez-vous?
TML
De ce que je comprends dhcp(et donc dhcpd), @TML n’est pas obligatoire, il est uniquement destiné à centraliser toutes les ips statiques sur le serveur (par opposition à la modification du /etc/network/interfacesfichier dans chaque hôte). Par conséquent, j'ai décidé de ne pas expérimenter avec cela jusqu'à ce que cela fonctionne. J'ai cependant dhcp3-serverinstallé, ainsi queisc-dhcp-server
puk
Si vous voulez que le client obtienne une adresse IP de dhcp, vous devez exécuter un dhcpd; vous devriez publier la configuration pour le dhcpd actuellement actif, car c'est là que la source du problème sera due au fait que le client ne reçoit pas d'adresse IP. Personnellement, je recommanderais dnsmasq, car il apporte également des fonctionnalités utiles pour la résolution DNS interne.
TML
@TML, j'ai ajouté le dhcpd.conffichier et indiqué que je l'utiliseisc-dhcp-server
puk
1
Vous devriez ajouter deux points: 5. Je suis malade et fatigué de n'avoir qu'un contrôle partiel de l'appareil. 6. J'en ai assez d'avoir un routeur qui pourrait potentiellement avoir une porte dérobée. Le point 6 est une chose réelle qui peut être en ce moment dans n'importe quel routeur. Certains routeurs viennent avec des fonctionnalités supplémentaires telles que mot de passe codé en dur ou écoute secrète de certains ports.
Ignas2526

Réponses:

16

Je dois y aller comme Jack l'éventreur à cause de plusieurs choses manquantes:

  1. Si votre client utilisera DHCP pour obtenir les adresses IP, vous avez besoin d'un serveur DHCP.

    iface eth0 inet dhcp

    Dans les clients, cela indique qu'ils obtiendront leur adresse IP d'un serveur DHCP. Si vous n'avez pas configuré de serveur DHCP, vous devez utiliser des adresses IP fixes ou installer un serveur DHCP.

  2. Vous manquez de serveurs DNS configurés dans les clients. En raison du manque de serveur DHCP, ou vous pouvez utiliser un serveur DNS local pour tout votre réseau.

  3. Vous n'avez pas proposé les iptablesrègles (la sortie de sudo iptables -L), mais je devine que vous n'avez pas activé les règles de Masquerade, ni le transfert IP tel que décrit .

  4. L'adresse IP de eth1n'est pas recommandée. Toutes les adresses IP terminées 0sont généralement le réseau lui-même, et la plupart des routeurs / pare-feu sont confus lorsqu’ils sont utilisés . Changez-le 192.168.7.1et vous irez surtout bien.

  5. Votre broadcastvaleur dans l' eth1interface n'est pas correcte. Envoie des colis nulle part. La valeur correcte (en tenant compte des autres valeurs de l'interface) est 192.168.7.255.

  6. Vos options sur le serveur DHCP sont vicieux. Les paquets ARP à votre routeur n'atteindront jamais. Voici ce que vous devriez avoir:

    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.7.255;
    option routers 192.168.7.1; ## This should be the same value of the step 4
    option domain-name-servers 8.8.8.8;
    
    subnet 192.168.7.0 netmask 255.255.255.0 {
        range 192.168.7.10 192.168.7.25;
    }

Suivez-les et probablement votre routeur fonctionnera.

Braiam
la source
Rendements de sudo iptables -Lla question
puk
Ne soyez pas pointilleux, mais dans l’intérêt de quiconque de lire cette réponse, pourriez-vous expliquer quelles sont certaines de ces valeurs de dhcpd.conf: ligne 4 192.168.7.255et ligne 8subnet 192.168.7.0
Rendez-vous
@puk c'est trop complexe à expliquer dans les commentaires, mais pour bien dire, .255c'est l'adresse de diffusion normalement utilisée, tout paquet envoyé dans cette direction sera envoyé à tous les systèmes dans les mêmes sous-réseaux. Ce qui signifie que tout colis envoyé à 1.2.3.255 , il sera reçu par tout système de démarrage de IP 1.2.3 puisque tous sont dans le même sous - réseau en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam
Ne fonctionne pas Je veux voir si le problème est dhcpou le réseau. Fera une adresse IP statique à tester. Pour l' eth1adresse IP statique sur le client, est-ce que j'utilise l'adresse IP de la passerelle?
puk
1
Probablement parce que la diffusion et le réseau sur eth1 du routeur pointent sur 192.168.1.x au lieu de 192.168.7.x; si vous ne pouvez pas parler de eth1 sur le routeur à eth0 sur le client, les DHCPACK n'arriveront jamais chez le client (et par conséquent, ils n'obtiendront jamais l'adresse IP).
TML
9

Braiam a répondu à ma question, mais j’ai pensé qu’il serait utile de présenter ici une procédure détaillée. Veuillez le mettre à jour si j'ai commis des erreurs.

Tout d’abord, assurez-vous d’avoir deux cartes Ethernet et mettez à jour le /etc/network/interfacesfichier en tant que tel (ne confondez pas ceci avec le /etc/networksfichier).

iface lo inet loopback                                                                                                                    

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   iface eth1 inet static
   address 192.168.7.1
   netmask 255.255.255.0
   broadcast 192.168.7.255
   network 192.168.1.0

Pour trouver votre gateway, broadcastet networksuivez ces instructions .

Ensuite, accédez au client et modifiez d’abord le fichier /etc/network/interface(encore une fois, pas /etc/networks ) pour une adresse IP statique, afin de vous assurer que la carte réseau au moins fonctionne.

iface eth0 inet static
address 192.168.7.75
netmask 255.255.255.0
network 192.168.7.0
broadcast 192.168.7.255
gateway 192.168.7.1

Modifiez les valeurs pour qu'elles correspondent aux valeurs ci-dessus. Si cela fonctionne, grand, puis suivez les instructions ici , mais les suivre exactement , car il y a plusieurs dhcpfichiers pour ne pas confondre le dossier /etc/dhcpavec /etc/dhcp3et ainsi de suite.

puk
la source