Criar nova sub-rede sobre a sub-rede existente

1

Eu tenho três servidores que atualmente possuem ips 192.168.1.1, 192.168.1.2 e 192.168.1.3. Eles podem se ver e conversar um com o outro. Eu gostaria de criar uma segunda sub-rede, em cima do 192.168.1.x, que é 10.170.x.x.

Eu posso atribuir ips para cada um dos três servidores, 10.170.0.1, 10.170.0.2 e 10.170.0.3, com ip addr add 10.170.0.1 dev eth0 . O problema que estou tendo é como fazer o roteamento. Não consigo executar ping em nenhum servidor pela rede 10.170.x.x. Acredito que preciso criar algumas pontes ponto-a-ponto, mas não faço ideia de como começar. Alguma idéia?

    
por Ricardo Marimon 01.04.2015 / 15:32

7 respostas

11

Como foi observado por outros, quando você usa ip address add e não fornece uma máscara de rede ou intervalo de CIDR, /32 é assumido e, portanto, nenhuma rota é criada para a sub-rede.

Para resolver o problema, você também adiciona o intervalo do CIDR:

ip addr add 10.170.0.1/16 dev eth0

Para fazer a alteração persistente , adicione-a a /etc/network/interfaces . Isso pode ser feito de forma barata e suja por meio de um comando post-up , mas a maneira correta é adicionar uma segunda estrofe contendo apenas esse endereço:

auto eth0
iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    gateway 192.168.1.250

iface eth0 inet static
    address 10.170.0.1
    netmask 255.255.0.0

Observe, em particular, que, apesar do que você lerá em guias desatualizados da Internet, você não usará eth0:0 para o segundo endereço IP. Este formulário está obsoleto e tem sido há anos (o que significa que é provável que seja removido do Linux a qualquer momento).

    
por 05.04.2015 / 03:17
3

Tente fazer ip addr add 10.170.0.1/16 dev eth0 para especificar uma máscara de rede. Aposto que eles estão adicionando o espaço / 32 IP de outra forma (embora eu não tenha confirmado isso).

    
por 04.04.2015 / 21:18
1

Este é um desafio interessante para o qual existem várias soluções. O texto da sua pergunta deixa algumas perguntas, mas acho que, no contexto, tenho uma ideia do que você está tentando fazer.

Suponho que esses hosts estejam todos no mesmo segmento de rede física - por exemplo, conectados a um hub ou switch e podem pingar uns aos outros na rede 192.168.1.x sem passar por um roteador. Neste caso, você realmente quer uma segunda rede em paralelo ao original - um pequeno detalhe, mas relevante para entender o que está acontecendo, eu acho.

Eu acho que é provável que a resposta de Eric Renouf acima esteja quente na trilha - por padrão, iproute2 provavelmente adicionará uma máscara de rede de 32 bits - 255.255.255.255 - que está correta em várias situações onde o roteamento está envolvido / necessário , como em um grande provedor de hospedagem, onde algumas máquinas têm vários endereços IP, entregues ao longo do tempo. Você provavelmente vai querer uma máscara de rede de 24 bits - 255.255.255.0 - ou até mesmo um de 16 bits, se você realmente pretende usar todo o espaço 10.170.x.x.

Como um aparte, o bit '.x.x' dos endereços é realmente um detalhe importante aqui, normalmente nós descreveríamos uma rede usando seu '' endereço de rede '', o endereço de baixo em um determinado intervalo de sub-redes. Nesse caso, seus endereços de rede são 192.168.1.0/24 e 10.170.0.0/16. É possível ter sub-redes menores que a classe de tamanho C / 24 bits, em que o endereço de rede não é zero. Não vou entrar em muitos detalhes, mas sugiro investir algum tempo lendo sobre sub-redes.

Agora que sabemos evitar a máscara de rede padrão e por que, considere:

ip addr del 10.170.0.1 dev eth0
ip addr add 10.170.0.1/16 dev eth0

Repita em cada máquina. Se você quiser estes configurados na inicialização, considere também adicionar esta linha como um comando post-up em / etc / network / interfaces.

Espero que isso ajude!

    
por 04.04.2015 / 22:27
1

Consegui que isso funcionasse adicionando uma rota com um endereço de origem:

para a máquina 192.168.1.1 / 10.170.0.1, seria

$ ip route add 10.170/16 dev eth0 src 10.170.0.1

mais geralmente

$ ip route add 10.170/16 dev eth0 src "ip address of host"

    
por 06.04.2015 / 01:48
0

Acho que a maneira certa de fazer isso é a seguinte:

  • crie subinterfaces (por exemplo, eth0: 1) para a nova sub-rede,
  • atribua subinterfaces a uma VLAN marcada (talvez seja necessário instalar o pacote vlan se o host for linux)
  • configure a VLAN com o mesmo ID no seu roteador E você alterna,
  • faça roteamento baseado em destino normal entre sua rede 198.168.1.xea rede 10.170.x.x com seu roteador.

Isso pode ou não funcionar se servidores conectados a switches não gerenciados, mas com switches "inteligentes" ou gerenciados, isso não é um problema.

Eu tenho essa configuração trabalhando com 2 redes IPv6 de diferentes provedores com grupos de hosts com uma única interface ethernet comunicando-se em ambas as redes e funciona muito bem.

    
por 09.04.2015 / 05:04
0

Você só precisa verificar o seu roteamento, acho que você acabou de perder isso.

ip route show

Provavelmente, o que falhou é que você atribuiu o endereço IP a cada host sem indicar a máscara de rede, você pode tentar fazer isso

ip add add 10.170.0.1/24 dev eth0

Isso também adicionará a máscara, criando assim a entrada de roteamento necessária para que seus hosts saibam como alcançar um ao outro.

Se você quiser apenas adicionar a entrada de roteamento

ip route add 10.170.0.0/24 dev eth0
    
por 09.04.2015 / 15:01
0

As máquinas virtuais do servidor? se assim for, você pode considerar adicionar interfaces suplementares.

No entanto, como mencionado por outros, basta adicionar os IPs com a máscara de rede apropriada e, em seguida, os dois hosts poderão se comunicar.

ctxadm@ctx-router1:~$ sudo ip addr add 10.75.0.5/24 dev eth1

Prova de 2 debian em execução no vmware:

ctxadm@ctx-router1:~$ sudo ip addr list eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:0c:29:a4:1f:e6 brd ff:ff:ff:ff:ff:ff
   inet 10.92.0.254/24 brd 10.92.0.255 scope global eth1
   inet 10.75.0.5/24 scope global eth1

ctxadm@web1:~$ sudo ip addr list eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:0c:29:22:1a:8a brd ff:ff:ff:ff:ff:ff
   inet 10.92.0.20/24 brd 10.92.0.255 scope global eth0
   inet 10.75.0.6/24 scope global eth0

ctxadm@ctx-router1:~$ ping 10.75.0.6
   PING 10.75.0.6 (10.75.0.6) 56(84) bytes of data.
   64 bytes from 10.75.0.6: icmp_req=1 ttl=64 time=0.157 ms
   64 bytes from 10.75.0.6: icmp_req=2 ttl=64 time=0.185 ms

ctxadm@ctx-router1:~$ sudo arp -a
   ? (192.168.0.20) at 20:cf:30:7f:6c:3e [ether] on eth0
   ? (10.75.0.6) at 00:0c:29:22:1a:8a [ether] on eth1
   ? (192.168.0.1) at 00:10:18:de:ad:05 [ether] on eth0

É isso aí!

Para depurar use tcpdump, verifique a entrada arp ..

    
por 09.04.2015 / 22:26