准备把之前用的一套(山寨)cdn用到博客和其他一堆乱七八糟的站上面,用了yoooo.us(4个o)来做cname。主要现在的yooooo.us还依赖cloudflare的服务没法搬,所以另外注册了一个放到cloudxns上根据运营商区分解析。现在电信走的是idcf;联通移动和港澳台小伙伴是vultr日本;国外是cc的lax。韩国kt用来做冗余。
所以对于你们来说,每次打开我的博客的时候,可以至少省一个字节的流量了。
准备把之前用的一套(山寨)cdn用到博客和其他一堆乱七八糟的站上面,用了yoooo.us(4个o)来做cname。主要现在的yooooo.us还依赖cloudflare的服务没法搬,所以另外注册了一个放到cloudxns上根据运营商区分解析。现在电信走的是idcf;联通移动和港澳台小伙伴是vultr日本;国外是cc的lax。韩国kt用来做冗余。
所以对于你们来说,每次打开我的博客的时候,可以至少省一个字节的流量了。
自从有次过海关的时候电脑被TSA开包检查硬盘还掉下来了之后,我的被害妄想症就越来越没救了。
这篇文章假设有人可以物理接触你的电脑,以及你所在的网络不可信,这种情况下应该怎么保护你的服务器数据安全。
欢迎交流
基于OpenResty ,MaxMind GeoIP数据库和从bgp.he.net生成的ASN数据库,因为没有经纬度的需求所以没有显示。下文有源代码的链接,如果需要可以自行修改加上经纬度或者将输出变为JSON等。
这里有chrome插件
查询当前IPv4地址
$ curl http://cidr.me/ip
x.x.x.x
查询当前IPv6地址
$ curl http://ipv6.cidr.me/ip
x.x.x.x
查询当前IP的PTR记录(反向DNS),地理位置和ASN
$ curl http://cidr.me/
x.x.x.x
Country, City
ASN number
查询当前IP的PTR记录
$ curl http://cidr.me/rdns
x-x-x-x.com
查询指定IP的地理位置
$ curl http://cidr.me/74.125.203.199
74.125.203.199 th-in-f199.1e100.net
United States, California, Mountain View
AS15169 Google Inc.
查询域名的地理位置
$ curl http://cidr.me/www.google.com.hk
172.217.3.195 sea15s12-in-f3.1e100.net
United States, California, Mountain View
AS15169 Google LLC2607:f8b0:400a:809::2003 sea15s12-in-x03.1e100.net
United States
AS15169 Google LLC
查询域名的IP
$ curl http://cidr.me/www.google.com.hk/ip
74.125.203.199
2607:f8b0:400a:809::2003
查询域名的IP和CNAME(如果存在)
$ curl http://cidr.me/www.youtube.com/dns
youtube-ui.l.google.com 172.217.3.174
172.217.3.206
216.58.193.78
216.58.217.46
2607:f8b0:400a:808::200e
在这里https://gist.github.com/fffonion/44e5fb59e2a8f0efba5c1965c6043584
需要ngx_http_geoip_module, echo-nginx-module, lua-nginx-module,安装libgeoip,并将maxmind的旧版geoip数据库放在/usr/share/GeoIP
因为怕死 遵纪守法,所以不在自家bt下新番和剧。目前的架构是这样的,造福一下海外党
功能类似于dlundquist/sniproxy
推荐 OpenResty 加上 stream 模块和 ngx_stream_lua_module 模块。在 1.9.15.1 上测试通过。
示例配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
stream { lua_resolver 8.8.8.8; init_worker_by_lua_block { sni_rules = { ["www.google.com"] = {"www.google.com", 443}, ["www.facebook.com"] = {"9.8.7.6", 443}, ["twitter.com"] = {"1.2.3.4"}, [".+.twitter.com"] = {nil, 443} } } server { error_log /var/log/nginx/sniproxy-error.log error; listen 443; content_by_lua_block { local sni = require("resty.sniproxy") local sp = sni:new() sp:run() } } } |
A Lua table sni_rules
should be defined in the init_worker_by_lua_block
directive.
The key can be either whole host name or regular expression. Use .
for a default host name. If no entry is matched, connection will be closed.
The value is a table containing host name and port. If host is set to nil
, the server_name in SNI will be used. If the port is not defined or set to nil
, 443 will be used.
Rules are applied with the priority as its occurrence sequence in the table. In the example above, twitter.com will match the third rule rather than the fourth.
If the protocol version is less than TLSv1 (eg. SSLv3, SSLv2), connection will be closed, since SNI extension is not supported in these versions.
为什么像我这么多愁善感的人,一个月才写一篇博客呢