Come configurare un server Linux come router


34

Motivazione:

Voglio usare il mio server Linux invece del router wireless medio per diversi motivi

  1. Voglio imparare come configurare un server più completo su Linux
  2. Non voglio avere un modem, collegato a un router, collegato a uno switch di rete
  3. Sono stanco di dover scollegare il mio router ogni 10 giorni perché si blocca
  4. Sono stanco di acquistare router solo per rendermi conto che mancano qualcosa di cruciale, come il port forwarding o l'indirizzamento ip statico (dhcp)

Impostare:

Alla fine, la connessione arriverà in un modem, e direttamente nel mio server eth0, quindi eth1verrà trasmessa a uno switch di rete a cui tutti gli altri computer client si collegheranno tramite cavi Ethernet (per il momento dimentica la connessione wireless). Attualmente, tuttavia, mi trovo in un edificio per uffici e ho la connessione che entra in un modem, che entra in un router, che entra in uno switch di rete, che poi entra eth0come sopra specificato.

Tutorial attuali:

Ho guardato alcuni tutorial (il tutorial di Ubuntu è il migliore), e ho esaminato alcune delle domande del router qui (cioè questo ), ma tutte riflettono su diversi concetti chiave, come:

  • Qual è eth1la relazione con eth0? Nel /etc/network/interfacesdevo dire eth1di usare eth0come network(in genere è l'attuale indirizzo del router fisico)?
  • Devo fare qualcosa per indicare eth1a Internet di entrare eth0e trasmetterlo a chiunque lo desideri nello switch di rete?

Approccio attuale:

Ecco il mio /etc/network/interfacesfile sul 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

E ifconfigmi dice che entrambe le schede di rete funzionano correttamente:

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)

Ed ecco cosa c'è route -n returnssul server:

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

Quindi sul client che ho

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Ma non gli viene assegnato un indirizzo IP.

EDIT: Ecco il file di configurazione isc-dhcp-server situato in /etc/dhcp3/dhcpd.concui ho copiato principalmente da questo sito .

# 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: output disudo 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         

Domanda:

Quali passaggi / componenti cruciali mi manca in questa configurazione?


Quale dhcpd stai usando?
TML

@TML Dal mio punto di vista dhcp(e quindi dhcpd) non è obbligatorio, ed è pensato solo per centralizzare tutti gli ips statici sul server (invece di cambiare il /etc/network/interfacesfile in ogni host). Pertanto, ho deciso di non sperimentare fino a quando non funziona. Tuttavia, ho dhcp3-serverinstallato, oltre aisc-dhcp-server
puk

Se si desidera che il client ottenga un indirizzo IP da dhcp, è necessario eseguire un dhcpd; dovresti pubblicare la configurazione per quale di questi dhcpd sia attualmente quello attivo, poiché è lì che la fonte del problema sarà: il client non ottiene un IP. Personalmente, consiglierei dnsmasq, poiché porta anche alcune utili funzionalità per eseguire la risoluzione DNS interna.
TML

@TML Ho aggiunto il dhcpd.conffile e indicato che sto usandoisc-dhcp-server
puk

1
Dovresti aggiungere altri due punti: 5. Sono stanco di avere un controllo parziale del dispositivo. 6. Sono stanco di avere un router che potrebbe potenzialmente avere una backdoor. Il punto n. 6 è una cosa reale che può essere in questo momento in qualsiasi router. Alcuni router sono dotati di funzionalità extra come password hardcoded o ascolto segreto di alcune porte.
Ignas2526,

Risposte:


16

Devo andare come Jack lo squartatore a causa di alcune cose mancanti che hai:

  1. Se il client utilizzerà DHCP per ottenere gli IP, è necessario un server DHCP.

    iface eth0 inet dhcp

    Nei client questo indica che otterranno i loro IP da un server DHCP, se non hai impostato un server DHCP, dovresti usare IP fissi o installare un server DHCP.

  2. Mancanza di server DNS configurati nei client. O a causa della mancanza del server DHCP, o potresti voler utilizzare un server DNS locale per tutta la tua rete.

  3. Non hai offerto le iptablesregole (l'output disudo iptables -L ) ma immagino che non hai attivato le regole di Masquerade, né l'inoltro IP come descritto .

  4. L'indirizzo IP di eth1non è raccomandato. Qualsiasi IP finito è in 0genere la rete stessa e maggior parte dei router / firewall viene semplicemente confusa quando vengono utilizzati . Modificalo in 192.168.7.1e per lo più andrà bene.

  5. Il tuo broadcast valore eth1nell'interfaccia non è corretto. Invia pacchi da nessuna parte. Il valore corretto (tenendo conto di altri valori dell'interfaccia) è 192.168.7.255.

  6. Le tue opzioni nel server DHCP sono viziose. I pacchetti ARP sul router non raggiungeranno mai. Questo è ciò che dovresti avere:

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

Segui questi e molto probabilmente avrai il tuo router funzionante.


Aggiunto l'output della sudo iptables -Ldomanda
puk

Non essere pignoli, ma per gli interessi di chiunque altro legga questa risposta, potresti spiegare quali sono alcuni di questi valori dhcpd.conf: riga 4 192.168.7.255e riga 8subnet 192.168.7.0
puk

@puk che è troppo complesso per essere spiegato nei commenti, ma per dirla bene, .255è l'indirizzo di trasmissione normalmente usato, qualsiasi pacchetto inviato in quella direzione verrà inviato a tutti i sistemi nelle stesse sottoreti. Ciò significa che qualsiasi pacchetto inviato all'1.2.3.255 verrà ricevuto da qualsiasi sistema il cui IP inizia con 1.2.3 poiché tutti sono nella stessa sottorete en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam

Non funziona. Voglio vedere se il problema è dhcpo la rete. Farà un indirizzo IP statico per testare. per l'IP statico sul client, uso eth1l'indirizzo IP come gateway?
puk

1
Probabilmente perché la trasmissione e la rete su eth1 del router puntano a 192.168.1.x anziché a 192.168.7.x; se non puoi parlare da eth1 sul router a eth0 sul client, i DHCPACK non arriveranno mai al client (e di conseguenza non otterranno mai l'IP).
TML

9

Braiam ha risposto alla mia domanda, ma ho pensato che sarebbe stato utile fare un'analisi dettagliata qui. Si prega di aggiornare questo se ho commesso degli errori.

Per prima cosa assicurati di avere due schede Ethernet (NIC) e aggiorna il /etc/network/interfacesfile come tale ( non confonderlo con il /etc/networksfile).

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

Per trovare la vostra gateway, broadcaste networkseguire le istruzioni .

Successivamente, accedi al client e modifica prima il file /etc/network/interface(di nuovo, non /etc/networks ) per l'ip statico, per assicurarti che almeno la scheda NIC funzioni.

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

Modificare i valori in modo che corrispondano ai valori precedenti. Se funziona, ottimo, quindi usa le istruzioni qui ma seguile esattamente , poiché ci sono molti dhcpfile, quindi non confondere la cartella /etc/dhcpcon /etc/dhcp3e così via.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.