So richten Sie einen Linux-Server als Router ein

So richten Sie einen Linux-Server als Router ein

Motivation:

Ich möchte aus mehreren Gründen meinen Linux-Server anstelle des durchschnittlichen WLAN-Routers verwenden

  1. Ich möchte lernen, wie man einen umfassenderen Server unter Linux einrichtet
  2. Ich möchte kein Modem haben, das an einen Router oder einen Netzwerk-Switch angeschlossen ist
  3. Ich habe es satt, meinen Router alle 10 Tage ausstecken zu müssen, weil er einfach hängt
  4. Ich habe es satt, Router zu kaufen, nur um dann festzustellen, dass ihnen etwas Entscheidendes fehlt, wie Portweiterleitung oder statische IP-Adressierung (DHCP).

Aufstellen:

Letztendlich gelangt die Verbindung über ein Modem direkt zu meinem Server und wird eth0dann eth1an einen Netzwerk-Switch weitergeleitet, mit dem alle anderen Client-Computer über Ethernet-Kabel verbunden werden (drahtlos können wir für den Moment vergessen). Momentan befinde ich mich jedoch in einem Bürogebäude und habe eine Verbindung über ein Modem, das zu einem Router führt, der zu einem Netzwerk-Switch führt, der dann zu dem eth0oben angegebenen führt.

Aktuelle Tutorials:

Ich habe mir einige Tutorials angesehen (Ubuntu-Tutorialist die beste), und ich habe mir einige der Routerfragen hier angesehen (z. B.Dieses hier), aber sie alle beschönigen mehrere Schlüsselkonzepte, wie zum Beispiel:

  • In welcher eth1Beziehung steht 's zu eth0? /etc/network/interfacesMuss ich angeben, eth1dass eth0als zu verwenden ist network(im Allgemeinen ist es die tatsächliche physikalische Routeradresse)?
  • Muss ich irgendetwas tun, um die Anweisung eth1zu geben, das eingehende Internet eth0an denjenigen weiterzuleiten, der es im Netzwerk-Switch haben möchte?

Aktueller Ansatz:

Hier ist meine /etc/network/interfacesDatei auf dem Server:

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

Und ifconfigsagt mir, dass beide Netzwerkkarten einwandfrei funktionieren:

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)

Und hier ist, was route -n returnsauf dem Server ist:

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

Dann habe ich auf dem Client

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Es wird ihm jedoch keine IP-Adresse zugewiesen.

BEARBEITEN:Hier ist die Konfigurationsdatei des isc-dhcp-Servers, /etc/dhcp3/dhcpd.condie ich größtenteils kopiert habe vonDiese Seite.

# 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;
}  

BEARBEITEN:Ausgabe vonsudo 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         

Frage:

Welche wichtigen Schritte/Komponenten fehlen mir in diesem Setup?

Antwort1

Ich muss wie Jack the Ripper vorgehen, da mehrere Dinge fehlen, die bei Ihnen fehlen:

  1. Wenn Ihr Client DHCP zum Abrufen der IPs verwendet, benötigen Sie einen DHCP-Server.

    iface eth0 inet dhcp

    Dies bedeutet bei den Clients, dass sie ihre IPs von einem DHCP-Server erhalten. Wenn Sie keinen DHCP-Server eingerichtet haben, sollten Sie entweder feste IPs verwenden oder einen DHCP-Server installieren.

  2. In den Clients sind keine DNS-Server konfiguriert. Entweder liegt das daran, dass kein DHCP-Server vorhanden ist, oder Sie möchten einen lokalen DNS-Server für Ihr gesamtes Netzwerk verwenden.

  3. iptablesDu hast die Regeln (die Ausgabe von ) nicht angeboten sudo iptables -L, aber ich könnte mir vorstellen, dass du weder die Masquerade-Regeln noch die IP-Weiterleitung aktiviert hast.wie beschrieben.

  4. Die IP-Adresse von eth1wird nicht empfohlen. Jede IP, die mit endet, 0ist normalerweise das Netzwerk selbst unddie meisten Router/Firewalls geraten bei der Verwendung dieser einfach durcheinander. Ändern Sie es in 192.168.7.1und alles wird größtenteils gut.

  5. Ihr broadcastWert in der eth1Schnittstelle ist nicht korrekt. Sendet Pakete ins Nirgendwo. Der korrekte Wert (unter Berücksichtigung anderer Werte der Schnittstelle) ist 192.168.7.255.

  6. Ihre Optionen im DHCP-Server sind tückisch. Die ARP-Pakete werden Ihren Router nie erreichen. Folgendes sollten Sie haben:

    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;
    }

Befolgen Sie diese Schritte, und Ihr Router wird höchstwahrscheinlich funktionieren.

Antwort2

Braiam hat meine Frage beantwortet, aber ich dachte, es wäre hilfreich, hier eine ausführliche Anleitung zu veröffentlichen. Bitte aktualisieren Sie diese, wenn ich Fehler gemacht habe.

Stellen Sie zunächst sicher, dass Sie über zwei Ethernet-Karten (NICs) verfügen und aktualisieren Sie die /etc/network/interfacesDatei entsprechend (nichtfälschlicherweise für die /etc/networksDatei).

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

Um Ihre gateway, broadcastund zu finden network, folgen Siediese Anweisungen.

Gehen Sie als nächstes in den Client und bearbeiten Sie die /etc/network/interface(nochmals,nicht /etc/networks)-Datei für eine statische IP, um sicherzustellen, dass zumindest die Netzwerkkarte funktioniert.

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

Ändern Sie die Werte so, dass sie mit den obigen Werten übereinstimmen. Wenn es funktioniert, großartig, dann folgen Sie den AnweisungenHieraber folge ihnengenau, da es mehrere Dateien gibt, dhcpverwechseln Sie den Ordner also nicht /etc/dhcpmit /etc/dhcp3usw.

verwandte Informationen