问题描述
在我的服务器上,我想为一个NIC分配多个IP地址,但不使用/etc/network/interfaces
中不推荐使用的ifconfig
或过时的”alias”表示法(如eth0:0
),因为在IP Aliasing(在www.kernel.org上),您可以阅读
IP-aliases are an obsolete way to manage multiple IP-addresses/masks per interface
最佳解决方案
-
如果您目前只需要一个额外的IP地址,则可以将其添加到计算机上的任何界面
sudo ip address add <ip-address>/<netmask> dev <interface>
例如
sudo ip address add 172.16.100.17/24 dev eth0
将使用24位网络掩码将
172.16.100.17
添加到为eth0
配置的地址列表中。你可以查看结果
ip address show eth0
然后你可以再次删除这个地址
sudo ip address del 172.16.100.17/24 dev eth0
当然,重新启动计算机时会丢失这些更改。
-
要使附加地址永久化,您可以通过添加表单的多个节来编辑文件
/etc/network/interfaces
iface eth0 static address 172.16.100.17/24
所以它看起来像
iface eth0 inet dhcp iface eth0 inet static address 172.16.100.17/24 iface eth0 inet static address 172.16.24.11/24
您甚至可以将
dhcp
保留为主地址。要在不重启的情况下激活这些设置,请使用
ifdown/ifup
之类的sudo ifdown eth0 && sudo ifup eth0
如果要远程连接到服务器,将这两个命令放在一行中是很重要的,因为第一个命令将丢弃您的连接!以这种方式给出ssh-session将存活下来。
次佳解决方案
使用新的工具包,就像使用旧工具包一样容易添加新的IP地址:
ip addr add 192.168.1.1/24 dev eth0
再次查看ip addr show
时,您会看到分配给该接口的第二个IP地址:
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
删除该IP地址:
ip addr del 192.168.1.1/24 dev eth0
iproute2套件:
iproute2套件是通过netlink协议在内核和用户空间之间进行进程间通信的通信套件。它应该取代整个标准的网络工具。这是他们取代的:
-
ifconfig
– >ip addr
和ip link
-
route
– >ip route
-
arp
– >ip neigh
-
iptunnel
– >ip tunnel
-
ipmaddr
– >ip maddr
-
netstat
– >ss