dns glue record的查看与校验

[| 不指定 2013/03/31 21:23]
    在使用自有dns服务器时,一般会使用glue record。即使用ns01.snooda.com作为snooda.com的dns服务器,这样就会遇到一个先有鸡还是先有蛋的问题。为了解决此问题,会使用glue record,即由com域dns服务器提供ns01.snooda.com的ip地址。一般这个记录在域名注册商那里修改。但怎么查看是否修改成功了呢?这里dig就派上了用场。


    使用dig +trace +nosearch +all +norecurse snooda.com

    在返回的结果里,我们会在com域dns返回的结果中,看到一个”ADDITIONAL SECTION“,里面提供了两个a记录。这就是glue record。由于我们试图解析snooda.com,所以先从com域dns服务器获取snooda.com的dns服务器地址,com域dns判断结果是一个snooda.com的子域,所以是glue record。所以不但返回了dns地址,还返回了对应的a记录。

    用这个方式就可以检验设置的glue record是否生效。





Tags:
    当使用国外服务器时,经常会发现,下载速度只有十几k。平时可能不太注意,认为服务器带宽不足,或者自己使用的宽带不给力,其实很有可能原因并不在此。

    由于光速的局限性,延迟会比较高(即使光沿直线传播,太平洋一个往返也要一百多毫秒)。并且由于距离较远,途径路由跳数较多,并且网络拥堵的原因。经常会发生丢包的情况。

    对于平时使用最广泛的TCP协议来讲,发送端发出包后,接收端会回复ACK,表示自己收到了。用这种机制来保证可靠性。但对于高延迟链路来讲,如果每发送一个包都等待应答,那么大部分时间都在等待数据包到达,而链路则空置了。为此一般会采用滑动窗口技术。即在窗口满之前,发送端一直发送包,然后收到应答后将确认收到的包从窗口中移除。这样可以提高链路利用率。

    TCP还有一个特性则是拥塞控制。当发送端检测到链路发生丢包时,则会主动缩小窗口大小以减慢发送速度,避免拥塞。不过对于跳数较多的链路来讲,只要有一个路由不够稳定丢包,就会被发送端判断为拥塞,从而影响网络速度。

    为了解决丢包问题,最简单粗暴的方法就是双倍发送,即同一份数据包发送两份。这样的话在服务器带宽充足情况下,丢包率会平方级降低。

    这种方式下,直接优点是降低丢包率,直接缺点是耗费双倍流量。一些延伸影响是更容易触发快速恢复逻辑,避免了丢包时窗口缩减过快。一定程度也能提高网络速度。


    最近比较忙,空闲时间做了一个最简单的程序,试用效果很好,在一台VPS上测试后发现,未开启时单线程下载、ssh管道速度在十几K级别。开启后可以达到平均300KB+的速度。效果非常明显。但对于不加速就可以跑满带宽的类型来讲(多线程下载),开启后反而由于多出来的无效流量,导致速度减半。所以对于多线程/高速链路,这个方案是不适合的。

     目前版本是最简单的逻辑,未来会进行细化(主动触发快速恢复、快速重传等),降低流量浪费,提升加速效果。

     目前程序起名net-speeder,相对于修改协议栈来讲,由于后者需要重新升级编译内核,使用用户态程序部署更方便,稳定性更高,兼容性更好。缺点则是性能开销稍大和自由度有损失。总体比较起来,个人使用还是使用用户态程序更合适一些,特别是在虚拟机中使用(OpenVZ,LXC等虚拟机无法自己定制内核)。




      项目托管地址:http://code.google.com/p/net-speeder/
                           https://github.com/snooda/net-speeder


      

关注微信公众号随时接收最新开发进度。近期将会推出加速效果体验ssh/pptp账号
点击在新窗口中浏览此图片


Tags:

Linux服务器安全操作技巧

[| 不指定 2013/03/13 11:52]
      在服务器操作系统市场上,Linux因其开源、自由的特性赢得了很多人的亲睐。但相比于Windows系统简单直观的GUI界面,Linux的操作很大一部分是使用命令行方式来进行,这对于一部分初学者来讲是一个不小的挑战。操作失误轻则影响服务,重则丢失数据。那么,究竟怎样才能降低风险,更安全的使用Linux呢?

1,  vi的使用
vi是使用很广泛的文本编辑器,可以让双手在基本不离开字母区的情况下完成各种操作。应注意在查看超大文件时,不能使用vi。因为vi会将文件整体载入内存,打开大文件很容易造成服务器内存耗尽、IO占用率飙升。在这种场景下,推荐使用less命令。
2,  慎用rm
在日常操作用,应谨慎使用rm,尤其是-rf参数。对于不需要的文件应先mv到其他位置保留一段时间,待磁盘空间占用率较高需要清理文件时再进行清理。
3,  替换文件使用mv而不是cp
在替换文件时,应先备份原有文件,再使用mv操作将文件覆盖。对于正在使用该文件的进程来讲,mv操作不会在本次使用周期内被感知到,只有重新打开文件时才会生效。而cp则不然。使用cp覆盖文件,特别是覆盖动态链接库,很容易导致一些进程coredump。
4,  编写重要命令时前面加符号#
在编写重要/批量命令时,应在命令开头处先输入符号#(#在shell中为注释符)。确认无误后再去掉#,避免误按回车键导致不完整命令执行造成破坏。
5,  确保操作所依赖条件成立
对于依赖前面执行结果的操作来讲,可以使用&&来连接各条命令,确保前面执行都成功后才进行后面操作,避免前一步执行失败仍继续下一步造成破坏。
6,  使用rsync而不是scp
在拷贝大量文件时,scp无法查看具体进度,并且一但中断就要从头再来。相比之下rsync功能更为强大一些,支持增量传输,并且还可以随时查看进度。
7,  网络操作注意限速
对于rsync或wget等网络操作,应注意限速,避免耗尽带宽影响正常服务的通信。
8,  操作前设计好回滚方案
操作结果不符合预期时,需要将之前的操作回滚。应提前设计好回滚方案,避免到时候手忙脚乱导致操作失误,或操作时未注意备份文件和数据导致回滚失败。








分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]