目标服务器端配置文件
[rsyncd.conf]
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#模块名
[web1]
#目标服务器目录
path = /usr/local/rubyzhu/test
comment = web1 file
ignore errors = yes
read only = no
write only = no
list = false
hosts allow = 127.0.0.1
hosts deny = *
uid = root
gid = root
#认证用户名,与操作系统用户无关
auth users = backup
secrets file = /etc/rsyncd.secrets
客户端配置文件(被监控系统)
[inotify-tool.sh 自写脚本]
#!/bin/sh
src=/usr/local/rubyzhu/test1/ /index.html #inotify监控的目录
des1=web1 #rsync服务器模块
ip1=127.0.0.1 #目标服务器的IP地址
user=backup #目标服务器的rsyncr的web1模块的用户名,跟操作系统用户名无关
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' \
-e close_write,modify,create,attrib,delete \
${src} \
| while read file
do
rsync -avz --delete --progress --password-file=/etc/server.pass ${src} ${user}@${ip1}::${des1} &&
#rsync -avz --delete --progress --password-file=/etc/server.pass ${src} ${user}@${ip2}::${des2} &&
echo "${src} was rsynced"
echo "-----------------------------------------------------"
done
本文链接
由于互联网的飞速发展,简单的DNS解析已经满足不了如今互联网的需求。于是出现了智能DNS的说法。下面就来简单介绍下CentOS下安装BIND软件搭建智能DNS服务器,这样的DNS服务器主要还是用acl和view的语句来实现的。它的好处可是实现CDN快速WEB缓存代理;控制查询源对应的结果等等.....好啦,其他不多说。关于CDN原理和Linux下搭建DNS服务器的安装这里就不多说。请参阅前面的博文。
实验环境:VMware 9 CentOS6.3操作系统虚拟机两台。
智能DNS寻线服务器:IP 192.168.2.125/24 (VMnet 2),客户机IP地址:192.168.2.126/24 192.168.2.127 /24 (VMnet 2)客户主机测试完后更换IP地址。
1.安装BIND软件搭建DNS服务器(略过)
2.配置智能寻线DNS主文件:
[root@localhost ~]# cat /etc/named.conf
options
{
directory "/var/named";
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
listen-on port 53 { 192.168.2.125; }; //这个是我的dns服务器的ip
listen-on-v6 port 53 { ::1; };
forwarders {192.168.8.2;};
forward first;
allow-query {any;};
};
logging
{
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
acl local{127.0.0.0/8;
192.168.8.0/24;
192.168.2.0/24;
};
acl cnc{192.168.2.126;};
acl ctc{192.168.2.127;};
view "cnc" //网通
{
match-clients { cnc; }; //这个cnc是在下面那个cnc.acl文件中定义的
zone "." IN {
type hint;
file "named.ca";
};
zone "xxxxkutea.com" {
type master;
file "cnc.kutea.com.zone";
};
include "/etc/named.rfc1912.zones";
};
view "ctc" //电信
{
match-clients { ctc; };
zone "." IN {
type hint;
file "named.ca";
};
zone "xxxxkutea.com" {
type master;
file "ctc.kutea.com.zone";
};
};
view "local"
{
match-clients { local; };
zone "." IN {
type hint;
file "named.ca";
};
zone "xxxxkutea.com" {
type master;
file "ctc.kutea.com.zone";
};
};
[root@localhost ~]#
配置zone区域解析文档:
配置完成后启动DNS服务器:service named restart 。
3.客户机进行测试:(测试完一个IP后更换客户机IP地址再次进行测试)
下面是客户机(DNS查询源)IP地址192.168.2.126进行的模拟测试,查询结果是对应服务器地址为192.168.2.225 。查询正确!
下面是客户机(DNS查询源)IP地址192.168.2.127进行的模拟测试,查询结果是对应服务器地址为192.168.2.227 。查询正确!
这里还配置了本地查询源(DNS服务器本身)测试结果就不上图了。从上面的实验可以看出。智能DNS的使用可以解决负载均衡,网络安全,快速响应等等。使用了view和acl语句的话。默认不进行配置是连DNS服务器地址也无法查询的。简单搭建,不足之处请各位多多指点。欢迎各位友友进行讨论。
完整文章参阅原文
本文链接
在开始之前想先聊点儿闲话。最近在学习Linux内核,看了好多书。这篇随笔写于开始学习Linux内核三个月之后,内核代码是Linux Version0.12版本,大概是最早的那个版本,选用的主要资源是赵炯老师编写的《Linux内核完全剖析——基于0.12内核》,写的很详细,受益匪浅。开始阅读的时候困难相当大,概述部分不想多说,开始的几章大概就是介绍了Linux的发展,linux是怎么发展起来的,都是那些人组织了这个开源系统的开发,世界广大linux爱好者的努力。。。然后就是阅读代码前的知识准备,计算机组成原理,编程语言语法及编译环境,80X86CPU保护模式和编程,Linux内核体系结构。然后就真正的开始阅读内核代码了。前五章(准确的说是四章)笔者花掉了近2个月的内容来阅读,这段时间笔者的大部分时间用在了复习大二上学期计算机组成原理课程还有自学汇编语言和CPU工作原理,当时自己觉着学的不错的内容真到了学习这本书的时候真心觉着什么都不知道。这些内容相信来关注这篇随笔的IT人对前面我所说的内容都是比较精通,在以后的内容发现不正确的内容希望各位前辈指点迷津~(在此笔者先说声谢谢)。如果是和笔者一样也在正学习的过程中,笔者希望您能自己去网上去图书馆找资料踏踏实实的打下这个基础,真心重要。好了吧闲话就到此为止吧,下面我们开始今天的主题内容——Linux启动引导程序原理及实现(初探Linux内核代码之linux/boot/bootsect.S)。
首先,介绍下今天要研究的文件,bootsect.S这个文件是用8086汇编语言编写的,是Linux的最前面的一部分,计算机接通电源后这个文件将有BIOS读入到内存绝对地址0X7C00(31kb)处,但是当这段程序被执行时,它又会把自己从这个地址移动(或者说复制)到内存绝对地址0X90000(576KB)处,并将启动设备盘中后2KB代码(boot/setup.S)读入到内存中绝对地址为0X90200处,而内核的其他部分(system模块)被读入到从内存地址0X10000(64KB)开始处,由于我们所研读的linux内核版本的system模块长度并不大,不会超过512KB因此并不会覆盖掉0X90000的内容。在整个加载内容的过程中屏幕中显示 Loading...... 全部加载完成后,控制权便不再归bootsect.S所有。而今天我们讨论的就是这个加载的过程。首先把代码展示下吧,这里笔者分析的只是笔者不太明白的部分,希望前辈们看到了给予指点,同等水平的看到了共同研究进步吧。
BOOTSEG = 0x07C0
INITSEG = DEF_INITSEG !(0x9000)
SETUPSEG = DEF_SETUPSEG !(0x9020)
SYSSEG = DEF_SYSSEG !(0x1000)
SYSSIZE = DEF_SYSSIZE !(0x7F00)
ROOT_DEV = 0
SWAP_DEV = 0 !设备使用设置
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
start:
!具体移动方法
mov ax,#BOOTSEG
mov ds,ax
mov ax,#INITSEG
mov es,ax
mov cx,#256
sub si,si !si寄存器置空
sub di,di !di寄存器置空
rep
movw
jmpi go,INITSEG !移动完成,跳转到新的内存地址继续执行
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!到此完成了自身的移动并跳转执行
上面代码中文件包含没有给出,不过个变量代表的实际值已经在注视中给出,实际上文件包含了#include<linux/config.h>
本文链接