LINUX配置ipv6地址时出现ifconfig: SIOCSIFADDR: Permission denied
问题描述
在做ipv6的开发中,需要在代码中修改桥端口(br0)的ipv6本地链路地址,思路是先将原来的地址删除,再添加新的地址,如下图中,要将地址改成fe80::100/64,则需要先删除原来的地址:
ifconfig br0 del fe80::1/64
ifconfig br0 del ffe80::e267:b3ff:fe00:2/64
再添加地址:
ifconfig br0 del fe80::100/64
但串口提示:fconfig: SIOCSIFADDR: Permission denied
如果不擅长原有地址的情况下添加新的ipv6地址,则不会报错,这是为什么呢?
问题分析
这让人很费解,为什么直接添加不会报错,删掉原来的,再添加就会报错呢,但其实对比之下已经有一些方向了,关键我们敲命令删除的时候系统会做什么操作,重新添加的时候又会做怎么操作
从错误的提示上看是权限不足,但从现象分析这肯定不是因为当前不是root用户导致的,还是得从源码去分析;ipv6内核相关代码可以在linux2.x.x.x/net/ipv6/目录下查找,ifconfig删除ipv6