Como configurar um servidor linux como roteador

34

Motivação:

Quero usar meu servidor linux em vez do roteador sem fio médio por vários motivos

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

Configuração:

Por fim, a conexão entra em um modem e diretamente no meu servidor eth0, e depois eth1gera um switch de rede ao qual todos os outros computadores clientes se conectam via cabos ethernet (esqueça a conexão sem fio no momento). 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 switch de rede, que entra eth0como especificado acima.

Tutoriais atuais:

Eu olhei para alguns tutoriais (o tutorial do Ubuntu é o melhor), e para algumas das perguntas do roteador aqui ( por exemplo , esta ), mas todas abordam vários conceitos-chave, como:

  • Qual é eth1a relação eth0? Em /etc/network/interfacesque devo informar eth1para usar eth0como o network(geralmente é o endereço físico do roteador)?
  • Preciso fazer algo para instruir eth1a acessar a Internet que entra eth0e passá-la para quem quiser no comutador de rede?

Abordagem atual:

Aqui está o 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 as duas placas de rede 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 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.

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

Questão:

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

puk
fonte
Qual dhcpd você está usando?
TML
@TML Pelo meu entendimento dhcp(e, portanto dhcpd), não é obrigatório e serve apenas para centralizar todos os ips estáticos no servidor (em vez de alterar o /etc/network/interfacesarquivo em todos os hosts). Portanto, decidi não experimentar isso até que isso funcione. No entanto, eu dhcp3-serverinstalei, bem comoisc-dhcp-server
puk
Se você deseja que o cliente obtenha um endereço IP do dhcp, é necessário executar um dhcpd; você deve postar a configuração para qualquer um desses dhcpd's atualmente ativo, pois é aí que a fonte do problema será re: cliente não recebendo um IP. Pessoalmente, eu recomendaria o dnsmasq, pois também traz alguns recursos úteis para a resolução interna do DNS.
TML
@TML Adicionei o dhcpd.confarquivo e indiquei que estou usando #isc-dhcp-server
141413 puk
11
Você deve ter mais dois pontos: 5. Estou enjoado e cansado de ter apenas o controle parcial do dispositivo. 6. Estou cansado de ter um roteador que possa ter um backdoor. O ponto 6 é algo real que pode estar agora em qualquer roteador. Alguns roteadores vêm com recursos extras, como senha codificada ou ouvindo secretamente alguma porta.
precisa saber é o seguinte

Respostas:

16

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

  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 IPs de um servidor DHCP; se você não configurou um servidor DHCP, use IPs fixos ou instale um servidor DHCP.

  2. Você não tem servidores DNS configurados nos clientes. 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 iptablesregras (a saída de sudo iptables -L), mas eu pude supor que você não ativou as regras Masquerade, nem o encaminhamento de IP, conforme descrito .

  4. O endereço IP de eth1não é recomendado. Qualquer IP finalizado 0normalmente é a própria rede, e a maioria dos roteadores / firewall fica confusa quando 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ê 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 e provavelmente você terá seu roteador funcionando.

Braiam
fonte
Saída adicionada de sudo iptables -Lpara question
puk
Para não ser exigente, mas para o interesse de qualquer outra pessoa que esteja lendo esta resposta, você poderia explicar quais são alguns desses valores do dhcpd.conf: linha 4 192.168.7.255e linha 8subnet 192.168.7.0
puk
@puk que é muito complexo para explicar nos comentários, mas, para dizer bem, .255é o endereço de transmissão usado normalmente; qualquer pacote enviado para essa direção será enviado a todos os sistemas nas mesmas sub-redes. O que significa que qualquer pacote enviado para 1.2.3.255 ele vai ser recebido por qualquer sistema que início de IP com 1.2.3 pois todos eles estão na mesma sub-rede en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam
Não está funcionando. Eu quero ver se o problema é dhcpou a rede. Irá fazer um endereço IP estático para testar. para o IP estático no cliente, eu uso eth1o endereço IP como gateway?
puk
11
Provavelmente porque a transmissão e a rede no eth1 do roteador estão apontando para 192.168.1.x em vez de 192.168.7.x; se você não puder falar de eth1 no roteador para eth0 no cliente, os DHCPACKs nunca chegarão ao cliente (e consequentemente nunca obterão o IP).
TML
9

Braiam respondeu à minha pergunta, mas achei que seria útil fazer uma explicação completa aqui. Atualize isso se eu cometi algum erro.

Primeiro, verifique se você possui duas placas Ethernet (NICs) e atualize o /etc/network/interfacesarquivo como tal ( não confunda 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 o seu gateway, broadcaste networksiga estas instruções .

Em seguida, entre no cliente e edite o arquivo /etc/network/interface(novamente, não /etc/networks ) para o 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 segui-las exatamente , pois há vários dhcparquivos para que não confunda a pasta /etc/dhcpcom /etc/dhcp3e assim por diante.

puk
fonte