查询 dns server 使用的bind版本

其实命令很简单,但我发现我老记不住,所以做个记录吧(我总是把version.bind记成bind.version,orz)

 dig @${server} TXT CHAOS version.bind

${server}换成你想查询的dns服务器IP地址即可,如:

dig @8.8.8.8 CHAOS TXT version.bind

其实通常情况下出于安全考虑,大多数我们是查询不到版本信息的(系统管理员禁用了)

bind 可以通过如下设置禁用版本号查询:

options {
    version none;
}

或者你可以将此值设置为某个固定字符串,如 "someone like you"

more ...


Linux系统上通知网关更新arp

经常会有在线更换Linux服务器IP的操作,该操作带来的一个问题是: 我们已经执行了修改IP的操作,但由于网络上(网关)的ARP缓存暂未更新,导致在某一段时间内,该服务器会有网络不通的情况存在。

因此,我们需要在变更IP的同时,通知网关刷新ARP缓存。

首先清除本地ARP缓存:

/bin/ip neigh flush dev eth0

其次向网关发送本机的ip/mac地址

/usr/sbin/arping -v -c 2 -S 1.1.1.144 -s 00:17:a4:8d:0e:98 -p 1.1.1.1

1.1.1.144 为本机IP

00:17 …

more ...

Java 发起Http Post请求

对于一个 Java 小白,每完成一个新的功能,都表示相当不易,就连 Apache HttpClient 偶都表示没搞明白, 看起来好像不同版本还有不同的方法,没办法,还是借助于 Google,拼凑出了这一段代码,记录以备自己后用。

功能:使用 http post 方式访问某使用了 CNNIC 证书的站点(cnnic,唉,好多不信任)

/*
 * Java POST Example
 */

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.URLEncoder;
import java …
more ...

Java 使用自签证书访问https站点

最近被 Java 使用自签证书访问 https 的问题折腾得体无完肤,做为一名 Java 小白, 我也忍不住想感慨一下,不同 Java 程序员的水平差别真的好大,有些根本无法沟通, 都不知道他们怎么胜任日常的编码工作的=,= 同时做为一个 Java 黑,我觉得,好吧,更黑了。。

anyway,经过各种折腾,至少总结出了以下两种使用自签证书访问 https 站点的办法。

方法一

拿到相应的 https 站点证书后(好吧,我这里是cnnic.crt,顺便吐槽一下万恶的 cnnic 证书,各种不信任):

keytool -import -alias ${alias} -keystore ${JAVA_HOME}/jre/lib/security/cacerts -file ${path-to-certificate …
more ...

OpenID4Java 使用dumb模式(stateless)并禁用 discovery

使用无状态模式(dumb mode/stateless)发起 OpenID 认证请求:

manager = new ConsumerManager();
manager.getRealmVerifier().setEnforceRpId(false);
// 强制manager使用无状态模式
manager.setMaxAssocAttempts(0);

禁用 discovery

// 不要使用manager.discover构造discoveries
// List discoveries = manager.discover(userSuppliedString);
// 使用人肉构造discoveries
List discoveries = new ArrayList();
discoveries.add( new DiscoveryInformation( new URL("http//real.openid.server.url") ) );
more ...