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地址了。另外,在实践中可能还有设备不支持静态地址设置模式的,所以一般的情况我们还是建议采用方法一更安全、更可靠。

OpenWrt系统设定(三)- 系统设定备份及固件升级

 

三、系统设定备份及固件升级

受益于OpenWrt系统维护团队及全球开发者的不懈努力,OpenWrt系统得以不断地完善和发展,通常每隔一段时间就会有新的发布版Release Version出现。OpenWrt系统爱好者们可以经常去OpenWrt官网看看是否有适合自己路由器的最新版本发布,觉得需要的话就下载下来给路由器升级一下系统,使其能够应用到最新的技术、发挥出最佳功效。OpenWrt系统的固件分“发布版”和“开发版”两条线管理,“Release发布版”是给一般使用者使用的;而“Snapshot开发版”是为OpenWrt系统的开发人员或测试人员使用的。每个版本又同时会出两个针对不同环境应用的固件,即“出厂固件Factory Firmware”和“升级固件Sysupgrade Firmware”。“出厂固件”是为第一次刷OpenWrt系统固件时使用的,“升级固件”是为已刷旧版OpenWrt的用户升级而用的。见下图,大家看一下固件的文件名就能很容易区分开来:

OpenWrt固件分类

所以在升级系统前,你需要根据自己的需求先下载好合适的固件,这是第一步。然后再到系统设定备份及固件升级页面进行下一步的操作,点“system – Backup / Flash Firmware”。

因为系统安装之后,多多少少会对系统进行设置,所以为了避免在升级之后重复设置过程,通常需要将设置的内容进行”备份Backup“。点”Generate archive“按钮,就会生成备份文件,如:backup-OpenWrt_Office-2020-10-29.tar.gz;等固件升级完成之后,再点”Upload archive…”,选择备份文件,再点“Upload”上传即可。

如果要升级系统文件,则点“Flash image…”,再选择下载的升级文件,点”Upload“上传完成升级过程,系统在升级完成后会自动进行重启。

特别需要注意的是,系统升级完成后,哪怕你做了备份恢复,但是你会发现你原先安装的一些应用程序都不见了,这是目前系统升级还不完善的地方,对于自己安装的应用程序都需要重新进行安装,相信在后续的版本更新中会逐渐解决这个问题。但在目前这个阶段,如果你的系统平时运行都很正常,也完全可以满足你的各项需求的话,不建议你经常去升级系统!!

 

OpenWrt系统设定(二)- SSH服务设定

二、SSH服务设定

在OpenWrt系统的学习中,我们经常会涉及或应用到SSH服务,像对系统内文件的操作、系统设定、应用程序安装等等,因此了解SSH服务设定,对初学者来说非常必要。

首先我们来看一下Luci环境下的SSH服务设定页面,点“System-Administration-SSH Access”;

从上图可以看到SSH服务的Port端口号为22,采用了SSH服务的缺省端口号,对于一些对安全需求有较高要求的网络用户,OpenWrt系统允许你对SSH服务的端口号进行自行设定,如下图:

有时你可能希望通过远程电脑来访问路由器的SSH服务,这时你需要将“Gateway Ports”可选框打勾,即“Allow remote hosts to connect to local SSH forwarded ports”。

Ps:关于SSH服务的应用,在”DIY专栏 – 应用技巧及工具“中专门写了一篇文章,大家可以参考。

 

OpenWrt系统设定(一)- 系统语言、主题及时区设定

路由器刷了OpenWrt系统以后,就需要对OpenWrt系统进行设定,以使其发挥最大的功效。常规的设定项目我希望大家能自己一点一点去摸索,不清楚的可以参考OpenWrt官网中”Documention-User Guide”中”Basic configuration”部分的内容。我这里主要将一些后续讲解中经常要用到的、我个人认为非常重要的、平时不注意容易搞错的设定项进行下特殊说明。(注:本文我采用的是OpenWrt19.07.3系统,如果你的系统版本号不一样,可能会有细微的差别。)

一、系统语言、主题及时区设定
           1、系统语言设定

OpenWrt系统缺省使用的是英语,有些人可能会觉得使用起来不太方便,希望采用中文界面,这时你需要先安装中文语言程序包。先进入“System”菜单下的“Software”页面,然后点击“Update lists…”来更新并获取最新可安装的程序包列表。

在”Filter:“栏下输入:luci-i18n-base-zh-cn;

点”Install…”按钮,就会出现安装内容确认页面;

再点“Install”按钮,就可以完成中文语言程序包的安装,随意点一个菜单或刷新一下原页面,Luci页面就变成了中文的了。

同理,你也可以安装其它语言程序包,然后在”系统-系统-系统属性-语言和界面“的”语言“栏中选择你想显示的语言。另外,目前你安装的是基础语言包,如果涉及到新安装的应用程序包或服务,则在安装应用程序包或服务时需要将其相应的语言包一并安装上。如果你想继续使用缺省(英语)模式,则将安装的语言程序包卸载即可。因为我个人一直倾向于使用英文模式,所以在后续的讲解中还是会以英文界面居多,望大家理解,相信随着大家对OpenWrt系统学习的深入也会更喜欢采用英文模式。

           2、系统主题设定

有些人可能对Luci界面的布局及美感度比较在意,这样的话你可以试着更换一下OpenWrt系统的主题,但官方可供大家选择的主题较少,当然你也可以下载第三方的主题包进行安装。因为第三方程序包的安装方法较为复杂,我将另文进行说明,本文则仍以官方主题包的安装说明为例。

前几步与系统语言设定一样,更新并获取最新可安装的程序包列表后,在”Filter:“栏下输入:luci-theme,你会发现可供选择的主题也就3个,其中一个”luci-theme-bootstrap”还是default缺省模式,另两个是”luci-theme-material” 和 “luci-theme-openwrt”。

任选其中一个”luci-theme-openwrt”进行安装,安装完成后随意点一个菜单或刷新页面,你会发现页面布局就已经变化了。

如果不喜欢,也可以选择安装另一个。主题安装后,可以在”System-System-System Properties”中的“Design”栏的下拉菜单中进行选择,然后点“Save & Apply”按钮即可实现更换。

           3、系统时区设定

部分电脑程序对时区的设定特别敏感,同时路由器系统的时区设定也会对与它相联的电脑程序产生影响,如果设置不正确,有时会导致电脑程序无法正常运行。OpenWrt系统的缺省时区设定是“UTC”,大部分人都不需要去改动它,除非你发现与它相连的电脑显示时间不对或有些程序因时区设置问题无法正常运行时,才需要将时区设定做必要调整。若在国内,一般会将时区设定在“Asia/Shanghai”。