準備把之前用的一套(山寨)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.
為什麼像我這麼多愁善感的人,一個月才寫一篇博客呢