海运的博客

OpenVZ VPS添加HE IPV6 Tunnel

发布时间:July 3, 2014 // 分类:网络工具 // No Comments

VPS需开启TUN/TAP:

wget http://tb-tun.googlecode.com/files/tb-tun_r18.tar.gz
tar xvf tb-tun_r18.tar.gz
yum install gcc
tar xvf tb-tun_r18.tar.gz
gcc tb_userspace.c -l pthread -o tb_userspace
mv tb_userspace /usr/bin/
setsid tb_userspace he-ipv6 <server-ip> <local-ip> sit > /dev/null
ip link set he-ipv6 up
ip addr add 2001:470::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6

添加多个IP:

for ip in {1..100}; do ip addr add 2001:470:1f07:26a::$ip/64 dev he-ipv6; done

添加随机IP:

#!/bin/sh
MAXCOUNT=100
count=0
network_v6=2001:470:1f07:26a

rnd_ipv6_block () {
  #HEX="tr -dc "[:xdigit:]" < /dev/urandom | head -c 16 | sed 's/..../:&/g'"
  HEX="openssl rand -hex 8 | sed 's/..../:&/g'"
  ipv6=$network_v6$(eval $HEX);
}

echo "$MAXCOUNT 个IPv6:"
echo "-----------------"

while [ $count -lt $MAXCOUNT ]
do
  count=`expr $count + 1`
  rnd_ipv6_block
  echo $ipv6
  ip addr add $ipv6/64 dev he-ipv6
done

PHP生成随机IPV6:

<?php
$prefix = '2001:470:1f07:26a';
$str = substr(md5(rand()), 16);
$addr = $prefix . ':' . implode(':', str_split($str, 4));
echo $addr;

域名自身NS记录的问题

发布时间:July 3, 2014 // 分类:DNS // No Comments

这个问题纠结了很久,子域名下ns为添加子域名授权dns服务器,以为域名本身@的ns记录是ns再授权,使用过程中并非如此,在其它www.snooda.com/read/278看到一段描述,暂且转过来。
很多顶级域的dns都会有@域的ns记录指向自己,之前理解有误,其实这些ns记录是对二级域生效的。这样设置是表示二级域和顶级域由相同的ns服务器负责解析。即使不设置这个记录,顶级域dns服务器也是可以解析子域的,但顶级域的ns记录缓存时间是不可控的(设置时没有ttl),有可能很快过期,这样的话解析二级域时就需要多次去com域dns上查询,而有了ns记录,可以自己控制ttl,在ttl没有过期的时间内,查询时可以直接命中ns记录去查询二级域,有效提高速度。

理论上顶级域dns只负责解析顶级域自身的a、mx、cname、ns记录等,其他二级域记录需要顶级域的ns记录指定的dns来解析,而一般大家使用dns托管的话,二级域名和顶级域往往是一起管理的,所以ns是指向自身的。

PHP检查域名年龄及Whois脚本

发布时间:July 1, 2014 // 分类:PHP // No Comments

<?php
class DomainAge{
  private $WHOIS_SERVERS=array(
    "com"               =>  array("whois.verisign-grs.com","/Creation Date:(.*)/"),
    "net"               =>  array("whois.verisign-grs.com","/Creation Date:(.*)/"),
    "org"               =>  array("whois.pir.org","/Created On:(.*)/"),
    "info"              =>  array("whois.afilias.info","/Created On:(.*)/"),
    "biz"               =>  array("whois.neulevel.biz","/Domain Registration Date:(.*)/"),
    "us"                =>  array("whois.nic.us","/Domain Registration Date:(.*)/"),
    "uk"                =>  array("whois.nic.uk","/Registered on:(.*)/"),
    "ca"                =>  array("whois.cira.ca","/Creation date:(.*)/"),
    "tel"               =>  array("whois.nic.tel","/Domain Registration Date:(.*)/"),
    "ie"                =>  array("whois.iedr.ie","/registration:(.*)/"),
    "it"                =>  array("whois.nic.it","/Created:(.*)/"),
    "cc"                =>  array("whois.nic.cc","/Creation Date:(.*)/"),
    "ws"                =>  array("whois.nic.ws","/Domain Created:(.*)/"),
    "sc"                =>  array("whois2.afilias-grs.net","/Created On:(.*)/"),
    "mobi"              =>  array("whois.dotmobiregistry.net","/Created On:(.*)/"),
    "pro"               =>  array("whois.registrypro.pro","/Created On:(.*)/"),
    "edu"               =>  array("whois.educause.net","/Domain record activated:(.*)/"),
    "tv"                =>  array("whois.nic.tv","/Creation Date:(.*)/"),
    "travel"            =>  array("whois.nic.travel","/Domain Registration Date:(.*)/"),
    "in"                =>  array("whois.inregistry.net","/Created On:(.*)/"),
    "me"                =>  array("whois.nic.me","/Domain Create Date:(.*)/"),
    "cn"                =>  array("whois.cnnic.cn","/Registration Date:(.*)/"),
    "asia"              =>  array("whois.nic.asia","/Domain Create Date:(.*)/"),
    "ro"                =>  array("whois.rotld.ro","/Registered On:(.*)/"),
    "aero"              =>  array("whois.aero","/Created On:(.*)/"),
    "nu"                =>  array("whois.nic.nu","/created:(.*)/")
  );
  public function age($domain)
  {
    $domain = trim($domain); //remove space from start and end of domain
    if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7); // remove http:// if included
    if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4);//remove www from domain
    if(preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i",$domain))
    {
      $domain_parts = explode(".", $domain);
      //取后缀
      $tld = strtolower(array_pop($domain_parts));
      if(!$server=$this->WHOIS_SERVERS[$tld][0]) {
        return false;
      }
      $res=$this->queryWhois($server,$domain);
      if(preg_match($this->WHOIS_SERVERS[$tld][1],$res,$match))
      {
        date_default_timezone_set('UTC');
        $time = time() - strtotime($match[1]);
        $years = floor($time / 31556926);
        $days = floor(($time % 31556926) / 86400);
        if($years == "1") {$y= "1 year";}
        else {$y = $years . " years";}
        if($days == "1") {$d = "1 day";}
        else {$d = $days . " days";}
        return "$y, $d";
      }
      else
        return false;
    }
    else
      return false;
  }
  private function queryWhois($server,$domain)
  {
    $fp = @fsockopen($server, 43, $errno, $errstr, 20) or die("Socket Error " . $errno . " - " . $errstr);
    if($server=="whois.verisign-grs.com")
      $domain="=".$domain;
    //echo $domain;
    fputs($fp, $domain . "\r\n");
    $out = "";
    while(!feof($fp)){
      $out .= fgets($fp);
    }
    fclose($fp);
    //echo $out;
    return $out;
  }
}
$w=new DomainAge();
$age = $w->age("baidu.com");
echo $age."\n";
?>

PHP通过Yahoo Content Analysis API生成tag

发布时间:June 27, 2014 // 分类:PHP // No Comments

<?php
$text = 'This domain name expired on 12/6/2014 and is pending renewal or deletion.';
$query = "select * from contentanalysis.analyze where text = '".$text."'";
$url = 'http://query.yahooapis.com/v1/public/yql';
$yql_query_url = $url . "?q=" . urlencode($query);
$yql_query_url .= "&format=json";
$yql_query_url .= "&enable_categorizer=true";
$yql_query_url .= "&diagnostics=false";
$yql_query_url .= "&related_entities=true";
$yql_query_url .= "&show_metadata=true";
$ch = curl_init($yql_query_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result);
var_dump($result);
if(!is_null($result->query->results)) {
  foreach($result->query->results->entities as $word) {
    if (is_array($word)) {
      foreach($word as $subword) {
        echo $subword->text->content."\n";
      }
    } else{
      echo $word->text->content."\n";
    }
  }
}
?>

文档:https://developer.yahoo.com/search/content/V2/contentAnalysis.html

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
归档