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

43

No meu servidor, desejo atribuir vários endereços IP a uma NIC, mas sem usar a ifconfignotação obsoleta ou obsoleta de "alias" (como eth0:0) /etc/network/interfacesporque no Aliasing de IP (em www.kernel.org) você pode ler

Os aliases de IP são uma maneira obsoleta de gerenciar vários endereços IP / máscaras por interface

Guntbert
fonte
ifconfig está obsoleto? Eu não sabia
Mahesh
@ Mahesh Sim, ifconfig é um artefato da era SysV. 'iproute2' é a ferramenta mais moderna. O ifconfig estará disponível por um tempo em várias distros, mas sim, está obsoleto; "obsoleto" é apenas um coloquialismo que costumamos denotar "procure algo mais novo para usar".
David Betz

Respostas:

48
  1. Se você precisar de um endereço IP adicional por um momento, 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.17usando 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 este 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ê reinicia sua máquina.

  2. Para tornar os endereços adicionais permanentes, você pode editar o arquivo /etc/network/interfacesadicionando 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 dhcpendereço principal.

    Para ativar essas configurações sem reiniciar, use ifdown/ifupcomo

    sudo ifdown eth0 && sudo ifup eth0
    

    É essencial colocar esses dois comandos em uma linha se você estiver remotando no servidor, porque o primeiro interromperá sua conexão! Dada dessa maneira, a sessão ssh sobreviverá.

Guntbert
fonte
Talvez você possa criar uma VPN com mais de um endereço IP instalando a partir do gerenciador de software.
Michael Michael
Nenhuma reinicialização é necessária no Ubuntu 16.04.3 LTS após adicionar ou excluir um IP
Daniel F
1
parece que ifdown foi descontinuado nas versões mais recentes do Ubuntu.
Sajuuk
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 procurar ip addr shownovamente, 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

O conjunto iproute2:

O conjunto 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. Ele deve substituir todas as ferramentas de rede padrão. Aqui está o que eles substituem:

  • ifconfig-> ip addreip link
  • route -> ip route
  • arp -> ip neigh
  • iptunnel -> ip tunnel
  • ipmaddr -> ip maddr
  • netstat -> ss
caos
fonte
Obrigado por fornecer os comandos correspondentes.
guntbert
thx @chaos, bem, posso ter mais ip do que o meu não de interfaces no meu sistema ??
Lazarus
@jazzz sim, como você pode ver na saída da minha interface acima, existem 2 endereços IP atribuídos a ela (192.168.0.100 e 192.168.1.1). Você pode adicionar outro, se desejar.
caos
@chaos, mas como posso usá-los, por exemplo, quero criar um grupo para multicasting, posso formar um grupo a partir deles ,, você pode consultar a minha pergunta askubuntu.com/questions/547105/…
lazarus
1
@chaos Estou aceitando minha própria resposta em vez da sua excelente, porque a sua não possui a "permanência" que eu espero em uma configuração de servidor.
guntbert
0

Uma maneira é:

sudo ip addr add 192.168.0.2/24 dev eth1
Bert
fonte