Como posso (da CLI) atribuir vários endereços IP a uma interface?

43

No meu servidor, quero atribuir vários endereços IP a uma NIC, mas sem usar a nota% "co_de%" obsoleta ou a notação "alias" obsoleta (como ifconfig ) em eth0:0 porque em IP Aliasing (em www.kernel.org) você pode ler

IP-aliases are an obsolete way to manage multiple IP-addresses/masks per interface

    
por guntbert 08.11.2014 / 19:45

3 respostas

47
  1. Se você precisar de um endereço IP adicional apenas para o momento, você poderá adicioná-lo a qualquer interface em sua máquina com

     sudo ip address add <ip-address>/<netmask> dev <interface>
    

    por exemplo

     sudo ip address add 172.16.100.17/24 dev eth0
    

    adicionaria 172.16.100.17 usando uma máscara de rede de 24 bits à lista de endereços configurados para o seu eth0 .

    Você pode verificar o resultado com

    ip address show eth0
    

    e você pode excluir esse endereço novamente com

    sudo ip address del 172.16.100.17/24 dev eth0
    

    É claro que essas alterações são perdidas quando você reinicializa sua máquina.

  2. Para tornar os endereços adicionais permanentes, você pode editar o arquivo /etc/network/interfaces adicionando tantas estrofes do formulário

    iface eth0 static
        address 172.16.100.17/24
    

    para que pareça

    iface eth0 inet dhcp
    
    iface eth0 inet static
        address 172.16.100.17/24
    
    iface eth0 inet static
        address 172.16.24.11/24
    

    Você pode até manter o dhcp do endereço principal.

    Para ativar essas configurações sem uma reinicialização, use ifdown/ifup like

    sudo ifdown eth0 && sudo ifup eth0
    

    É essencial para colocar esses dois comandos em uma linha se você estiver remotamente no servidor, porque o primeiro dropará sua conexão! Dada desta forma a sessão ssh irá sobreviver.

por guntbert 08.11.2014 / 20:10
20

Com o novo kit de ferramentas, é tão fácil quanto o antigo adicionar novos endereços IP:

ip addr add 192.168.1.1/24 dev eth0

Ao olhar com ip addr show novamente, você vê o segundo endereço IP atribuído à interface:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.100/24 brd 192.168.0.255 scope global eth0
    inet 192.168.1.1/24 scope global eth0
    inet6 fe80::223:54ff:fe45:f307/64 scope link
       valid_lft forever preferred_lft forever

Remova esse endereço IP com:

ip addr del 192.168.1.1/24 dev eth0

A suíte iproute2:

O pacote iproute2 é o conjunto de comunicação para comunicação entre processos entre o kernel e o espaço do usuário através do protocolo netlink. Deve substituir todas as ferramentas de rede padrão. Aqui está o que eles substituem:

  • ifconfig - > ip addr e ip link
  • route - > %código%
  • ip route - > %código%
  • arp - > %código%
  • ip neigh - > %código%
  • iptunnel - > %código%
por chaos 08.11.2014 / 20:01
0

Um caminho é:

sudo ip addr add 192.168.0.2/24 dev eth1
    
por Bert 08.11.2014 / 19:54