Raspberry Pi (树莓派)折腾记之一

什么是Raspberry Pi?

Raspberry Pi是一款针对电脑业余爱好者、教师、小学生以及小型企业等用户的迷你电脑,预装Linux系统,体积仅信用卡大小,搭载ARM架构处理器,运算性能和智能手机相仿。在接口方面,Raspberry Pi提供了可供键鼠使用的USB接口,此外还有快速以太网接口、SD卡扩展接口以及1个HDMI高清视频输出接口,可与显示器或者TV相连。它价格便宜,使用功率小,所以它很适合用于嵌入式项目。很多人已经能够把Pi用于各种项目,从针对小孩的一些简单项目到携有更高级功能的复杂项目,它可以被创造的像一个桌面PC那样用于制作电子表格、文字处理和玩游戏,它还可以播放高至1080p的高清视频。

所谓麻雀虽小五脏俱全, 用来形容树莓派( Raspberry Pi) 最好不过了 , 这块信用卡般大小的主板拥有和pc样的能力。USB, Ethernet, HDMI, RCA, 3. 5mm Stereo Jack, 还有无比强大的GPIO, 当然我很少能用到这个。

树莓派2采用了900MHz的四核ARM Cortex-A7处理器(性能是前代的6倍以上),1GB的LPDDR2 SDRAM(内存提升两倍),并完美兼容第一代树莓派。因为采用了ARMv7处理器,所以能够运行所有ARM GNU/Linux分支版本,包括Snappy Ubuntu Core微软的Windows 10系统

现在树莓派主要是做家庭影院,N基于Samba实现NAS系统,NFS和Airplay音频网关以及BT下载机

准备工作(外围部件)

安装之后,就迫不及待的想开机测试,少年,不要太冲动,冲动是魔鬼,我们还需要做一些准备工作:

  • 必备:
  • 树莓派板子(必备)
  • 一张SD卡,4G以上(推荐8G),最好是 class10 的,读写速度快,因为要在卡里刷系统(必备)
  • 一个电源(5V --- 2.5A的电源那就可以比较自由的接各种外设)和电源线,我用的是小米手机电源也可以,同样也可以通过电脑USB接口供电(必备)
  • 一根RJ-45网线,联网(必备)
  • 可选
  • 一个USB鼠标、键盘 (用于输入,非必需)
  • 读卡器(可选,用来连接电脑,烧录SD卡,可以利用手机代替)
  • HDMI高清线,连接显示器或者电视(根据实际情况)
  • 耳机音箱(根据实际情况)
  • 移动硬盘(根据实际情况)

这是从网上找的连接图:

Raspberry Pi (树莓派)折腾记之一

普及一下树莓派的基础知识。

如何启动?
系统引导必须使用SD卡,不过您可以指定引导之后从USB硬盘中读取操作系统,来“接管”启动过程。
如果不插SD卡,树莓派无法启动。

电源开关在哪里?
开机:插上电源插头
关机:拔下电源插头(不建议,推荐使用 shutdown -h now, 或 halt 关机)
特别提醒:树莓派毕竟是电脑!请先使用关机命令(halt或sudo halt),确保Linux停止对SD卡的一切读写后再切断电源!否则极易丢失数据。

为什么没有实时时钟?
树莓派没有实时时钟,关机后无法维持时钟的走时。没有连接网络的树莓派,每次开机时都需要手工设定时间。(连接网络的,开机时会自动联网获取时间)

树莓派能连接什么显示设备?
树莓派提供HDMI与复合视频两种输出。您可以将树莓派连接到任何电视机的A/V输入端子,或是新型电视的HDMI端子上。也可以使用廉价的HDMI转DVI线缆(转接头)连接支持DVI输入的显示器。
树莓派不支持VGA。如果要使用VGA或YPbPr色差,您需要一个相对贵一些的HDMI转VGA转换器。
最便宜的可靠的HDMI转VGA转换器,在淘宝上72元可以买到,介绍文档会稍后贴到论坛上。
当然,尽管对初学者可能有些难,但树莓派即使没有显示器,也可以通过 SSH 远程登录进行操作!

所需电源是?
树莓派工作电压为5V2.5A,从一个micro USB接口输入。经销商有售电源适配器。

有关SD卡和存储设备

建议SD卡选择速度等级为Class10的,可以用满树莓派对SD卡的读写能力,最大限度提高速度。
推荐SanDisk Ultra Class10 TF 8GB这张卡。销量大用的人多,便宜又成熟。
8GB是推荐的大小,肯定够用,并且备份恢复都方便。16或32GB就太大了不够灵活

但是,一个古老的说法一定要得到充分的重视。这个说法是当年玩相机的时候流传出来的,SD卡会有兼容性问题(SD卡里基本就是个闪存颗粒,读写全靠读卡器里的电路,所以匹配可能会有问题)。虽然好像我们没有在相机上发生过卡不兼容的问题,但是Raspberry Pi真的会发生这种兼容问题。所以在买SD卡前,一定要先搜一下看看这个卡是否能用。当然了,万一你买到的卡有兼容问题,不过就是开机十分缓慢或者根本无法开机而已,没什么大不了的,换一张卡即可。

操作系统下载和安装

就像每一个普通的个人计算机(PC)那样,树莓派只是提供了硬件环境,树莓派需要一个操作系统,最好是选择Linux。选择Linux是因为它免费,而且可支持ARM处理器,并且可以精简的足够小。但是要注意,并不是所有的Linux发行版都能运行于树莓派。因为有些Linux发行版不支持树莓派指定的ARM处理器。比如你不能在树莓派上安装Ubuntu Linux。

本文将安装最新的 Raspbian 发行版,整个安装过程与安装其它操作系统差不多。因此,必须创建或找到一个Linux发行包,并复制到SD卡上。最简单的方法是从Raspberry项目中下载。你可以下载 Debian wheezy,又或者是Arch Linux ARM,或者是Qton Pi,还有Bodhi Linux。而且有些牛人开始移植Google的Chrome OS。

  • Debian wheezy完全支持树莓派的硬件,而且它自带了一套成熟的桌面UI,还有浏览器。另外,它还有一个功能强大的包管理器,可以用它安装更多的软件。下面,我们将学习怎样安装它。
  • Arch Linux ARM是一个极简的操作系统,它适合那些非常熟悉Linux系统的人。Arch Linux没有使用多少资源,它有很好的包管理器。因此,如果你想把树莓派当作服务器的话,它是很好的选择。而对于桌面系统,Debian更适合。默认的Arch Linux没有桌面环境。你必须安装和配置它。
  • 此外,还有很多系统,比如Android, Xbian (xbmc 与 debian的结合体)等,也可以下载安装玩玩。

现在使用的比较广泛的是Raspbian, 基于Debian wheey, 也是官方推荐的版本。得益于Debian的简单易用、稳定性好的特定,而且软件源也丰富。

树莓派官方 Raspbian 系统下载:https://www.raspberrypi.org/downloads/raspbian/

 

选择并下载操作系统只是第一步,下面你还需要安装它。

所谓“安装系统”其实不如说是“恢复”下载到的系统镜像到内存卡上,这个过程也没什么难度,就是看内存卡的速度,慢慢等而已。需要注意的是,市面上部分 4G 的内存卡,实际大小才 3.6G 多,会提示空间不足,所以还是直接购买 8G 吧,也差不了几块钱。 把操作系统安装到SD卡上比较麻烦。

制作可引导的SD卡

1)你需要一个带读卡器(或者利用手机代替)的PC,我是把内存卡插在手机上,然后连接在电脑上操作,当然也可以用读卡器

2)从官方下载页下载wheezy-raspbian映像文件。

 

3)用专门的工具将映像文件写入到SD卡。

Windows用户可以使用USB Image Tool(更强大) 或者 Win32DiskImager软件,Unix用户使用dd工具。

Linux / MAC 用户使用dd命令制作引导镜像

下载完成后,先解压,会看到一个 img 镜像,然后我们需要通过 dd 命令把这个img 写入SD卡,使用dd命令将系统镜像写入,需要特别特别注意disk后的数字,不能搞错!

  1. dd bs=4M if=wheezy-raspbian.img of=/dev/sd?        # 使用fdisk -l 查看内存卡的sd?

Windows用户专用:

 

Win32DiskImager ,很多新手教程都是使用这个软件来作为镜像写入工具的。但是这个工具不支持中文目录名(文件或目录有中文,会出现123错误),不支持压缩,必须先插好SD卡,再开软件。注意一定要选对正确的SD卡盘符。

安装实战
1.解压下载的操作系统镜像压缩文件,得到img镜像文件。
2.将SD使用卡托或者读卡器后,连上电脑。
3.解压并运行win32diskimager工具。
4.在软件中选择系统镜像(img文件),“Device”下选择SD的盘符,然后选择“Write”,期间出现对话框选择是。

Raspberry Pi (树莓派)折腾记之一

等待安装完成,烧写结束后,在 windows 7下面显示 SD卡不足100M,我去,不会吧。。。其实不用担心,因为烧录的过程会将SD卡格式化为Linux的文件系统,我们能看到的这个分区只是Linux的boot分区,而其他的部分为LInux 的文件系统类型:ext4,所以我们的windows 是无法识别的。

 HDMI-VGA转换器黑屏的排障方案

这个配置提供了HDMI的所有故障排除用的保守设置。请将SD卡插入电脑,将这些内容存为config.txt。(原来的config.txt可以备份一下。)在开机前需要对 config.txt 文件进行修改(我这边因为没有连接显示器,所以没有做这一步,大家如果需要可以参考)

首先,打开SD卡的boot分区,简而言之,修改如下:

1、使用 notepad++, 或者 sublime text 打开 boot 下的 config.txt 文件

2、 将 "hdmi_force_hotplug=1, hdmi_group=2, hdmi_mode=16, hdmi_drive=2, config_hdmi_boost=4, sdtv_mode=2, arm_freq=800" 这几项前面的注释符号“#”去掉。

Raspberry Pi (树莓派)折腾记之一

  1. hdmi_force_hotplug=1
  2. config_hdmi_boost=4
  3. hdmi_group=2
  4. hdmi_mode=9
  5. hdmi_drive=2
  6. hdmi_ignore_edid=0xa5000080
  7. disable_overscan=1

解释:
hdmi_force_hotplug:强制使用HDMI输出(强行认为HDMI口已经插入了设备)
config_hdmi_boost:HDMI信号增强。
hdmi_group、hdmi_mode:决定分辨率。group=2, mode=9 代表800×600 @ 60Hz。
hdmi_drive:强制音频输出到HDMI口(注意,仅适用于带音频的HDMI-VGA转换器!!如果想让音频从模拟输出,则去掉此项!!)
hdmi_ignore_edid:强行按hdmi_group和hdmi_mode规定的分辨率输出。不检测显示器自身的分辨率。
disable_overscan:强行禁止保留黑边功能。

这个文件会命令树莓派:强制使用800×600分辨率,60Hz刷新率,并强制从HDMI输出。
请先尝试这样开机。如果开机能成功,就把hdmi_group和hdmi_mode,更改成自己显示器的分辨率即可。如果不行,请更改hdmi_mode的值更换以下其他分辨率:

  1. hdmi_mode=4    640x480   60Hz
  2. hdmi_mode=9    800x600   60Hz
  3. hdmi_mode=16   1024x768  60Hz
  4. hdmi_mode=17   1024x768  70Hz
  5. hdmi_mode=23   1280x768  60Hz

启动树莓派

OK, 把 SD 卡插在树莓派的菊花处?嘿嘿。如果你有HDMI线,并且显示器支持HDMI接口,接上显示器,接上电源即可。当然还有USB键盘,鼠标。如果是HDMI转VGA线,网上很多人说树莓派驱动不了(估计电压不够),所以你在买线的时候,就得买自带电源的HDMI转VGA线。(我个人感觉没有必要这么搞,要么远程,要么通过HDMI连接到高清智能电视)

并连接上网线,都连接好之后,然后接入电源,接通电源后树莓派会自动启动(树莓派没有开关机键,通电会自动开机),启动机器。 起来嗨。。。

树莓派LED指示灯状态的解释

Raspberry Pi (树莓派)折腾记之一

Raspberry Pi (树莓派)折腾记之一

启动树莓派,无显示器操作,通过SSH远程连接

老实说,我一直把树莓派定位为“一个扔在某个角落就可以自己跑得很欢的小电脑”,加上那仅有的4个 USB 口,一个插了 USB 无线网卡,另一个再拖个键盘或鼠标啥的,实在很不方便,那么最好还是能远程访问吧。一根网线,一根电源线,然后就可以把树莓派扔到角落里去,鼠标,键盘。who care ?

好在树莓派默认是有开启 SSH 的.

用户设置

如果你安装的是官方的 Raspbian 系统,那么默认的登录帐号为 pi ,密码是 raspberry
为了方便折腾,建议第一时间启用 ROOT 账号吧(为了安全,非常不建议这样做)~ 这个也很简单的,只需要执行一下两句命令即可:

  1. # 重新设置 pi 用户的密码
  2. passwd pi
  3. # 设置 root 账号的密码,会让你输入两次新密码
  4. sudo passwd root
  5. # 启用 root 账号登录
  6. sudo passwd --unlock root
  7. # reboot
  8. sudo reboot

执行完之后,用 reboot 命令重启就可以用 root 登录啦。这里仅仅是演示如何操作,个人强烈建议不要这么操作,为了安全,还是以普通用户登录,然后通过 su - root 来切换到root 用户工作。

 使用raspi-config配置树莓派

Expand Filesystem 扩展SD卡可用空间

第一次用 root 登录,会自动弹出树莓派的高级设置面板(以后也可以通过 sudo raspi-config 命令进入):

Raspberry Pi (树莓派)折腾记之一

 

首先:选择第一项 Expand Filesystem 扩展 SD 卡上可用的空间,不然以后会有很多大软件,不能安装(提示空间不足)。它的作用是将刚才写入到 Micro SD卡中的映像文件大小扩展到整张Micro SD卡中。

选中expand_rootfs选项,然后按下回车。你会看到如下提示,只需要再按一下回车就可以回到 raspi-config 主菜单中了。

Raspberry Pi (树莓派)折腾记之一

扩展之后提示需要 reboot, 重启之后可以通过 df -h 命令看到效果~

Internatioanlisation Options 国际化设置

然后:选中第四项 Internationalisation Options 国际化设置,包括(locale, timezone, keyboard layout

Raspberry Pi (树莓派)折腾记之一

接下来我们更改键盘布局,确保我们的键盘能正常工作,Raspbian默认的是英国键盘布局,而我们在中国使用的键盘布局与美国相同,因此我们要对它进行更改才能正常使用。

选中 Change Keyboard Layout, 然后回车。选择键盘类型,我们选择 Generic 105-key(Intel) PC键盘类型。

Raspberry Pi (树莓派)折腾记之一

选择了键盘类型之后,我们需要为它再选择一个键盘布局。刚开始显示的列表中,都只是英国的键盘布局,但是我们现在可以选择美国的键盘布局,因此我们选择(Other),然后再里面的列表中选择 English(US)即可。

Raspberry Pi (树莓派)折腾记之一

Raspberry Pi (树莓派)折腾记之一
然后你会被问到关于辅助键的问题, 选择默认的选项, 并且在下一个画面中选择No compose key选项。 同样, 如果你需要更改这个设置,可以使用raspi-config来更改。

Change User Password 更改默认用户 pi 的密码

前面我们已经提到,在命令修改密码,如果对命令行不熟悉的同学,可以在这里进行修改。 Change User Password, 按下回车,一个确认窗口弹出来,在屏幕下方会提示你输入一个新的UNIX密码。

Change locale 更改默认字符集

同样,如果你不想使用英国英语,那么你可以在这里更改这些设置。在演示中我们选择的是美国英语,因此我们选择en_US.UTF-8,并下翻列表将en_GB选项剔除。

再下一个对话框中会让你选择默认的区域,选择你刚才选的区域然后按回车继续。

回到raspi-config的主菜单,设置适当的时区。选中change_timezone选项然后按下回车。你会先看到一个地区列表。

Raspberry Pi (树莓派)折腾记之一

更换软件源(apt-get sources)

树莓派的官方提供的源服务器访问起来实在太太太太太太慢了!会导致你安装一个几M的东西都要等大半天!肿么办!

好在树莓派官方有提供一个镜像列表:http://www.raspbian.org/RaspbianMirrors

Code   ViewPrint
  1. #大连东软信息学院(北方用户)
  2. deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  3. deb-src http://mirrors.neusoft.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  4. #中国科学技术大学
  5. deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  6. deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  7. #清华大学
  8. deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  9. deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  10. #重庆大学(中西部用户)
  11. deb http://mirrors.cqu.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  12. deb-src http://mirrors.cqu.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
  13. #前面几个都是教育网的
  14. #搜狐
  15. deb http://mirrors.sohu.com/raspbian/raspbian/ wheezy main contrib non-free rpi
  16. deb-src http://mirrors.sohu.com/raspbian/raspbian/ wheezy main contrib non-free rpi
  17. #阿里云
  18. deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main contrib non-free rpi
  19. deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main contrib non-free rpi

Raspberry Pi (树莓派)折腾记之一

软件安装与卸载

apt-get

  1. 安装软件 apt-get install softname1 softname2 softname3……
  2. 卸载软件 apt-get remove softname1 softname2 softname3……
  3. 卸载并清除配置 apt-get remove -purge softname1
  4. 更新软件信息数据库 apt-get update
  5. 进行系统升级 apt-get upgrade
  6. 搜索软件包 apt-cache search softname1 softname2 softname3……
  7. 如果使用 apt-get 遇到速度慢或者源不存在等错误,可能需要更换源

dpkg 

  1. 安装deb软件包          dpkg -i xxx.deb
  2. 删除软件包             dpkg -r xxx.deb
  3. 连同配置文件一起删除   dpkg -r -purge xxx.deb
  4. 查看软件包信息         dpkg -info xxx.deb
  5. 查看文件拷贝详情       dpkg -L xxx.deb
  6. 查看系统中已安装软件包信息     dpkg -l
  7. 重新配置软件包         dpkg-reconfigure xxx

常用命令

  1. apt-cache search         # ------(package 搜索包)
  2. apt-cache show           #------(package 获取包的相关信息,如说明、大小、版本等)
  3. sudo apt-get install     # ------(package 安装包)
  4. sudo apt-get reinstall     # -----(package - - reinstall 重新安装包)
  5. sudo apt-get -f install  # -----(强制安装?#"-f = --fix-missing"当是修复安装吧...)
  6. sudo apt-get remove      #-----(package 删除包)
  7. sudo apt-get remove --purge # ------(package 删除包,包括删除配置文件等)
  8. sudo apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
  9. sudo apt-get update      #------更新源信息数据库
  10. sudo apt-get upgrade     #------更新已安装的包
  11. sudo apt-get dist-upgrade # ---------升级系统
  12. sudo apt-get dselect-upgrade #------使用 dselect 升级
  13. apt-cache depends #-------(package 了解使用依赖)
  14. apt-cache rdepends # ------(package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧...)
  15. sudo apt-get build-dep # ------(package 安装相关的编译环境)
  16. apt-get source #------(package 下载该包的源代码)
  17. sudo apt-get clean && sudo apt-get autoclean # --------清理下载文件的存档 && 只清理过时的包
  18. sudo apt-get check #-------检查是否有损坏的依赖

设置静态IP地址
回到前面刚刚提到的,不知道 IP 地址的问题,咱们要给树莓派设置一个静态 IP,省得 IP 变换又要重新找机器。还是用 nano 来编辑网络接口文件:

  1. sudo nano /etc/network/interfaces
  2. 默认网络配置:
  3. auto lo
  4. iface lo inet loopback
  5. iface eth0 inet dhcp
  6. allow-hotplug wlan0
  7. iface wlan0 inet manual
  8. wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
  9. iface default inet dhcp

如果你要设置的是有线网卡的 IP 地址,那么把 eth0 的 dhcp 改成 static 然后在下一行追加 IP 信息,结果大概如下:

  1. iface eth0 inet static
  2. address 192.168.3.200    # 设定的静态IP地址
  3. netmask 255.255.255.0    # 网络掩码
  4. gateway 192.168.3.254    # 网关

然后通过 /etc/init.d/networking 重启网卡.

挂载移动硬盘或U盘

树莓派外接U盘或移动硬盘时,默认不会自动挂载,需要手动 mount。

  1. fdisk -l
  2. mount /dev/sda1 /mnt/home
  3. #编辑fstab让移动硬盘开机自动挂载
  4. /dev/sda1       /mnt/home       ext4    defaults,noatime  0       0

挂载NTFS格式的硬盘(读写方式挂载)
默认挂载NTFS格式的硬盘只有只读权限,需要借助其它工具实现。

  1. #安装所需软件包
  2. sudo apt-get install fuse-utils ntfs-3g
  3. #加载内核模块
  4. modprobe fuse
  5. #编辑fstab让移动硬盘开机自动挂载
  6. sudo nano /etc/fstab
  7. #在最后一行添加如下内容
  8. /dev/sda1 /mnt/myusbdrive ntfs-3g defaults,noexec,umask=0000 0 0
  9. #保存重启,即可生效

挂载FAT32格式的硬盘(U盘通常是这种格式)

  1. #创建挂载点
  2. sudo mkdir /mnt/myusbdrive
  3. #编辑fstab让移动硬盘开机自动挂载
  4. sudo nano /etc/fstab
  5. #在最后一行添加如下内容
  6. /dev/sda1 /mnt/myusbdrive auto defaults,noexec,umask=0000 0 0
  7. #保存重启,即可生效

树莓派作DNS服务器(dnsmasq)

将DNS公共查询服务器架设在树莓派上面,常用的DNS查询将会缓存到树莓派上,能起到DNS查询加速、提升上网体验的作用。本文将以开源的轻量级DNS转发服务程序 DNSMASQ 为基础实现这个功能。
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析
1、首先安装 dnsmasq

  1. sudo apt-get install -y dnsmasq

2、配置
下面我们就需要配置DNSMASQ了,配置文件一般位于路径/etc/dnsmasq.conf。
这个是 dnsmasq 使用的配置文件。安装 dnsmasq 完后就会生成一个,里面有很详细的说明和例子,但是都是注释的,也就是等于这个是一个空的文件,你可以把这个文件做一个备份,然后新建一个空白的文件,只写你需要的配置就可以。这样看上去比较清晰一些,不然总是在一大堆 E 文里找你想要的东西也是很麻烦的,特别是英文不好的,看着头疼。

  1. listen-address=127.0.0.1
  2. strict-order
  3. #no-hosts
  4. #no-poll
  5. resolv-file=/etc/resolv.dnsmasq.conf
  6. #反电信劫持-114导航
  7. bogus-nxdomain=218.30.64.194
  8. #bogus-nxdomain=67.215.66.132
  9. # Set the cachesize here.
  10. cache-size=2048
  11. #国内指定DNS
  12. server=/cn/114.114.114.114
  13. server=/taobao.com/114.114.114.114
  14. server=/taobaocdn.com/114.114.114.114
  15. server=/tbcache.com/114.114.114.114
  16. server=/tdimg.com/114.114.114.114
  17. server=/weibo.com/114.114.114.114
  18. server=/weibo.cn/114.114.114.114
  19. server=/xunlei.com/114.114.114.114
  20. #国外指定DNS
  21. server=/google.com/42.120.21.30
  22. server=/twitter.com/42.120.21.30
  23. server=/facebook.com/42.120.21.30
  24. #host区段
  25. #本机
  26. address=/tp.set/192.168.2.1
  27. address=/dx.set/192.168.1.1
  28. #其他
  29. address=/t66y.com/184.154.128.246
  30. #address=/github.com/192.30.252.131

比较关键的几个参数:

resolve-file指定dnsmasq从哪里获取上行DNS Server, 默认是从/etc/resolv.conf获取。

addn-hosts指定dnsmasq从哪个文件中读取“地址 域名”记录, 默认是系统文件/etc/hosts;

listen-address默认是监控在所有网卡上的。

配置步骤

  1. 配置 dnsmasq 的上游 dns 服务器;(dnsmasq是 dns 缓存服务器, 那么其还是需要有上游服务器进行域名解析的)
  2. 配置系统的 dns 服务器, 将 dnsmasq 设置在首位寻找
  3. 设置 dnsmasq 需要监听的 IP 地址, 让其他服务器能够找到它

在/etc目录下新建resolv.dnsmasq文件。 文件的内容为DNS服务器的地址,是真正的DNS服务器。

  • resolv-file=/etc/resolv.dnsmasq
  • strict-order 取消注释表示严格安装 resolv-file 文件中的顺序从上到下进行 DNS 解析, 直到第一个成功解析成功为止。

Raspberry Pi (树莓派)折腾记之一

  • no-hosts, 默认情况下这是注释掉的, dnsmasq 会首先寻找本地的 hosts 文件,再去寻找缓存下来的域名, 最后去上游 dns 服务器寻找;
  • addn-hosts 可以指定多个额外的hosts文件。

Raspberry Pi (树莓派)折腾记之一

  • listen-address=127.0.0.1  # 参数:例如, 我还需要让局域网内其他的服务器也能够首先访问这个 dnsmasq 来进行域名解析如何配置? listen-address=192.168.1.100 (dnsmasq 所在服务器局域网内 ip), 好吧, 这样你本机配置的 127.0.0.1 就没效果了… 如果设置为 listen-address=127.0.0.1 启用本地解析,那局域网内其他服务器就无法访问到这个 dnsmasq 了, 只有对本机才有效。其实应该这样设置 listen-address=192.168.1.100,127.0.0.1 这样你就能双方都满足了,既能为其他主机提供DNS解析服务,对自己也可以解析。定义 dnsmasq 监听的地址,一般写本地就可以,如果是需要共享给局域网的其他电脑,需要把本机的内网 IP 地址写进来,例如 listen-address=192.168.1.101,127.0.0.1

要在单台电脑上以守护进程方式启动dnsmasq做DNS缓存服务器,编辑/etc/dnsmasq.conf,添加监听地址:

  1. listen-address=127.0.0.1

如果用此主机为局域网提供默认 DNS,请用为该主机绑定固定 IP 地址,设置:

  1. listen-address=192.168.x.x
  • server=/cn/114.114.114.114 # 所有 cn 域名和子域名的解析都由 114.114.114.114 来处理,这样可以把国内国外的域名分别交给不同的 dns 服务器来处理。
  • address=/domain.name/192.168.1.102 # 把 domain.name 这个域名解析到 192.168.1.102 。这个功能很好玩,有几个比较常用的场景,一个是做内网的域名解析,你可以把任意你想要的域名解析到局域网内的某个服务器上,这样局域网内的其他电脑就不需要手动输入难记的 IP 地址了。另外,你可以把一些广告商的域名解析到 127.0.0.1 ,这样你就不用被满屏的广告打扰了。当然,你可以把一些国外的网站指向一个没有被墙的 IP 上,这样也可以实现翻墙,虽然不一定有效。
  • 基本上配置文件内容如下所示:
  1. # Dnsmasq.conf for raspberry pi
  2. # /etc/dnsmasq.conf
  3. # http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example
  4. # Set up your local domain here
  5. domain=raspberry.local
  6. resolv-file=/etc/resolv.dnsmasq
  7. min-port=4096
  8. server=8.8.8.8
  9. server=8.8.4.4
  10. # Max cache size dnsmasq can give us, and we want all of it!
  11. cache-size=10000
  12. # DHCP
  13. # Below are settings for dhcp. Comment them out if you dont want
  14. # dnsmasq to serve up dhcpd requests.
  15. # dhcp-range=192.168.0.100,192.168.0.149,255.255.255.0,1440m
  16. # dhcp-option=3,192.168.0.1
  17. # dhcp-authoritative
  18. # dhcp range 指定DHCP服务提供地址范围,以及租期为 1440m
  19. # dhcp-option 指定了默认网关
  20. # 在所有网卡上关闭 DHCP,用不着这个功能。如果有多个网卡那么一行一个。
  21. # no-dhcp-interface=eth0

如果你改动过设置,请重启服务:

  1. sudo service dnsmasq restart

这里的server所指示的就是上级DNS服务器的地址,这里用的是Google的8.8.8.88.8.4.4,也就是说本地缓存查不到的域名将会发送给上级DNS服务器然后本地再缓存结果,可以改成你所需要的,一般就用谷歌的,我就不改了:-), 需要注意的是较老版本中这个使用的名字是nameserver

到这里基本上就配置完成了,你可以在树莓派上nslookup或者dig一下看看结果,当然如果找不到这些命令是因为你没有安装dnsutils,直接通过下面的命令安装即可:

  1. sudo apt-get install dnsutils
  • 我的微信
  • 使用微信扫一扫
  • weinxin
  • IT运维交流群
  • 使用QQ扫一扫
  • weinxin
༺小ʚɞ寞༻

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: