Como configurar um servidor Linux como roteador

Como configurar um servidor Linux como roteador

Motivação:

Quero usar meu servidor Linux em vez do roteador sem fio comum por vários motivos

  1. Quero aprender como montar um servidor mais completo no linux
  2. Não quero ter um modem conectado a um roteador, conectado a um switch de rede
  3. Estou farto de ter que desconectar meu roteador a cada 10 dias porque ele simplesmente trava
  4. Estou farto de comprar roteadores apenas para perceber que está faltando algo crucial, como encaminhamento de porta ou endereçamento IP estático (dhcp)

Configurar:

Por fim, a conexão chegará a um modem e diretamente ao meu servidor através do eth0, e então eth1será enviada para um switch de rede ao qual todos os outros computadores clientes se conectarão por meio de cabos Ethernet (esqueça a conexão sem fio por enquanto). Atualmente, porém, estou em um prédio de escritórios e tenho a conexão entrando em um modem, que vai para um roteador, que vai para um switch de rede, que então entra eth0conforme especificado acima.

Tutoriais atuais:

Eu olhei alguns tutoriais (Tutorial do Ubuntué o melhor), e analisei algumas das perguntas sobre roteadores aqui (ou seja.Este), mas todos eles encobrem vários conceitos-chave, como:

  • Qual é eth1a relação de eth0? Devo /etc/network/interfacesdizer eth1para usar eth0como network(geralmente é o endereço físico real do roteador)?
  • Tenho que fazer alguma coisa para instruir eth1a pegar a internet que entra eth0e repassar para quem quiser no switch de rede?

Abordagem atual:

Aqui está meu /etc/network/interfacesarquivo no 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

E ifconfigme diz que ambas as NICs estão funcionando bem:

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)

E aqui está o que está route -n returnsno 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

Então no cliente eu tenho

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Mas não está sendo atribuído um endereço IP.

EDITAR:Aqui está o arquivo de configuração isc-dhcp-server localizado no /etc/dhcp3/dhcpd.conqual copiei principalmente deesse 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;
}  

EDITAR:Saída 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         

Pergunta:

Quais etapas/componentes cruciais estão faltando nesta configuração?

Responder1

Eu tenho que ir como Jack, o Estripador, devido a várias coisas que faltam em você:

  1. Se o seu cliente usar o DHCP para obter os IPs, você precisará de um servidor DHCP.

    iface eth0 inet dhcp

    Nos clientes isso indica que eles obterão seus IP's de um servidor DHCP, se você não configurou um servidor DHCP, você deve usar IP's fixos ou instalar um servidor DHCP.

  2. Faltam servidores DNS configurados nos clientes. Seja pela falta de um servidor DHCP, ou você pode querer usar um servidor DNS local para toda a sua rede.

  3. Você não ofereceu as iptablesregras (a saída de sudo iptables -L), mas posso adivinhar que você não ativou as regras do Masquerade, nem o encaminhamento de IPconforme descrito.

  4. O endereço IP de eth1não é recomendado. Qualquer IP terminado 0normalmente é a própria rede ea maioria dos roteadores/firewall fica confusa quando eles são usados. Mude para 192.168.7.1e você ficará bem.

  5. Seu broadcastvalor na eth1interface não está correto. Está enviando pacotes para lugar nenhum. O valor correto (levando em consideração outros valores da interface) é 192.168.7.255.

  6. Suas opções no servidor DHCP são cruéis. Os pacotes ARP para o seu roteador nunca chegarão. Isto é o que você deveria ter:

    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 estes e provavelmente você terá seu roteador funcionando.

Responder2

Braiam respondeu à minha pergunta, mas achei que seria útil colocar um passo a passo completo aqui. Por favor, atualize isso se eu tiver cometido algum erro.

Primeiro, certifique-se de ter duas placas Ethernet (NICs) e atualize o /etc/network/interfacesarquivo como tal (façanãoconfunda isso com o /etc/networksarquivo).

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 seu gateway, broadcaste network, sigaestas instruções.

Em seguida, entre no cliente e edite /etc/network/interface(novamente,não /etc/networks) para ip estático primeiro, para garantir que pelo menos a placa NIC esteja 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

Altere os valores para corresponder aos valores acima. Se funcionar, ótimo, então use as instruçõesaquimas siga-osexatamente, pois existem vários dhcparquivos, então não confunda a pasta /etc/dhcpcom /etc/dhcp3e assim por diante.

informação relacionada