Cómo configurar un servidor Linux como enrutador

34

Motivación:

Quiero usar mi servidor Linux en lugar del enrutador inalámbrico promedio por varias razones

  1. Quiero aprender a configurar un servidor más completo en Linux
  2. No quiero tener un módem, conectado a un enrutador, conectado a un conmutador de red
  3. Estoy cansado de tener que desconectar mi enrutador cada 10 días porque simplemente se cuelga
  4. Estoy cansado de comprar enrutadores solo para darme cuenta de que les falta algo crucial, como el reenvío de puertos o el direccionamiento IP estático (dhcp)

Preparar:

Finalmente, la conexión entrará en un módem y pasará directamente a mi servidor eth0, luego se eth1enviará a un conmutador de red al que todas las otras computadoras cliente se conectarán a través de cables de Ethernet (olvide la conexión inalámbrica por el momento). Actualmente, sin embargo, estoy en un edificio de oficinas, y tengo la conexión entrando en un módem, que entra en un enrutador, que entra en un conmutador de red, que luego entra eth0como se especifica anteriormente.

Tutoriales actuales:

Miré algunos tutoriales (el tutorial de Ubuntu es el mejor), y he visto algunas de las preguntas del enrutador aquí (es decir, esta ), pero todas pasan por alto varios conceptos clave, como:

  • ¿Cuál es eth1la relación con eth0? En /etc/network/interfacesqué tengo que decirle eth1a utilizar eth0como el network(generalmente es la dirección real del router físico)?
  • ¿Tengo que hacer algo para instruir eth1a tomar el internet que entra eth0y pasarlo a quien quiera en el conmutador de red?

Enfoque actual:

Aquí está mi /etc/network/interfacesarchivo en el servidor:

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

Y ifconfigme dice que ambas NIC funcionan 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)

Y esto es lo que hay route -n returnsen el servidor:

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

Luego en el cliente tengo

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Pero no se le está asignando una dirección IP.

EDITAR: Aquí está el archivo de configuración isc-dhcp-server ubicado en el /etc/dhcp3/dhcpd.conque copié principalmente de este sitio .

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

EDITAR: Salida 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         

Pregunta:

¿Qué pasos / componentes cruciales me estoy perdiendo en esta configuración?

puk
fuente
¿Qué dhcpd estás usando?
TML
@TML Según tengo entendido dhcp(y por lo tanto dhcpd) no es obligatorio, y solo está destinado a centralizar todos los ips estáticos en el servidor (en lugar de cambiar el /etc/network/interfacesarchivo en cada host). Por lo tanto, he decidido no experimentar con eso hasta que esto funcione. Sin embargo, he dhcp3-serverinstalado, así comoisc-dhcp-server
puk
Si desea que el cliente obtenga una dirección IP de dhcp, debe ejecutar un dhcpd; debe publicar la configuración para cualquiera de estos dhcpd que esté actualmente activo, ya que allí es donde se resolverá la fuente del problema: el cliente no obtiene una IP. Personalmente, recomendaría dnsmasq, ya que también trae algunas características útiles para hacer una resolución DNS interna.
TML
@TML Agregué el dhcpd.confarchivo e indiqué que lo estoy usandoisc-dhcp-server
puk
1
Debes dos puntos más: 5. Estoy enfermo y cansado de tener solo un control parcial del dispositivo. 6. Estoy cansado de tener un enrutador que podría tener una puerta trasera. El punto # 6 es algo real que puede estar ahora mismo en cualquier enrutador. Algunos enrutadores vienen con características adicionales como contraseña codificada o escuchar en secreto algún puerto.
Ignas2526

Respuestas:

16

Tengo que ir como Jack el destripador debido a varias cosas faltantes que tienes:

  1. Si su cliente usará DHCP para obtener las IP, necesita un servidor DHCP.

    iface eth0 inet dhcp

    En los clientes, esto indica que obtendrán sus IP de un servidor DHCP, si no configuró un servidor DHCP, debe usar IP fijas o instalar un servidor DHCP.

  2. Carece de servidores DNS configurados en los clientes. Debido a la falta de un servidor DHCP, o es posible que desee utilizar un servidor DNS local para toda su red.

  3. No ofreció las iptablesreglas (la salida de sudo iptables -L), pero podría suponer que no activó las reglas de Masquerade, ni el reenvío de IP como se describe .

  4. eth1No se recomienda la dirección IP de . Cualquier IP terminada 0suele ser la red en sí, y la mayoría de los enrutadores / firewall simplemente se confunden cuando se usan . Cámbialo 192.168.7.1y la mayoría estará bien.

  5. Su broadcastvalor en la eth1interfaz no es correcto. Está enviando paquetes a ninguna parte. El valor correcto (teniendo en cuenta otros valores de la interfaz) es 192.168.7.255.

  6. Sus opciones en el servidor DHCP son viciosas. Los paquetes ARP a su enrutador nunca llegarán. Esto es lo que debes tener:

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

Siga estos y lo más probable es que tenga su enrutador funcionando.

Braiam
fuente
Salida agregada de la sudo iptables -Lpregunta
puk
No para ser exigente, pero para los intereses de cualquiera que lea esta respuesta, ¿podría explicar cuáles son algunos de estos valores de dhcpd.conf: línea 4 192.168.7.255y línea 8subnet 192.168.7.0
puk
@puk es demasiado complejo para explicarlo en los comentarios, pero para decirlo bien, .255es la dirección de difusión utilizada normalmente, cualquier paquete enviado a esa dirección se enviará a todos los sistemas en las mismas subredes. Lo que significa que cualquier paquete enviado a 1.2.3.255 será recibido por cualquier sistema cuya IP comience con 1.2.3 ya que todos están en la misma subred en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam
No funciona. Quiero ver si el problema es dhcpo la red. Hará una dirección IP estática para probar. para la IP estática en el cliente, ¿uso eth1la dirección IP de la puerta de enlace?
puk
1
Probablemente porque la transmisión y la red en eth1 del enrutador apuntan a 192.168.1.x en lugar de 192.168.7.x; Si no puede hablar desde eth1 en el enrutador a eth0 en el cliente, los DHCPACK nunca llegarán al cliente (y, en consecuencia, nunca obtendrán la IP).
TML
9

Braiam respondió mi pregunta, pero pensé que sería útil hacer un recorrido completo aquí. Actualice esto si he cometido algún error.

Primero asegúrese de tener dos tarjetas ethernet (NIC) y actualice el /etc/network/interfacesarchivo como tal ( no confunda esto con el /etc/networksarchivo).

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

Para encontrar su gateway, broadcasty network, siga estas instrucciones .

Luego, ingrese al cliente y edite primero el archivo /etc/network/interface(nuevamente, no /etc/networks ) para la IP estática, para asegurarse de que al menos la tarjeta NIC esté funcionando.

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

Cambie los valores para que coincidan con los valores anteriores. Si funciona, excelente, entonces use las instrucciones aquí pero sígalas exactamente , ya que hay varios dhcparchivos, así que no confunda la carpeta /etc/dhcpcon /etc/dhcp3etc.

puk
fuente