DD-WRT配置
nvram命令
nvram具有多层含义。首先它是非可变性RAM(non-volatile RAM)的缩写,这种RAM是一种持久性内存,可在断电时保留数据。路由器内的闪存就是一种nvram。nvram命令用于管理硬件设置,这些设置保存在闪存的最后一块内。这个内存段通常称为“nvram”。nvram命令有不同版本,比如IBM、Cisco、Oracle和Apple版。DD-WRT内的nvram命令非常简单,因为它只是显示和更改分配给变量的颠倒以及删除变量。无选项情况下运行它可以看到选项和参数:
1 | root@linksys:~# nvram |
nvram show显示了路由器上的所有设置,而且设置还不少。可以使用less将其分隔为一次一页:
1 | root@linksys:~# nvram show | less |
或是用grep查找特定的变量,比如:
1 | root@linksys:~# nvram show | grep ssh |
例如:如果你无意间禁用了WEB界面,但仍有telnet或SSH,可以以这种方式重新启用它:
1 | root@linksys:~# nvram set hhtp_enable=1 |
如果想清除任何值的变量可参考如下所示:
1 | root@linksys:~# nvram set http_enable="" |
JFFS(Journalling Flash File System)
通常,DD-WRT映像会占据约26MB分区,即便闪存是128MB或更多,也是如此。可以在未使用的空间创建另一个分区并用其来存储文件。这应该主要是读存储(read-storage),比如无线热点splash和配置页、WEB页、额外的配置文件以及面向ipkg(针对嵌入式设备的ItsyPackage Management System)的存储空间。不要将它用于像日志文件这样能生成大量写操作的文件,因为闪存只支持数量有限的写操作并最终会出现故障。现代的闪存相当耐用,但它仍具有有限的写操作生命期限。用这个很好的旧df命令可以看到现有的文件系统:
我的路由器具有128MB闪存,那么剩下的那些去哪了呢?它闲置在哪,等着被派上用场。访问Administrator–>Management并检查JFFS2–>Enable和Clean JFFS2–>Enable。单击Apple Setting,继而Reboot Router。当它重启时,应该会看到类似下面的结果:
JFFS2(Journalling Flash File System 版本2)是针对闪存存储媒介设计的。我们先来看看这种闪存属于哪种媒介。它是一种特殊的设备,称为Memory Technology Device,缩写为MTD。它不是一种像硬盘和USB棒那样的块设备,也不是像键盘鼠标那样的字符设备。块设备通常以大小固定(512和1024字节)的分区组织而成。而MTD则具有大小为128KB和更大的擦写块(eraseblock)。块设备可以做两件事:读区和写区。MTD可以做三件事:从擦写块读、写到擦写块和擦除擦写块。
紧凑式闪存、SD 卡、USB 棒究其本质都是 MTD。但它们对于操作系统而言更像是块设备,因为它们具有 Flash Translation Layers (FTL),用于在闪存硬件之上模拟块设备。这种 FTL 可以位于主计算机上,也可以位于此设备内的硬件控制器的固件上。如果您愿意牺牲一个 USB 棒(为知识的进步所做的一次伟大的牺牲)并撬开它,那么您很有可能会看到一些 NAND 芯片(原始的闪存芯片)和一个微控制器。
了解有关闪存的几件事情将有助于您的 DD-WRT 探险之旅。第一,NAND 擦写块显示的是全或无(整个块必须在新的数据写上之前先被擦除)。第二,Linux 具有一个 MTD 子系统,和一个用来执行基本任务(比如擦除或向设备写映像)的 mtd 命令。可以在 DD-WRT 上运行无选项的 mtd 命令来查看语法和选项。在 DD-WRT 维基上还可以看到一些关于如何使用 mtd 命令的 how-to 文章,现在您该知道它是怎么回事了吧。第三,nvram 位于最后一个擦写块上,而无论擦写块有多大,它都被以编程的方式限制为 32KB。
使用WEB GUI界面启用JFFS
通过路由器网页启用JFFS的步骤非常具体。为了避免重置和重新编程路由器,设置备份是明智之举。通过以下步骤在DD-WRT中启用JFFS
- 路由器的主页中点击“管理”
- 向下滚动,直到看到JFFS2支持部分
- 点击“启动JFFS“
- 点击“保存”
- 等待几秒钟,然后单击“应用”
- 再等一下,返回到启用JFFS部分,并启用“Clean JFFS”
- 不要点击“保存”。单击“应用”,这时路由器将如上面介绍的对空间进行格式化
- 等到网络的GUI界面回来,然后禁用“clean JFFS”,单击“保存”
- 重新启动一下路由器
命令行方式启动JFFS:CLI
1 | nvram set jffs_mounted=1 |
增加JFFS空间的方法
增加1G闪存卡
加入到SD/MMC模式
- DD-WRT V2.4或更高版本才支持1G闪存
- 创建文件夹
mkdir /mmc/jffs
- 绑定设备到上面文件夹
mount --bind /mmc/jffs /jffs
- 进入GUI界面“管理–>JFFS2启用” 或者使用CLI命令行
nvram set sys_enable_jffs2=1
- 创建文件夹得以使用ipkg
mkdir /jffs/tmp && mkdir /jffs/tmp/ipkg
添加USB存储设备
- 首先,要启用USB设备的支持,安装USB驱动,并启动jffs
ash shell 1
2
3mount /dev/scsi/hosts0/bus0/target0/lun0/part1 /mnt
mkdir /mnt/jhffs
mount /mnt/jffs /jffs - 进入GUI界面“管理–>JFFS2启用” 或者使用CLI命令行
nvram set sys_enable_jffs2=1
- 创建文件夹得以使用ipkg
mkdir /jffs/tmp && mkdir /jffs/tmp/ipkg
测试ipkg
1 | cd /jffs |
建议运行上述命令后重启路由器
Entware安装与配置
引言
Entware是什么?它是嵌入式设备的软件存储库,如路由器或网络附加存储,库中大约有2000个以上的可用程序包。它本身是Optware的替代品。在五年的发展中Entware成了主流,在X86、X64、MIPS、MIPSEL、ARMV5和ARMV7平台有有着很好的应用,并且目前有专门的团队进行维护。
准备工作
- 登录到路由器的GUI界面,服务–>USB,确保核心USB支持、USB存储和自动驱动器安装都已经启用。如果一个或多个没有启用,那么请启用它并单击“应用”使之生效。
- 重新分区格式化USB相关设备,确保USB设备的分区格式为Ext2或者是Ext3或NTFS。如果它是硬盘驱动器,分区时要设置为主分区,不要设置逻辑分区。如果你希望EntWare自动安装到相关分区,那么请在此分区设置标签,标签值为“Optware”
安装
- 在路由器中插入USB设备,可能需要重新启动路由器。检查服务-USB,看看它是否出现,记下当前的挂载点
/tmp/mnt/sda_part1
,如果正确这里应为/tmp/mnt/opt
- 打开SSH终端到路由器。使用上面的挂载点链入以下命令
ash shell 1
2
3
4
5
6
7cd /opt
wget {link to std install script for your router} (click enter)
sh generic.sh (click enter)
# 我的路由器是EA6500,Broadcom单核,因此我使用如下地址:
cd /opt
wget http://bin.entware.net/mipselsf-k3.4/installer/generic.sh (click enter)
sh generic.sh - 安装完成,运行更新
ash shell 1
2opkg update (click enter)
opkg upgrade (click enter) - 最后一步是将以下命令添加到启动脚本(管理–>命令)。睡眠值可以调整,但对于大多数USB硬件/路由器来说,10是足够长的。
ash shell 1
2sleep 10
/opt/etc/init.d/rc.unslung start注意:
- 不要向PATH或LD_LIBRARY_PATH变量添加任何内容,它们已经包括了必要的文件夹的位置;
- 安装完毕可以通过连接
http://bin.entware.net/mipselsf-k3.4/Packages.html
,查看全部包信息 - 你可以使用
opkg list
查看包列表
DD-WRT固件升及对于Entware的影响
在升级DD-WRT固件以前,最好删除Entware驱动或者禁用USB的支持。升级DD-WRT不会给Entware安装带来任何问题,只要开发人员不要更改上面提到的PATH或LD_LIBRARY_PATH变量。升级后只需再次启用USB支持即可。然后打开SSH终端并发出以下命令:
1 | opkg update |
EntWare WiKi
Entware Wiki : https://github.com/Entware/Entware/wiki
启动脚本
在DD-WRT中有三种方法让它们自动运行。
在路由器上加载脚本的WEB界面方法
1. 先决条件
- 可以访问Web界面
- 知道启动时运行的命令
- 在命令行中测试命令以确保正确的操作
2. 操作指南
- 使用Web界面,转到管理选项卡
- 转到命令子选项卡
- 在命令对话框中键入希望运行每次启动命令(使用enter键将每个命令放在换行符上,如果该命令不是暂时停止运行的命令,则在命令后面加上“&”)
- 如果希望将命令保存到rc_startup变量,请单击页面底部的“存储启动命令”按钮。保存防火墙将命令保存到RCI防火墙变量中。
3. 工作原理
这样做是将您的命令串保存到闪存中的RCL启动变量(也称为NVRAM变量)。由于闪存在启动时不会被擦除,所以你的“startup script”将在每次启动时一直存在,并且总是执行。在命令框中单击“运行命令”按钮。
4. 定制脚本
- 如果你的中由器一个保存自定义脚本按钮,你可以将命令保存在
/tmp/custom.sh
- 你可以通过在命令框中键入
sh /tmp/custom.sh
。追在一个“&”符命令会把它放在后台:sh /tmp/custom.sh &
NVRAM方法
1. 先决条件
- 用于登陆路由器工具telnet或SSH
- 了解每一次启动你想要运行的命令
- 测试运行命令(可选)
2. 操作指南
- 使用Telnet/SSH登陆路由器
- 叵要设置启动脚本,请使用以下内容:提交NVRAM命令后,RCL启动变量保存在闪存中,在重新启动时将保留。
ash shell 1
2
3
4
5
6nvram set rc_startup="
<command 1>
<command 2>
...
<command n>
"nvram commit
3. 工作原理
当你发出第一个命令时,你注意到提示符更改为“>”,从这里起,您键入的每一行都被添加到rc_startup变量中。从技术上讲,你仍然在同一个命令行上键入,即使你正在使用多行。当你键入最后一个双引号并点击回车键后,你将看到提示符更改返回,并且已经执行了第一个命令。也就是说,脚本已经添加到变量RCL启动中。
此时,你可以通过发出命令检查RCL启动的内容:~# nvram get rc_startup
4. 自动化的WEB界面
为了自动化或测试Web界面,可以使用免费的IMACROS Firefox
插件。您可以在Web界面中记录和重放你的活动,你可以下载它:
https://addons.mozilla.org/firefox/3863/
Shell脚本方法
简单的nvram脚本适合于短脚本,但是如果你想体大量的工作,或者如果你想轻松地管理启动程序,最好的方法就是使用shell脚本。
Shell脚本使编写长脚本变得更加容易,长脚本又可以从互联网上获取可执行文件或脚本,或安装ipkg -d
内存安装,从闪存分区复制预制的配置文件等,然后才能最终运行程序,并在每次启动时都这样做。
这意味着你不必在路由器闪存空间(nvram,这是相当有限的)中保存那么多的东西,但是您可以替代地填充更流得的RAM,而不必在每次重新启动时手动重新安装和配置程序。
而且,由于每个程序都有自己的脚本,因此在下一次引导中删除程序就如同删除、移动或重命名启动脚本文件一样简单。
1. 先决条件
- 使用telnet或ssh登陆路由器
- 了解你在启动时运行的命令
- 使用SCP、WinSCP或其他方法将文件复制到路由器上。
- 启用JFFS并正常工作。
- 编辑脚本
- 测试你的命令以确呆正确操作
2. 编写Shell脚本
编写每个程序的shell脚本。脚本以后缀名“*.startup”的文件
shell脚本应该看起来像这样:
1 | #!/bin/sh |
由于DD-WRT系统的设计,你的shell脚本可能最终会定期运行,而不仅权是在引导时运行,这意味着,你需要确保每次只运行1次程序
killall命令确保
例如下面脚本举例:kismet_server.startup
1 | #!/bin/sh |
3. 保存脚本
在/jffs/etc/config
目录中保存脚本。如果没有你可以创建此目录。
4. 使脚本可执行~ # chmod 700 /jffs/etc/config/<scriptname>.startup
配置脚本的不同目录
/etc/config/
/jffs/etc/config/
/mmc/etc/config/
/tmp/etc/config/
后缀名 | 解释 |
---|---|
.startup |
将在系统启动、正常启动时间和防火墙配置之前执行 |
.prewall |
每当WAN接口up并在防火墙之前执行 |
.wanup |
每当WAN接口up并在防火墙之后执行 |
.if |
将在任何接口和防火墙之后执行(不再在源代码中,必须删除) |
.ipup |
当PPP连接在断开和防火墙之后重新建立时运行 |
.ipdown |
当PPP连接被关闭时运行。(不再在源代码中,必须删除吗?) |
.sesbutton |
在按下“SES/AOSS/EZ-SETUP”按钮时执行 |
注意:需要使用chmod命令更改脚本的执行权限。当脚本.wanup
启动时,脚本可以运行多次。
参见:http://www.dd-wrt.com/phpBB2/viewtopic.php?p=433984
使用不同扩展名或不同文件夹执行脚本
如果要执行具有不同扩展名的脚本或位于其他文件夹中的脚本,可以创建此脚本。
1 | for I in '/bin/ls /jffs/etc/config/*.myextension';do |
举例:samba启动脚本
在文件夹/jffs/etc/config
下,建立名为samba.startup
脚本
1 | #!/bin/sh |
没有放在/etc/config下原因这个目录是read-only的
没有放在/tmp/etc/config/的原因为这个目录是临时的,重启之后这个目录里的东西就没了。
举例:nginx启动脚本
假设你安装一个 nginx , 它会在 init.d 目录创建一个名为 S80nginx 的服务脚本(数字可能不一样)。配置上述的脚本以后它会开机启动。但是,如果手动操作这个服务脚本呢?只需要:/opt/etc/init.d/S80nginx start|restart|stop
执行它,给它相应参数即可。
但是,这样做未免太麻烦了。因为不仅仅是 init.d 目录不在 PATH 中,而是每个服务由于优先级的原因命名很麻烦。如果想手动 启动/停止/重启 某个服务还需要记住它的数字,打上大写的 S 也很麻烦。总之,这种手动直接运行服务文件的方式很麻烦。于是,我为了方便管理服务写了一个 lua 脚本,它基于这些服务文件,可以像其他发型版中的 service 一样根据正常服务名称管理服务:
1 | root@DD-WRT:~# ser privoxy restart |
可以看到, ser 管理服务不需要绝对路径,不需要服务文件名,而是以服务应该有的名字(S + 数字之后的部分)。我们在 /opt/bin 目录创建文件 ser :
1 | #!/usr/bin/env lua |
添加执行权限:chmod +x /opt/bin/ser
后就可以使用它了。当然,由于它是一个 lua 脚本,你需要安装 lua :opkg install lua
这样子管理服务就方便得多了
Entware安装应用设置开机启用
通过Entware安装的软件在 /opt/etc/init.d 下生成了服务脚本,它仍然在开关机时不会得到执行。
我们可以基于 DD 提供的 ‘Commands’ 功能做到这一点:
1. 创建相关目录(启用 jffs 的目的是用来存放这些固定的永久储存的东西):
1 | cd /jffs |
2. 在 scripts 目录创建 operator.sh 脚本(控制 shutdown 目录或者startup 目录的脚本执行):
1 | #!/usr/bin/env sh |
3. 在 startup 目录分别创建 S10service 和 S30swapon:
1 | #!/bin/sh |
1 | #!/bin/sh |
它们分别是启动 init.d 中的服务和启用 swap (交换空间)的脚本。
4. 设置开/关机执行脚本
路由器 WEB UI -> Tag: Administration - Commands , 分别添加以下两个命令,先后保存为 Startup 和 Shutdown :/jffs/scripts/operator.sh startup
/jffs/scripts/operator.sh shutdown
其实就是开机执行 operator.sh 脚本添加 startup 参数 和 关机执行 operator.sh 添加 shutdown 参数。而 operator.sh的流程其实就是遍历参数目录(例如 startup 和 shutdown)中所有的脚本并且依次执行。如果你看明白了,就会知道只要将脚本放进 startup 目录它就会开机执行,只要放进 shutdown 它就会关机时执行。
有关脚本执行顺序需要特意说明一下,这是我的目录结构:
1 | root@DD-WRT:/jffs/scripts# tree -L 3 |
可以注意到,开机执行的脚本都是以 S + 数字 +名称来命名的。这样做的目的是方便遍历时排序,数字低的会被先遍历并执行,也就是根据命名做到了启动优先级。至于前缀的大写字母 S 可以用其他字母替代,但是要统一。是否后缀 .sh 也无所谓。其实这里我就是模仿的 init.d 里边的服务命名方式,因为它们就是用这种方式决定启动优先级的。这样做了以后,就在路由器固件原生不内置相关功能的情况下做到了一样的效果。安装的所有服务可以正常开机启动,并且可以自己添加任意的脚本让它们自动执行。(例如从上面的文件中可以看出来,我还在关机时运行了两个脚本)
DNSMasq配置本地网络
1. 启动dnsmasq
服务–>服务–>DNSMasq 启动
2. 启动本地DNS
服务–>服务–>本地DNS 启动
3. DNSMasq 附加选项:
dnsmasq会自动读取/tmp/hosts
文件,重启后/tmp
中的内容将会重置。因此建议开启jffs,并指定hosts,在Additional DNSMasq Options中填写
1 | addn-hosts=/jffs/dnsmasq.hosts |
也可以设置不读取resolv.conf文件,直接在dnsmasq中设置dns服务器,在Additional DNSMasq Options中填写
1 | no-resolv |
还可以将某个域名提交给指定的dns服务器解析,在Additional DNSMasq Options中填写
1 | server=/.google.com/208.67.222.222#443 |
如果Additional DNSMasq Options里的内容太多,也可指定一个目录来读取这些配置信息
1 | conf-dir=/opt/etc/dnsmasq.d |
dnsmasq详解及配置
Dnsmasq提供DNS缓存和DHCP服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS计法度来提高对访问过的网址的连接速度。作为DHCP服务器,dnsmasq可以用于为局域网电脑分配内网IP地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络,此外它还自带了一个PXE服务器。
Dnsmasq的主要作用
- 将Dnsmasq作为本地DNS服务器使用,直接个改电脑的本地DNS的IP地址即可。
- 应对ISP的DNS劫持(反DNS劫持),输入一个不存在的域名,正常情况下浏览器是显示无法连接,DNS劫持会眺转到一个广告页面。先随便nslookup一个不存在的域名,看看ISP商劫持的IP地址
- 智能DNS加快解析速度,打开/etc/dnsmasq.conf文件,server=后面添加指定DNS,例如国外不同网站使用不同的DNS
1
2
3
4
5
6
7# 国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114
server=/taobaocdn.com/114.114.114
# 国外指定DNS
server=/google.com/8.8.8.8
server=/youtube.com/8.8.8.8 - 屏蔽网页广告,将指广告的URL指定127这个IP,就可以将网页上讨厌的广告去掉了。
1
2address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1 - 指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确的IP上。
1
address=/freehao123.com/123.123.123.123
- 管理控制内网DNS,首先将局域网中的所有的设备的本地DNS设置为已经安装的Dnsmasq的服务器IP地址。然后修改已经安装Dnsmasq的服务器Hosts文件:
/etc/hosts
,指定域名琶特定的iP中。例如想让局域网的所有用户访问www.freehao123.com时跳转到192.168.0.2,添加:192.168.0.2 www.freehao123.com在Hosts文件中既可,整个过程也可以说是“DNS劫持”。
Dnsmasq的解析流程
dnsmasq先去解析hosts文件,再去解析/etc/dnsmasq.d/下的*.conf文件,并且这些文件的优先级要高于dnsmasq.conf,我们自定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的;
如果不想用hosts文件做解析,我们可以在/etc/dnsmasq.conf中加入no-hosts这条语句,这样的话就直接查询上游DNS了,如果我们不想做上游查询,就是不想做正常的解析。我们就可以加入no-reslov这条语句。
Dnsmasq的参数及常用设置说明
编辑dnsmasq的配置文件/etc/dnsmasq.conf
。这个文件有大量的选项注释。
经常修改的比较重要的参数说明
具体参数 | 参数说明 |
---|---|
resolv-file | 定义dnsmasq从哪里获取上游DNS服务器地址,默认从/etc/resolv.conf获取。 |
strict-order | 表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止 |
listen-address | 定义dnsmasq监听的地址,默认是监控本机的所有网卡上。 |
address | 启用泛域名解析,即自定义解析a记录,例如:address=/long.com/192.168.115.10访问long.com时的所有域名都会被解析成192.168.115.10 |
bogus-nxdomain | 对于任何被解析到此的IP域名,将响应NXDOMAIN使其解析失效,可以多次指定。通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点 |
server | 指定使用哪个DNS服务器进行解析,对不不同的网站可以使用不同的域名对应解析。例如:server=/google.com/8.8.8.8 #表示对于google的服务,使用谷歌的DNS解析。 |
查看配置文件语法是否正确,可执行下列命令
1 | [root@localhost~]# dnsmasq --test |
DNS缓存设置
要在单台电脑上以守护进程方式启动dnsmasq做DNS缓存服务器,编辑/etc/dnsmasq.conf,添加监听地址:
1 | listen-address=127.0.0.1 |
如果用此主机为局域网提供默认DNS,请为该主机绑定固定IP地址,设置
1 | listen-address=192.168.x.x |
多个IP地址设置:
1 | listen-address=127.0.0.1, 192.168.x.x |
三个以上域名服务器
linux处理DNS请求时有个限制,在resolv.conf中最多只能配置三个域名服务器(nameserver)。作为一种变通方法,可以在resolv.conf文件中只保留localhost作为域名服务器,然后为外部域名服务器另外创建resolv-file文件。首先,为dnsmasq新建一个域名解析文件:
1 | [root@localhost~]# vim /etc/resolv.dnsmasq.conf |
然后编辑/etc/dnsmasq.conf让dnsmasq使用新创建的域名解析文件:
1 | [root@localhost~]# vim /etc/dnsmasq.conf |
使用dhcpcd
dhcpcd可以通过创建(或编辑)/etc/resolv.conf.head
文件或/etc/resolv.conf.tail
文件来指定dns服务器,使/etc/resolv.conf
不会被每次都被dhcpcd重写。echo "nameserver 127.0.0.1" > /etc/resolv.conf.head 设置dns服务器为127.0.0.1
使用dhclient
要使用dhclient,取消/etc/dhclient.conf
文件中如下行的注释:prepend domain-name-servers 127.0.0.1;
使用NetworkManager
NetworkManager可以靠自身配置文件的设置项启动dnsmasq。在NetworkManager.conf文件的[main]节段添加dns=dnsmasq
配置语句,然后禁用由systemd启动的dnsmasq.service:
1 | [root@localhost ~]# vim /etc/NetworkManager/NetworkManager.conf |
可以在/etc/NetworkManager/dnsmasq.d/
目录下为dnsmasq创建自定义配置文件。例如,调整DNS缓存大小(保存在内存中):
1 | [root@localhost~]# vim /etc/NetworkManager/dnsmasq.d/cache |
dnsmasq 被 NetworkManager 启动后,此目录下配置文件中的配置将取代默认配置。
IPv6
启用 dnsmasq 在 NetworkManager 可能会中断仅持IPv6的DNS查询 (例如 dig -6 [hostname]) 否则将工作。 为了解决这个问题,创建以下文件将配置 dnsmasq 总是监听IPv6的loopback:
1 | [root@localhost ~]# vim /etc/NetworkManager/dnsmasq.d/ipv6_listen.conf |
此外, dnsmasq不优先考虑上游IPv6的DNS。不幸的是NetworkManager已不这样做 (Ubuntu Bug)。 一种解决方法是将禁用IPv4 DNS的NetworkManager的配置,假设存在。
其他方式
另一种选择是在NetworkManagers“设置(通常通过右键单击小程序)和手动输入设置。设置将取决于前端中使用的类型;这个过程通常涉及右击小程序,编辑(或创建)一个配置文件,然后选择DHCP类型为“自动(指定地址)。”DNS地址将需要输入,通常以这种形式:127.0.0.1, DNS-server-one, ….
DHCP服务器设置
dnsmasq默认关闭DHCP功能,如果该主机需要为局域网中的其他设备提供IP和中由,应该对dnsmasq配置文件(/etc/dnsmasq.conf
)必要的配置如下:
1 | [root@localhost~]# vim /etc/dnsmasq.conf |
查看租约
1 | [root@localhost~]# cat /var/lib/misc/dnsmasq.leases |
添加自定义域
它可以将一个自定义域添加到主机中的(本地)网络:
1 | local=/home.lan/ |
启动守护进程
设置开机启动:
1 | [root@localhost~]# systemctl enable dnsmasq |
立即启动dnsmasq:
1 | [root@localhost~]# systemctl start dnsmasq |
需要重启网络服务以使DHCP客户端重建一个新的/etc/resolv.conf,查看dnsmasq是否启动正常,查看系统日志:
1 | [root@localhost~]# joumalctl -u d |
dnsmasq的配置文件/etc/dnsmasq.conf
详解
1 | # 不加载本地的/etc/hosts文件 |