用DNSmasq搭建小型的内网DNS
yum install dnsmasq -y
service dnsmasq start
127.0.0.1 localhost
192.168.1.10 web01.xxx.com web01
192.168.1.20 web02.xxx.com web02
hosts文件的强大之处还在于能够劫持解析
/etc/dnsmasq.conf
默认直接缓存resolv.conf中的nameserver,通过下面的选项指定其他文件
resolv-file=/etc/resolv.dnsmasq.conf
默认监听本地所有端口,指定监听端口的办法(别忘了本地回环)
listen-address=127.0.0.1,192.168.1.56
我要给dns记录在另外一个文件,而不是/etc/hosts
addn-hosts=/etc/addion_hosts
设置dns缓存大小
cache-size=150
我担心dnsmasq的稳定性怎么办
解决办法一:写脚本或用nagios监视dnsmasq进程,或者定时重启
解决办法二:在另一台机器也搭建一个dnsmasq,/etc/hosts文件拷一份过去,客户端指定2个内网DNS
记得在iptables防火墙开放53端口哦
bind不配合数据库的情况下,经常需要重新载入并读取配置文件,这是造成性能低下的原因。
根据这点教训,我们可以考虑不读取/etc/hosts文件。而是另外指定一个在共享内存里的文件,比如/dev/shm/dnsrecord.txt ,这样就不费劲了,又由于内存的非持久性,重启就消失,可以定期同步硬盘上的某个内容到内存文件中。
具体一点就是下面的步骤
/etc/dnsmasq.conf
no-hosts
addn-hosts=/dev/shm/dnsrecord.txt
解决同步问题
开机启动
echo "cat /etc/hosts > /dev/shm/dnsrecord.txt" >>/etc/rc.local
定时同步内容
crontab -e
*/10 * * * * cat /etc/hosts > /dev/shm/dnsrecord.txt
/dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。其大小是非固定的,即不是预先分配好的内存来存储的。(shm == shared memory)
/dev/shm的容量默认最大为内存的一半大小,使用df -h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节。
通过下面的命令,我们可以看到/dev/shm的文件系统为tmpfs,即为临时文件系统。其他的几个tmpfs的挂载目录,其实质上于/dev/shm是一致的。
sudo mount -o size=5128M -o remount /dev/shm
1、DNS解析过程详解
1)、在浏览器中输入一个域名,例如www.tmall.com,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析, windows下hosts文件在C:/Windows/System32/drivers/etc/hosts下,linux一般都在/etc/hosts下。
2)、如果hosts里没有这个ip到域名的映射,那么就要查找本地DNS解析器缓存,是否有这个域名到ip地址的映射关系,如果有,直接返回,完成域名解析。
3)、如果本机的hosts与本地DNS解析器缓存都没有相应的网址映射关系,那么就要找到你的TCP/ip参数中设置的首选DNS服务器,我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4)、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个域名到ip地址的映射,完成域名解析,但是此解析不具有权威性。
5)、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负 责.com域的这台服务器。这台负责(.com)域名的服务器收到请求后,如果自己无法解析,它就会找一个管理(.com)域的下一级DNS服务器地址 (tmall.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找(tmall.com)域服务器,重复上面的动作,进行查询,直至找到 (www.tmall.com)主机。
6)、如果用的是转发模式,此DNS服 务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地 DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
这里我们把从客户端到本地DNS服务器的查找称为递归查询,而DNS服务器之间的交互查询称为迭代查询。
2、DNS劫持
DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。举一个简单的例子,比如你输入的域名地址是www.google.cn然后弹出来百度的页面,很明显发生了DNS域名劫持。
应对DNS劫持的方法
1)、我们都知道,访问一个网站用域名而不用ip地址的原因就是逻辑地址不好记,但是如果你知道这个网页的ip地址的话,你可以直接输入ip地址来访问从而绕开DNS解析。
2)、将自己的电脑DNS解析地址手动设置为国内比较权威又稳定的服务器地址,例如114.114.114.114、8.8.8.8。
3)、修改你的路由器密码,登录路由器192.168.1.1,更改你的用户密码,然后最好重新启动路由器。
作为运营商来处理DNS劫持,一般运营商都会有提供多台DNS解析服务器,负责一个区域的DNS解析至少会有两台,其中的一台发生了DNS劫持运营商就会停止该服务器的网络地址解析工作而启动备预案,这样就可以预防发生DNS劫持而导致用户主机受到攻击甚至发生某些不法的钓鱼网站窃取用户账户密码,造成财务损失的严重事故。
tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储暂存的文件。它有如下2个优势:
默认的最大一半内存大小在某些场合可能不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。 mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。
添加网卡之后,网卡无法被正确的识别和使用
排错方法
查看/etc/udev/rules.d/70-persistent-net.rules的内容,该文件中可以查看到新添加的网卡的MAC地址
修改/etc/sysconfig/network-scripts/ifcfg-eth0的网卡的MAC地址为正确的MAC地址
使用命令ifconfig eth0 up,将网卡启动(可以不再使用system-config-network命令,有些linux系统没有安装相应的包,可能命令无法使用)
modinfo r8169
[root@localhost named]# lspci | grep Ethernet
ethtool -s eth1 speed 100 duplex full
mii-tool -v eth1
mii-tool -F 100baseTx-FD eth0
host -a www.sina.com.cn
host -l realhostip.com
nslookup
dig +trace www.sina.com.cn
dig -t soa www.sina.com.cn
dig -x 192.168.139.3
whois
rndc-confgen
rndc status
nsupdate
yum install bind
vi /etc/named.conf
vi /var/named/example.zone
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { any; };
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };
match-destinations { any; };
recursion yes;
include "/etc/named.rfc1912.zones";
};
https://www.cnblogs.com/JohnABC/p/5908658.html
systemctl stop firewalld.server