IP命令--mesh路由重启后IP地址被重新分配的问题

如下查看当前的IP地址信息

root:/# ip addr show br-lan
16: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 00:a0:bc:af:30:c0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.225/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet 192.168.200.254/24 scope global br-lan
       valid_lft forever preferred_lft forever
    inet6 fe80::2a0:bcff:feaf:30c0/64 scope link 
       valid_lft forever preferred_lft forever

其中192.168.1.225是我的IP地址,192.168.200.254则是与服务器对接的IP地址,一旦此IP地址发生改变,路由便无法接受服务器的命令设置等等。

然而当路由重启的时候(或者刚开机的时候),如果把网线拔出来(即无网的状态),重启完成后再插上网线,IP信息就会变成下面这样。

下面是重启时拔出网线的IP信息
root/# ip addr show br-lan
16: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 00:a0:bc:af:30:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.1/24 brd 192.168.200.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet 192.168.200.254/24 scope global secondary br-lan
       valid_lft forever preferred_lft forever
    inet6 fe80::2a0:bcff:feaf:30e0/64 scope link 
       valid_lft forever preferred_lft forever
可以看到IP地址还是这个192.168.200.254

但是重新插上网线之后,就会重新分配IP,那么192.168.200.254就会被刷掉!

# ############# release old lan ip ###############
插上网线之后就会触发网络配置的服务起来,板子就会重新获取IP,配置网络等
root:/# ip addr show br-lan
16: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 00:a0:bc:af:30:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.107/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet6 fe80::2a0:bcff:feaf:30e0/64 scope link 
       valid_lft forever preferred_lft forever
 可以看到,192.168.200.254这个IP被重新分配的,但正常是不应该刷掉这个IP地址,因为一旦刷掉,路由就无法接收服务器传过来的命令了!
 即此IP是路由与服务器正常“交流”的IP地址!

修正此BUG的方法:
修改/lib/netifd/dhcp.script文件
修改前如下:

case "$1" in
        deconfig)
                deconfig_interface		//释放IP
        ;;  
        renew|bound)
                setup_interface  		//绑定IP
        ;;  
esac

修改后如下:

case "$1" in
        deconfig)
                deconfig_interface
        ;;  
        renew|bound)
                setup_interface
                EST_server="$(uci get cymesh.mesh.est_server)"			//获取当前与mesh的ip地址,即192.168.200.254,保存到EST_server
                ret=$(ip addr |grep "inet $EST_server")
                if [ -z "$ret" ]; then
                        ip addr add dev br-lan $EST_server/255.255.255.0	//将EST_server中保存的地址重新设置,当插上网线时,会触发重新分配绑定IP地址的线程,当跑到这里的时候,就会被再次设为我们要的地址(192.168.200.254),即将br-lan设置为此ip
                        echo "-----add 192.168.200.254 to br-lan interface-------" > /dev/console
                fi    
        ;;  
esac

以上便已修复此BUG!

uci是openwrt的uci命令,下面是uci命令的参数

batch
export     [<config>]
import     [<config>]
changes    [<config>]
commit     [<config>]
add        <config> <section-type>
add_list   <config>.<section>.<option>=<string>
show       [<config>[.<section>[.<option>]]]
get        <config>.<section>[.<option>]
set        <config>.<section>[.<option>]=<value>
delete     <config>[.<section[.<option>]]
rename     <config>.<section>[.<option>]=<name>
revert     <config>[.<section>[.<option>]]

附:ip addr 是查看ip信息的命令
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值