解决DNSMASQ内网地址无法解析No address (A) records available

部署DNSMASQ有一段时间了,最近发现一个奇怪现象,所有内网网站均无法解析,通过nslookup命令,得到如下结果:

Server:  192.168.24.6
Address:  223.5.5.5

*** No address (A) records available for oa.example.com

其中oa.example.com是内网域名,当然这里我只是举个例子:-) 域名管理员已经将该域名解析到一个私有内网地址上,外部DNS服务器均能正常解析这个域名,唯独部署了DNSMASQ的域名服务器无法解析。

开始时并没有介意,而是通过硬绑定的方式在DNSMASQ的配置文件中将内网地址映射到oa.example.com,配置方式如下:

address=/oa.example.com/192.168.25.4

继续阅读

Thinkpad T61笔记本电脑拆机修理记

2008年买过一台Thinkpad T61的笔记本,那段时间周围有很多朋友买惠普(HP)的笔记本,经常有朋友反馈他们的惠普笔记本出现黑屏的故障,开始以为是系统问题,后来我发现是笔记本自身硬件,最离谱的是我有个朋友在保修期间换过两块主板,感觉那时候周围笔记本就惠普这个牌子故障比较多,我自己的小黑T61倒没有出过故障,那时候联想收购的IBM的笔记本业务,对Thinkpad这个牌子吹嘘得也蛮多的,各种各样NB的保护措施,后来惠普爆出黑屏门事件,我也一直庆幸那时候没有买惠普的笔记本,这台T61在3年的保修期间出过一次故障就是显示器越来越暗,最后黑得看不见了,送修过一次,当时联想维修站给出的措施是更换了显示屏,对于这样的举措我也表示认可,不幸的是特约维修站师傅的手艺也不是挺好,拆显示屏的时候屏框咬合口被弄断了好些,而且接缝那块有划痕,好在不是太明显的,我也没有多计较。

换了新显示屏后这台笔记本继续陪伴着我度过无聊的写代码的日子,不幸的是在刚刚过保修后不久显示屏又出问题了,仍然亮度偏暗,出现红屏,因为那时候换屏价格不菲,我周围有人T61换屏花费了700多元,因为笔记本也比较旧了,我也一直没考虑到这个事情,索性外接了台显示器,继续用,当然显示器也坏过一台,不知道T61本身的问题呢,还是我经常写代码的问题,就这样一直磕磕碰碰用到了2013年,这年我换了台笔记本,于是小黑被我遗忘在角落落灰了。

继续阅读

iptables劫持并拦截DNS查询53端口实现转向(Redirect)

企业内网中经常会有这样的需求,比如说业务服务器的IP地址为192.168.6.25,大家也就习惯于访问这个地址了,运维也很厚道的将某个域名解析到这个IP地址,这样大家也就不必记住繁琐的IP地址,同时运维也很方便的将业务服务器由192.168.6.25的主机迁移到192.168.6.26的主机而无需通知客户端更改地址,这也是域名发挥的作用,好了,现在问题来了:-)

客户说我们企业很小,不想另外购买域名,好吧,每年五十几块也是一笔费用,而且购买域名后还需要有人维护,比如要记得续费什么的,略麻烦。同样的还觉得将内网地址公布到外网上不是安全的行为。

经过我的询问得知该企业拥有一台自建的DNS服务器,为全网提供DNS查询,那这事情就好办多了,对DNS服务器软件硬绑定指定的域名到IP地址的记录(由于是我们自己的DNS服务器,这里的域名可以任意设置,当然最好设置为公网上没有的域名地址以避免冲突)。

继续阅读

MySQL备份、迁移及开放远程访问3306端口备忘

今天把数据服务器和业务服务器进行了分离,其中涉及对MySQL开放远程访问的,作出记录如下以供备忘:

假设数据服务器IP地址为192.168.1.101,业务服务器IP地址为192.168.2.51

首先在数据服务器192.168.1.101上安装好MySQL实例,然后使用root访问MySQL并建立好所需要的数据库和用户。

$ mysql -uroot -p
Enter Password:
 
> CREATE DATABASE business_db;
> GRANT ALL PRIVILEGES ON `business_db`.* TO 'business'@'192.168.2.51' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
> FLUSH PRIVILEGES;

继续阅读

树莓派Raspberry Pi备份SD卡系统、浏览挂载IMG分区镜像文件

还记得是两年前图个新鲜买的树莓派,现在基本上用来练手Linux操作,其实更有看头的GPIO功能一直没有很好的去专研,现在的Raspberry Pi已经基本被我配置为一个小的无线路由。树莓派一个最方便的地方就是可拆卸的存储设备(SD卡)和无BIOS的那种纯粹SD卡系统引导,这样我们可以配置多种功能的SD卡,需要哪种功能直接把相应的SD卡插入即可,有点商业头脑的兴许还可以把自己专有的软件固化到SD卡中,再拿去卖给有需要的树莓派用户们。

好了,扯了这么多,其实要发挥树莓派最大的功能,系统配置是必不可少的,从写入镜像到后面的配置和大量软件包的apt-get install以及忍受其慢吞吞的软件编译速度而编译好的软件,我们向树莓派倾入了大量的感情。假如有一天存储这一切的SD卡见上帝了的话,那可真叫欲哭无泪了。所以今天主要介绍的是对于存在于SD卡中的操作系统的备份。

继续阅读

树莓派Raspberry Pi用AirPlay播放实现WiFi连无线音响外放

之前有一篇文章介绍了如何使用蓝牙实现手机连接无线音箱外放,在网上搜索相关资料的过程中,我发现了树莓派另外一个强大的功能,那就是可以实现苹果(Apple)的AirPlay播放技术,简单的介绍一下,AirPlay类似于蓝牙音响播放,但是其是建立在WiFi局域网基础上的,在接入有AirPlay播放技术的局域网上,苹果的设备就会显示支持AirPlay。综合AirPlay的优势,我开始在Raspberry Pi(树莓派)上实现相关功能。

同样的,关于树莓派一些好玩的功能国外资料较为丰富,经过查阅后《Raspberry Pi Airplay Tutorial》(原文超级详细)这一篇文章对我帮助较大,具体步骤如下。

继续阅读

树莓派Raspberry Pi用蓝牙(Bluetooth)实现手机连无线音响外放

今天琢磨着如何在树莓派上挖掘出一些新玩意儿,正好上次为了试验iBeacon低功耗蓝牙基站买的一块USB蓝牙接收适配器一直闲在那儿,于是准备依托于蓝牙功能实现一些有意思的功能。

首先想到的是文件共享,蓝牙这货一开始基本功能也是文件共享吧,想到以前智能手机并不普及的年代,我曾经试验过通过拍照蓝牙传输聊天的功能,那时候想如果能通过蓝牙进行文本传输基本上就实现了一个小型聊天室了,好了,扯远了,我手边有部iPhone,据说未越狱的iPhone蓝牙传文件功能一直是短板,不知道为什么苹果要限制其蓝牙功能,折腾了许久文件传输一直未能实现,于是决定转战另外的功能。

我注意到iPhone手机可以任意的连接蓝牙耳机,也就是说可以轻松实现蓝牙的音频传送,同时在Raspberry Pi主板上有个音频输出接口,正好家里有闲置的笔记本USB Mini音箱,于是我决定将树莓派变成蓝牙多媒体播放中心。

继续阅读

使用Ziproxy图像压缩优化功能配合Squid3实现缓存加速

Ziproxy是转发,非缓存,压缩HTTP代理服务器。其可以压缩图像转换到低质量JPEG文件或JPEG 2000和压缩( gzip或) HTML和其他文字样的数据,同时还可以提供 HTML/CSS/JS 的优化,主动的主机名称解析,透明代理等功能。

之前我将Raspberry Pi(树莓派)配置了Squid3缓存代理,然后注意到了Ziproxy这款软件,因为Ziproxy没有缓存功能,所以考虑将Ziproxy和Squid3配合起来实现压缩兼缓存的上网加速功能,首先要考虑将Ziproxy放在Squid3之前还是之后,当然这两种不同的放置方法可能有不同的效果,鉴于部署的便捷性考虑,我将Ziproxy放置在Squid之前,也就是Internet - Ziproxy - Squid3 - Client。假设你已经安装好Squid3并配置好防火墙,接下来我将简单介绍一下Ziproxy的安装部署过程。

继续阅读

检测并修复OpenSSL Heartbleed漏洞

这个漏洞已经出来好长时间了,自己也一直没有能够引起重视,今天看到有一款扫描检测工具CROWDSTRIKE HEARTBLEED SCANNER可以检查主机是否存在此类漏洞,然后就下载下来试了试,结果本博客直接躺枪。想想还是别拖着了,遂动手修复,其实修复的过程很简单,这里简要说明如下:

由于我使用的是Debian系统,所以这里主要记录的是Debian系统下的OpenSSL升级。

对于图省事的朋友来说,下面的命令可以轻松解决大多数问题:

sudo apt-get update
sudo apt-get upgrade

这两句命令其中第二句将升级系统中所有可更新的软件,但是有过之前惨痛的服务器升级经历后我觉得还是不能轻举妄动,所以再查阅网络后我采取特定升级的方法:

sudo apt-get update
sudo apt-get install openssl libssl1.0.0

继续阅读

BAT批处理判断IP地址并自动ipconfig release/renew

某内网拨号软件设计问题,拨号后在偶然的情况下不能自动获取DHCP从而更新内网IP,后来发现通过手动释放和重新获取IP可以解决这个问题,但是每次在操作前还要看下IP地址是不是已经被更新为内网地址,若已经更新则无需操作,否则就要手动释放更新,每次敲一堆命令确实麻烦,于是打算做成批处理。

首先遇到的问题是如何获取IP地址,当然既然采用批处理那么就需要借助于现有的命令或者命令行程序,Windows系统内ipconfig命令可以获取IP地址等信息,如果我们只需要IP地址,那么就必须对获取的信息进行筛选过滤,这就需要findstr等工具的配合了,结合网上找到的示例最终代码如下:

for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "Address"') do set ip=%%i
SET ip=%ip:~1%

继续阅读