How do I add an additional IP address to /etc/network/interfaces?

197,272

Solution 1

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address aaa.aaa.aaa.aaa
  netmask 255.255.254.0
  gateway bbb.bbb.bbb.bbb
  dns-nameservers ccc.ccc.ccc.ccc ddd.ddd.ddd.ddd eee.eee.eee.eee
  dns-search vps-number.com

auto eth0:0
iface eth0:0 inet static
  address fff.fff.fff.fff
  netmask 255.255.254.0

Then you can run sudo ifup eth0:0 to bring it up and sudo ifdown eth0:0 to bring it down.

Solution 2

You can just have repeated iface stanzas for the same interface. Example from https://wiki.debian.org/NetworkConfiguration#Multiple_IP_addresses_on_one_ :

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42/24
    gateway 192.168.1.1

iface eth0 inet static
    address 192.168.1.43/24

iface eth0 inet static
    address 192.168.1.44/24

# adding IP addresses from different subnets is also possible
iface eth0 inet static
    address 10.10.10.14/24

So just the solution above but drop the :x suffix, which as Heihachi points out is outdated.

(The ip addr suggestion is the worst. It's ugly and incomplete, as you'll have to also add a down variant or ifdown won't work very cleanly.)

Solution 3

For an extra IP address, I usually add:

up ip addr add fff.fff.fff.fff/prefixlen dev $IFACE

to the bottom of the iface eth0 inet static stanza for future reboots and then run the command sudo ip addr add fff.fff.fff.fff/prefixlen dev eth0 again manually to activate it directly.

If your netmask is 255.255.254.0 then prefixlen should be 23 for you.

I'd love to know if there's a better way, though.

Share:
197,272

Related videos on Youtube

babbaggeii
Author by

babbaggeii

Updated on September 18, 2022

Comments

  • babbaggeii
    babbaggeii over 1 year

    I have an extra IP address available to my server, and so I need to assign it in the interfaces file. At the moment, I've got this:

    auto lo
    iface lo inet loopback
      auto eth0
    
    iface eth0 inet static
      address aaa.aaa.aaa.aaa
      netmask 255.255.254.0
      gateway bbb.bbb.bbb.bbb
      dns-nameservers ccc.ccc.ccc.ccc ddd.ddd.ddd.ddd eee.eee.eee.eee
      dns-search vps-number.com
    

    What do I add/assign my new IP address (fff.fff.fff.fff)? And how do I then restart it to accept the new configuration?

  • Alexander Kim
    Alexander Kim almost 9 years
    This is outdated variant with aliases. Use below one with "ip addr" instead.
  • reallynice
    reallynice over 8 years
    From the documentation at your link, talking about the most modern method for doing things (called iproute2): Note however that this method is dangerous! Certain driver/hardware combinations may sometimes fail to bring the link up if no labels are assigned to the alias interfaces. Considering that it's official documentation saying that the new way isn't such reliable, I'd prefer to stick with the working deprecated one.
  • reallynice
    reallynice over 8 years
    Upvote because of official and precise documentation reference, but not for "a better solution", since it's marked as dangerous in the official documentation.
  • Eric Carvalho
    Eric Carvalho over 8 years
    It may be old (and maybe outdated), but there's nothing wrong with using this method, since it was not marked 'deprecated' and there's no plan for it being removed in the near future. IMHO this method is cleaner and safer than the others (see the Wilmer's answer and its comments).
  • Wilmer
    Wilmer almost 8 years
    @reallynice Reasonable point, though IMHO if this causes problems on a system that sounds to me like a buggy kernel/driver. I've been using multiple IP addresses on a single interfaces without the ugly :0/:1/etc aliases for years.(Also I'm pretty sure the solution from the Wiki is functionally equivalent to Robbie's solution above.)
  • jbo5112
    jbo5112 almost 7 years
    @Wilmer I have a vmxnet3 device (VMware ESXi 6.5) on Ubuntu 16.04, and I could only get the new way to bring up the first device. Dropping the :x suffix was clearly not better for me. The documentation cleared up an error I was getting with the :x suffix though.
  • IvRRimUm
    IvRRimUm over 6 years
    P.S If using auto eth1(it didnt on AWS) does not working use as in the example auto eth0:0.
  • mekkanizer
    mekkanizer over 5 years
    thank you so much, the accepted approach doesn't work for bonding (ifenslave), but this does!
  • sdaffa23fdsf
    sdaffa23fdsf about 5 years
    up is problematic as network-online.target does not wait for it. systemd services like nginx will fail to bind on IP added by up on startup time
  • x-yuri
    x-yuri almost 5 years
    The last known issue with iproute2 method was in 2015. And the legacy method (have you noticed the name?) didn't work for me on Debian Stretch. It seemed like the later options (from eth0:0) overrided the earlier ones (from eth0). That is, after systemctl restart networking I ended up with just the second IP (the first IP was detached).
  • x-yuri
    x-yuri almost 5 years
    ...Then, in Debian Stretch (Ubuntu 16.04 Xenial) they added: 'Multiple "iface" stanzas can be given for the same interface, in which case all of the configured addresses and options for that interface will be applied when bringing up that interface. [...] It can also be used to configure multiple addresses of the same type on a single interface.'
  • x-yuri
    x-yuri almost 5 years
    For Debian Stretch/Ubuntu 16.04 Xenial or later there's the official solution.
  • x-yuri
    x-yuri almost 5 years
    The legacy solution didn't work for me on Debian Stretch, I ended up with just the second IP. See the iproute2 method, it worked.
  • 0xC0000022L
    0xC0000022L over 4 years
    One would always use $IFACE instead of hardcoding the interface name in the up/down stanzas if one opts to use this method.
  • Alexis Wilke
    Alexis Wilke over 3 years
    This worked properly under Ubuntu 18.04 on a Jetson AGX Xavier. The old method (using eth0:0) did not let me even ping the second IP address locally.