一般情况下需要通过DHCP获取固定IP地址的需求,都是在DHCP服务器端进行配置实现的,但是当DHCP服务器不再自己管控的范围之内的时候,就需要使用一些小技巧来获得指定的IP地址。
OpenWrt
1 2 3 4 5 6 7 8 9 10
|
ps | grep udhcp > 28800 root 1252 S grep udhcp > 30897 root 1252 S udhcpc -p /var/run/udhcpc-wan.pid -s /lib/netifd/dhcp.script -f -t 0 -i wan -x hostname:openwrt -C -R -O 121
dhcpc -i wan -r 192.168.1.100 -x hostname:lab.kuretru.com -C -R -O 121
ifdown wan && ifup wan
|
如果该方法失败,则先将wan口配置为静态IP地址,等DHCP租约过期后,先执行命令,待获取成功后,再重新配置wan口为DHCP模式。
有用的脚本:
- /lib/netifd/proto/dhcp.sh
- /lib/netifd/dhcp.script
基于NetworkManager的Linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
cat /etc/NetworkManager/NetworkManager.conf > [main] > plugins=ifupdown,keyfile + dhcp=dhclient
systemctl restart NetworkManager
ps -aux | grep dhclient > root 1473 0.0 0.0 99904 6312 ? Sl 22:44 0:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/NetworkManager/dhclient-enp14s0.pid -lf /var/lib/NetworkManager/dhclient-0dad5923-e1de-3bf8-b14f-7ca0d52fb006-enp14s0.lease -cf /var/lib/NetworkManager/dhclient-enp14s0.conf enp14s0
vim /var/lib/NetworkManager/dhclient-0dad5923-e1de-3bf8-b14f-7ca0d52fb006-enp14s0.lease > lease { > interface "enp14s0"; > fixed-address 192.168.1.100; > }
systemctl restart NetworkManager
|
其他使用dhclient命令的操作系统
直接参考基于NetworkManager的方式,关键点在于修改lease文件,其默认路径为:/var/lib/dhcp/dhclient.leases
。