Como configurar um servidor linux como um roteador

30

Motivação:

Eu quero usar meu servidor linux em vez do roteador sem fio comum por várias razões

  1. Eu quero aprender como configurar um servidor mais completo no linux
  2. Eu 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ão faltando algo crucial, como encaminhamento de porta ou endereçamento de IP estático (dhcp)

Configurar:

Em última análise, a conexão virá em um modem, e direto para o meu servidor através de eth0 , então eth1 será enviado para um switch de rede ao qual todos os outros computadores clientes se conectarão através de cabos ethernet. ). Atualmente, no entanto, estou em um prédio de escritórios e tenho a conexão entrando em um modem, que entra em um roteador, que entra em um comutador de rede, que entra em eth0 conforme especificado acima.

Tutoriais atuais:

Eu olhei alguns tutoriais ( tutorial do Ubuntu é o melhor), e eu olhei para alguns dos roteadores perguntas aqui (ou seja, este ), mas todas elas encobrir vários conceitos-chave, como:

  • Qual é a relação de eth1 com eth0 ? Em /etc/network/interfaces tenho que dizer eth1 para usar eth0 como network (geralmente é o endereço real do roteador físico)?
  • Preciso fazer alguma coisa para instruir eth1 a usar a Internet que entra em eth0 e passá-la para quem quiser na troca de rede?

Abordagem atual:

Aqui está o meu arquivo /etc/network/interfaces 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 ifconfig informa que as duas 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 route -n returns no 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.

EDIT: Aqui está o arquivo de configuração do isc-dhcp-server localizado em /etc/dhcp3/dhcpd.con , que copiei principalmente de este 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: Saída de sudo 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 estou faltando nessa configuração?

    
por puk 14.11.2013 / 01:39

2 respostas

14

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

  1. Se o 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 IPs de um servidor DHCP, se você não tiver configurado um servidor DHCP, você deve usar IPs fixos ou instalar um servidor DHCP.

  2. Você não tem servidores DNS configurados nos clientes. Quer devido à falta de servidor DHCP, ou você pode querer usar um servidor DNS local para toda a sua rede.

  3. Você não ofereceu as regras iptables (a saída de sudo iptables -L ), mas eu achei que você não ativou as regras da Masquerade, nem o encaminhamento de IP como é descrito .

  4. O endereço IP de eth1 não é recomendado. Qualquer IP terminado em 0 normalmente é a própria rede e a maioria dos roteadores / firewall fica confusa quando usada . Altere-o para 192.168.7.1 e, em geral, você vai ficar bem.

  5. Seu valor broadcast na interface eth1 não está correto. Está enviando pacotes para lugar nenhum. O valor correto (levando em conta 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 serão alcançados. Isto é o que você deve 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 passos e provavelmente você terá seu roteador funcionando.

    
por Braiam 14.11.2013 / 02:24
7

Braiam respondeu à minha pergunta, mas achei que seria útil fazer uma revisão completa aqui. Por favor, atualize isto se eu tiver cometido algum erro.

Primeiro, verifique se você tem duas placas de rede (NICs) e atualize o arquivo /etc/network/interfaces como tal (do não confunda isso com o arquivo /etc/networks ).

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 , broadcast e network , siga estas instruções .

Em seguida, vá até o cliente e edite o arquivo /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ções aqui mas siga-os exatamente , pois há vários arquivos dhcp , por isso, não confunda a pasta /etc/dhcp com /etc/dhcp3 e assim por diante.

    
por puk 15.11.2013 / 01:42

Tags