![如何使用“ip addr add”手动分配永久/静态 IP 地址?](https://linux22.com/image/82364/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E2%80%9Cip%20addr%20add%E2%80%9D%E6%89%8B%E5%8A%A8%E5%88%86%E9%85%8D%E6%B0%B8%E4%B9%85%2F%E9%9D%99%E6%80%81%20IP%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
将 IP 地址分配给该网络接口后,使用以下任一命令:
ip addr add 10.0.0.0 dev eth1 valid_lft forever preferred_lft forever
ip addr replace 10.0.0.0 dev eth1 valid_lft forever preferred_lft forever
ip addr add 10.0.0.0 dev eth1
ip addr replace 10.0.0.0 dev eth1
我可以验证ip addr
IP 地址是否eth1
设置10.0.0.0/32
得很好(我认为):
...
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 08:00:27:4d:1e:43 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.0/32 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe4d:1e43/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
...
我自己开始ping
...ping
命令在 31 号 ping 时挂起:
username@computer:~$ ping 10.0.0.0
PING 10.0.0.0 (10.0.0.0) 56(84) bytes of data.
64 bytes from 10.0.0.0: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 10.0.0.0: icmp_seq=2 ttl=64 time=0.034 ms
...
64 bytes from 10.0.0.0: icmp_seq=30 ttl=64 time=0.038 ms
64 bytes from 10.0.0.0: icmp_seq=31 ttl=64 time=0.041 ms
一旦 ping 挂起,我可以验证ip addr
其 IP 地址是否eth1
已消失:
...
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 08:00:27:4d:1e:43 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fe4d:1e43/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
...
如何使用 为网络接口分配静态 IP 地址ip(8)
,而不让它消失?(系统重启后消失即可)
我在跑步Ubuntu 14.04
。
从网上研究我的问题来看,似乎修改文件/etc/network/interfaces
是解决方案,但这是不可取的,因为这种解决方案不像ip(8)
命令那样可移植。
答案1
你的问题不是ip addr
某个进程(网络管理器?)删除了IP地址。不幸的是,我不知道是否可以确定哪个进程进行了此访问。
如果干扰进程调用,ip
则应该可以使用进程记帐 (man acct),但如果直接通过 NETLINK 套接字进行配置则不行。
您可以终止或停止可疑进程,以找出是哪个进程执行了此操作。