在我的服务器上,我想为一个 NIC 分配多个 IP 地址,但不使用弃用ifconfig
或过时的“别名”表示法(如eth0:0
),/etc/network/interfaces
因为IP 别名(在 www.kernel.org 上)你可以阅读
IP 别名是管理每个接口的多个 IP 地址/掩码的过时方法
答案1
如果你暂时需要一个额外的 IP 地址,你可以将它添加到你机器上的任何接口
sudo ip address add <ip-address>/<prefix-length> dev <interface>
例如
sudo ip address add 172.16.100.17/24 dev eth0
将添加
172.16.100.17
使用 24 位网络前缀列表的地址配置为您的 ip 地址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 会话将得以保留。
答案2
使用新工具包,添加新 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
答案3
一种方法是:
sudo ip addr add 192.168.0.2/24 dev eth1