使用dnsmasq解决多套测试环境的host绑定

线上线下的多套环境,线上环境N多个机房,每个机房几百个公网IP,机房建设前期的需要给测试提供host列表。为方便在新机房启用前测试快速切换到不同的环境,就试用了一下dnsmasq,觉得还是不错的。 centos5.8自带的版本比较老,就直接下载的源码包编译了一下,编译后只拷出来了dnsmasq程序本身。新搞了个目录按照下面的格式存放。 bin/dnsmasq dnsmasq.conf dnsmasq.hosts failquery.pl restart.shresolv.conf 主配置文件如下 #dnsmasq.conf user=pmno-hostsaddn-hosts=/home/pm/dnsmasq/dnsmasq.hostsresolv-file=/home/admin/dnsmasq/resolv.confcache-size=1500local-ttl=10max-ttl=10log-queries #!/bin/bashPRE=/home/pm/dnsmasqkillall dnsmasq &>/dev/null $PRE/bin/dnsmasq -x $PRE/dnsmasq.pid -C $PRE/dnsmasq.conf -8 $PRE/dns.log -Dkillall -0 dnsmasq && echo "dnsmasq start ok" || echo "dnsmasq start failed" 每次改了配置直接运行一下restart脚本就行了。 因为开启了日志记录,所以随便写了个perl脚本分析日志,可以查看到测试同学访问时我配置的host文件是不是又漏掉的。 #!/usr/bin/perluse strict; use warnings; my %error; my %lack; my $reg=qr/xxx.com|yyyy.com/; #只分析这两个域的域名my $DNSLOG="/home/pm/dnsmasq/dns.log"; open my $LOG,"<$DNSLOG" or die "open dns log failed!\n"; while (my $line=<$LOG>){if($line=~/NXDOMAIN/){if($line=~/]:\s+\w+\s+([\w\.]+)\s+/){my $do=$1; $error{$do}++ if ( $do=~/$reg/) ; }}if($line=~/forwarded/){if($line=~/]:\s+\w+\s+([\w\.]+)\s+/){my $do=$1; $lack{$do}++ if ($do=~/$reg/); }} } close $LOG; my @t=keys%error;delete @lack{@t}; if( keys%lack >0){print "\e[31mhosts lack some domains:\e[m\n";print "\e[1;33m",join("\n",keys%lack),"\e[m\n**************\n"}if( keys%error >0){print "\e[32msome query domains not exist:\e[m\n";print join("\n",keys%error),"\n**************\n"}

August 25, 2012 · 1 min · pm

linux下多标签的ssh客户端

对于系统管理员来说在windows下使用securecrt和xshell其实还是比较方便的。撇开其他的不说,在linux下使用gnome-terminal的时候如果不用screen得手动开一堆标签,使用screen也有很多限制,比如复制一下的时候按ctrl +a +[去进入copy/paste模式, 按2次enter选择要复制的段,然后再ctrl+a+] 把缓冲区的内容复制出来,其实还是不是太方便的,尤其是有时执行命令的时候屏幕滚动输出的同时想直接复制一下,用鼠标还是比较方便的。今天试用了一下pac和gnome connetion manager,都还是比较好用的。相对来所pac的功能比较多一些,gcm里面不能指定字符集编码是个遗憾,因为线上服务器都是用的GBK的编码。为了达到在xshell下clone session不重复输入密码的效果。需要简单的配置一下ssh,其实就是在.ssh下新建config文件,填入host *ControlMaster autoControlPath ~/.ssh/master-%r@%h:%p 这样我们在gnome-terminal下如果已经ssh登陆了一个机器的时候再新开窗户ssh登陆这个机器时就不用输入密码了。 附上pac和gcm的链接地址:http://kuthulu.com/gcm/?module=downloadhttp://sourceforge.net/projects/pacmanager/

August 14, 2012 · 1 min · pm

使用evolution-mapi接收exchange服务器的邮件

公司的邮件服务器是exchange的,在linux下办公就非常不方便。还好现在evolution的mapi插件可以比较好地连exchange 2007 server。在debian里直接aptitude install evolution-mapi安装好后,在evolution里就可以选择mapi方式了。填上exchange服务器的域名,自己的账户和domainname就行了。由于我的邮箱类型是BU\[email protected]的形式,所以配置的时候就是exchange.xx.comusername: XXXdomainname: BU选上use secure connection就行了。具体的使用可以参考FAQhttp://www.go-evolution.org/MAPI_FAQ @@@@@@@@@@@@@@@@@@@ 现在我在debian下安装了一个virtulbox 跑了个windows 2003,安装了WPS和foxmail,用foxmail收邮件还是很方便的。 配置的时候填好exchange服务器,需要注意使用https代理服务器登录,填好msstd地址(与代理服务器相同),使用NTLM验证,然后还要注意第一次填写的帐号不能是BU\user,而是要写成user@BU的形式

August 13, 2012 · 1 min · pm

使用iconv 转换编码

在linux下经常遇到编码问题,有时可以统一使用iconv把编码转换一下,使用方法如下: Usage: iconv [OPTION…] [FILE…]Convert encoding of given files from one encoding to another. e.g: iconv -f gbk -t utf8 -o a.txt xx.txt

August 13, 2012 · 1 min · pm

openwrt wan 802.1x认证

公司的内部有线网络使用802.1x认证,自己搞了个DB120刷OpenWrt把无线转发给自己用。安装好OpenWrt后 主要是把wpad-mini卸载换成wpad,mini版本的不支持802.1x认证。其实wpad就是wpa_supplicant和hostapd的集合。 #!/bin/ashkillal l wpa_supplicant 2>/dev/nullwpa_supplicant -B -D wired -i eth0 -c /etc/802.1x.confsleep 5udhcpc -i eth0其实最好的是wpa_supplicant不以deamon启动,直接看输出显示认证成功后重新获取IP。 2.lan下dhcp时指定内网的DNS服务器 修改一下/etc/config/dhcp配置文件 在config dhcp lan段添加 list ‘dhcp_option’ ‘6,DNS1,DNS2′ 6的含义是 root@OpenWrt:/etc/config# dnsmasq –help dhcpKnown DHCP options:1 netmask2 time-offset3 router6 dns-server7 log-server9 lpr-server13 boot-file-size15 domain-name16 swap-server17 root-path18 extension-path19 ip-forward-enable20 non-local-source-routing21 policy-filter22 max-datagram-reassembly23 default-ttl26 mtu27 all-subnets-local31 router-discovery32 router-solicitation33 static-route34 trailer-encapsulation35 arp-timeout36 ethernet-encap37 tcp-ttl38 tcp-keepalive40 nis-domain41 nis-server42 ntp-server44 netbios-ns45 netbios-dd46 netbios-nodetype47 netbios-scope48 x-windows-fs49 x-windows-dm60 vendor-class64 nis+-domain65 nis+-server66 tftp-server67 bootfile-name68 mobile-ip-home69 smtp-server70 pop3-server71 nntp-server74 irc-server77 user-class93 client-arch94 client-interface-id97 client-machine-id119 domain-search120 sip-server121 classless-static-route125 vendor-id-encap255 server-ip-address

August 10, 2012 · 1 min · pm

DNS性能测试

bind自带的queryperf可以比较方便的对DNS服务器进行性能测试, queryperf的安装比较简单,直接在bind-9.x.x/contrib/queryperf下./configure && make就可以编译好。 README 里有比较详细的使用说明。在测试前需要准备一个域名列表。比如 xx1.dev.net A xx2.dev.net A xx3.dev.net A ………….. xxn.dev.net A 然后使用queryperf -d dnsfile -s DNS_SERVER就能进行测试了。一般不开log的话QPS可以到10W,截图的是虚拟机上部署的bind,而且开了log。 ==== 测试了一下路由器上ar7240的CPU,dns查询的性能能到接近2K。 Statistics: Parse input file: onceEnded due to: reaching end of file Queries per second: 1894.060723 qps

August 7, 2012 · 1 min · pm

linux下绑定特定中断到指定CPU

如果大家用的万兆网卡跑linux或者nginx做大规模的负载均衡,那么肯定会遇到网卡中断占耗尽一个CPU的情况,会发现有一个ksoftirqd进程耗CPU非常厉害。这个时候就需要把万兆网卡的多个队列分别绑定到不同的核上。简单的在自己的笔记本上测试一下把单个中断绑定到指定CPU的方式。 1.先查看中断号 root@debian:/home/pm/downloads# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 55 0 0 0 IO-APIC-edge timer 1: 9828 0 0 0 IO-APIC-edge i8042 8: 1 0 0 0 IO-APIC-edge rtc0 9: 64153 0 0 0 IO-APIC-fasteoi acpi 12: 12812 0 0 0 IO-APIC-edge i8042 16: 50287 0 0 0 IO-APIC-fasteoi mmc0, ehci_hcd:usb1 23: 32 0 0 0 IO-APIC-fasteoi ehci_hcd:usb2 40: 2053 0 0 0 PCI-MSI-edge eth0 41: 84430 0 0 0 PCI-MSI-edge ahci 42: 540 0 0 0 PCI-MSI-edge snd_hda_intel 43: 189429 3306 1140 185873 PCI-MSI-edge iwlwifi 44: 367098 96565 0 0 PCI-MSI-edge i915 NMI: 389 212 369 216 Non-maskable interrupts ...

July 28, 2012 · 2 min · pm

使用perl脚本发送gtalk消息

gtalk是使用xmpp协议的,因此可以很方便地利用现有的库来登陆gtalk发送消息。下面是参考了网上资料写的一个perl版本的 #!/usr/bin/perluse strict; use warnings; use Net::XMPP; use utf8; binmode(STDIN, ‘:encoding(utf8)’); binmode(STDOUT, ‘:encoding(utf8)’); binmode(STDERR, ‘:encoding(utf8)’); my $username = "USERNAME"; #用户名,不带@的my $password = "PASSWORD"; #纯文本密码my $re source = "perl_script"; #authcenticate my @login =$connect->AuthSend(username => $username,password => $password,re source => $re source ); if ( $login[0] ne "ok" ){print "login failed: $login[0] -$login[1]\n"; exit(2);

July 28, 2012 · 1 min · pm

vim,lftp,ssh,sshd配置

主要是每次重装了系统都得配置,记录一下。 vim 的配置: syntax on set nuset nobackupset cindentset fileencodings=utf-8,gbk,ucs-bom,cp936set incsearch ” Incremental searchset cursorline lftp的配置添加: set dns:order “inet6 inet”debug 3 #可以显示详细的交互过程 set ftp:char set GBKset file:char set UTF-8alias gbk “ set ftp:char set gbk; set file:char set UTF-8”alias utf8 “ set ftp:char set UTF-8; set file:char set UTF-8” ssh配置: ~/.ssh/config host *ControlMaster autoControlPath ~/.ssh/%r@%h:%pControlPersist yes /etc/ssh/ssh_config ServerAliveInterval 10

July 25, 2012 · 1 min · pm

gnome-shell设置关屏幕不休眠

gnome3用了也很长一段时间了,总体来说我是感觉使用gnome3不是太顺手,稳定性也有待提高。更关键的是很多以前有的小桌面插件现在也不能使用了,比如调节CPU频率的插件,要知道linux的电源管理本来就 比windows 7 搓很多,现在笔记本的用linux的待机时间就非常短。 话说昨天跑个fio测试一下IO性能,结果上厕所之前我把屏幕合上了,机器休眠了,今天开机就SB了。。文件系统修复了半天。。。 在gnome-tweak-tool和系统设置里都没有找到以前有的设置项。网上搜索了一下,可以这么搞 gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action “nothing” 设置好可以自己查看一下设置设置成功没有。 ```bash gsettings get org.gnome.settings-daemon.plugins.power lid-close-battery-action 其实也可以直接使用dconf-editor进行配置。=============update现在的新版gnome3这个方法已经失效了,直接安装gnome Tweak Tool 可以设置的。

July 21, 2012 · 1 min · pm