OpenWrt系统下的DHCP客户端如何获得固定的IP地址?

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?在实际应用中,例如NAS、监控系统、二级或多级路由等,如果需要远程访问的时候,我们希望它们的IP地址是固定的,这样我们在设置端口转发的时候就不需要经常去变化IP值了。下面我们就以挂在二级路由下NAS服务为例(假设其配置情况如下图),来详细说明一下具体的设置过程。

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-1

一级路由的WAN口接光猫的宽带口,通过PPPoe拨号协议获得IP公网地址,再通过DDNS设置关联上固定的域名:123.red-yellow.net,这样就可以通过转发设置(Port Forwards)远程访问二级路由LAN口下挂载的NAS服务了。假设我们采用的是群晖NAS,其缺省端口号为5000,那么我们在一级路由上可以这样设置转发(在OpenWrt系统的Luci界面,点“Network – Firewall”进入防火墙设置,再点“Port Forwards”进入转发设置,点“Add”按钮添加):

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-2

为安全起见,在远程访问时通常我们不会使用缺省的端口号,上图中我们使用了5566端口号。转发到一级路由的LAN口,即二级路由的WAN口的5000端口号上(假设其内网IP地址为192.168.1.218)。然后再设置二级路由的端口转发,即将WAN的5000端口转发到NAS的5000上(假设NAS获得的内网地址是192.168.2.218):

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-3

这时,在远程电脑的浏览器地址栏输入:123.red-yellow.net:5566,就可以进入NAS服务的管理界面了:

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-4

是不是很简单?但是实际上这样的设置还是存在很大的一个漏洞的,由于我们的二级路由以及NAS与上一级路由都是采用DHCP服务,DHCP的客户端所获得的IP地址是由DHCP服务器端(即上一级路由)随机分配的,就是说现在的二级路由WAN的IP地址192.168.1.218和NAS的IP地址192.168.2.218是可能会发生变化的,通常在路由器重启及NAS重启时都可能发生这种情况,而只要其中的任一个IP地址发生变化,转发的规则链就断开了,远程访问就会失败。

所以,接下来我们还需要进一步设置,将192.168.1.218这个IP地址永远给二级路由的WAN口,将192.168.2.218这个地址给NAS网卡口。下面以一级路由器上的设置为例:

方法一、在DHCP Client模式下,将IP地址与MAC地址绑定

在一级路由器的Luci界面,点”Network – DHCP and DNS“进入DHCP及DNS设置界面,再点”Static Leases“进入静态或固定地址的设置界面:

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-5

点”Add“按钮添加静态地址设置规则,即设置DHCP根据客户端的MAC地址给予指定的IP地址,因为客户端的MAC地址是固定的,所以其获得的IP地址也将是固定的。

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-6

1、Hostname栏可以不填,如果非要填的话,你必须先知道自己的设备的Hostname,如果设备正连接在路由器上,那么在”Static Leases“设置页的”Active DHCP Leases“部分可以看到所有的Hostname,将自己要设置的那个设备(注:这里指二级路由器)的Hostname值输入即可,千万不可乱输。

2、MAC-Address栏输入相应的MAC值:00:11:22:33:44:55。

3、IPv4-Address栏输入固定的IP地址:192.168.1.218。

4、Lease time栏输入:infinite,让它永久有效。

5、DUID及IPv6-Suffix(hex)栏,不设置IPv6地址,可以不填。

点”Save“按钮,回到”Static Leases“设置页面,再点”Save & Apply“使设置生效就OK,你可以重启系统测试一下二级路由WAN口的IP地址是否会发生变化。

二级路由器上的设置过程与一级路由器相同,这里就不再展开了。

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-7

设置完成之后,不管是一级路由,还是二级路由,亦或NAS设备重启,都不会破坏转发链条的有效性,后续远程访问NAS服务的过程也将变得稳定、可靠。

方法二、将WAN口的DHCP Client模式改为Static address

方法一我们设置的是DHCP的服务器端,方法二则是设置DHCP的客户端,将客户端的获取IP地址的协议从DHCP Client模式改为Static address模式。

1、在二级路由器Luci界面,点“Network – Interfaces”进入接口设置界面,在WAN设置行,点“Edit”进入编辑状态:

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-8

在原DHCP Client协议模式下,如果我们没有按方法一进行MAC和IP绑定的动作,DHCP服务器给的IP地址是随机的,像上图中给的就是192.168.1.166,现在我们需要修改协议模式,使WAN口的IP地址固定为192.168.1.218。

2、在Protocol栏的下拉菜单中选择“Static address”协议:

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-9

3、点“Switch protocol”按钮进入协议配置界面:

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-10

在“General Settings”设置界面中,“IPv4 address”栏输入:192.168.1.218,“IPv4 netmask”栏的下拉菜单中选择:255.255.255.0,“IPv4 gateway”栏输入:192.168.1.1,“IPv4 broadcast”栏输入:192.168.1.255,其它项目都保持缺省设置即可。

4、点“Save”按钮保存,系统会自动回到Interfaces界面,再点“Save & Apply”按钮使设置生效:

OpenWrt系统下的DHCP客户端如何获得固定的IP地址?-11

从上图可以看到,WAN口IP地址已变更为我们所设定的192.168.1.218。NAS端的设置与OpenWrt系统略有不同,但原理是一样,这里不再累述。

PS:这种方法存在一定的缺陷,如果你要设置的静态地址由DHCP服务器随机分配给了其它的LAN口(也包括无线LAN)时,这时静态地址模式会无法工作。而且这种情况发生的概率还挺高的,例如当你将设置为静态地址模式的路由器或其它设备关闭时,如果这时又有新的设备要连接到LAN口,DHCP服务器端就有可能将你所关闭设备正在用的静态地址随机分配给新接入的设备,这时你再打开关闭的设备时就无法获取你所设定的静态IP地址了。另外,在实践中可能还有设备不支持静态地址设置模式的,所以一般的情况我们还是建议采用方法一更安全、更可靠。