rubydns 0.8.1 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -2
- data/README.md +37 -1
- data/lib/rubydns/handler.rb +20 -10
- data/lib/rubydns/server.rb +10 -5
- data/lib/rubydns/transaction.rb +4 -0
- data/lib/rubydns/version.rb +1 -1
- data/lib/rubydns.rb +4 -0
- data/rubydns.gemspec +1 -1
- data/test/examples/dropping-dns.rb +0 -4
- data/test/examples/fortune-dns.rb +0 -2
- data/test/examples/geoip-dns.rb +1 -5
- data/test/examples/wikipedia-dns.rb +0 -2
- data/test/performance/benchmark.rb +29 -0
- data/test/performance/bind9/generate-local.rb +25 -0
- data/test/performance/bind9/local.zone +5014 -0
- data/test/performance/bind9/named.conf +14 -0
- data/test/performance/million.rb +87 -0
- data/test/test_daemon.rb +24 -2
- data/test/test_passthrough.rb +1 -1
- data/test/test_resolver_performance.rb +2 -1
- data/test/test_server_performance.rb +134 -0
- data/test/test_slow_server.rb +1 -3
- data/test/test_truncation.rb +1 -3
- metadata +30 -20
- data/test/test_domains.txt +0 -185
@@ -0,0 +1,87 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Copyright, 2009, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
require 'rubydns'
|
24
|
+
require 'benchmark'
|
25
|
+
|
26
|
+
require 'stackprof'
|
27
|
+
|
28
|
+
Name = Resolv::DNS::Name
|
29
|
+
IN = Resolv::DNS::Resource::IN
|
30
|
+
|
31
|
+
# Generate a million A record "domains":
|
32
|
+
|
33
|
+
million = {}
|
34
|
+
|
35
|
+
Benchmark.bm do |x|
|
36
|
+
x.report("Generate names") do
|
37
|
+
(1..1_000_000).each do |i|
|
38
|
+
domain = "domain#{i}.local"
|
39
|
+
|
40
|
+
million[domain] = "#{69}.#{(i >> 16)%256}.#{(i >> 8)%256}.#{i%256}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Run the server:
|
46
|
+
|
47
|
+
StackProf.run(mode: :cpu, out: 'rubydns.stackprof') do
|
48
|
+
RubyDNS::run_server(:listen => [[:udp, '0.0.0.0', 5300]]) do
|
49
|
+
@logger.level = Logger::WARN
|
50
|
+
|
51
|
+
match(//, IN::A) do |transaction|
|
52
|
+
transaction.respond!(million[transaction.name])
|
53
|
+
end
|
54
|
+
|
55
|
+
# Default DNS handler
|
56
|
+
otherwise do |transaction|
|
57
|
+
logger.info "Passing DNS request upstream..."
|
58
|
+
transaction.fail!(:NXDomain)
|
59
|
+
|
60
|
+
EventMachine::stop
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Expected output:
|
66
|
+
#
|
67
|
+
# > dig @localhost -p 5300 domain1000000
|
68
|
+
#
|
69
|
+
# ; <<>> DiG 9.8.3-P1 <<>> @localhost -p 5300 domain1000000
|
70
|
+
# ; (3 servers found)
|
71
|
+
# ;; global options: +cmd
|
72
|
+
# ;; Got answer:
|
73
|
+
# ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50336
|
74
|
+
# ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
|
75
|
+
# ;; WARNING: recursion requested but not available
|
76
|
+
#
|
77
|
+
# ;; QUESTION SECTION:
|
78
|
+
# ;domain1000000. IN A
|
79
|
+
#
|
80
|
+
# ;; ANSWER SECTION:
|
81
|
+
# domain1000000. 86400 IN A 69.15.66.64
|
82
|
+
#
|
83
|
+
# ;; Query time: 1 msec
|
84
|
+
# ;; SERVER: 127.0.0.1#5300(127.0.0.1)
|
85
|
+
# ;; WHEN: Fri May 16 19:17:48 2014
|
86
|
+
# ;; MSG SIZE rcvd: 47
|
87
|
+
#
|
data/test/test_daemon.rb
CHANGED
@@ -29,10 +29,12 @@ require 'process/daemon'
|
|
29
29
|
class BasicTestServer < Process::Daemon
|
30
30
|
SERVER_PORTS = [[:udp, '127.0.0.1', 5350], [:tcp, '127.0.0.1', 5350]]
|
31
31
|
|
32
|
-
@@base_directory = File.dirname(__FILE__)
|
33
|
-
|
34
32
|
IN = Resolv::DNS::Resource::IN
|
35
33
|
|
34
|
+
def working_directory
|
35
|
+
File.expand_path("../tmp", __FILE__)
|
36
|
+
end
|
37
|
+
|
36
38
|
def startup
|
37
39
|
# Start the RubyDNS server
|
38
40
|
RubyDNS::run_server(:listen => SERVER_PORTS) do
|
@@ -44,6 +46,10 @@ class BasicTestServer < Process::Daemon
|
|
44
46
|
transaction.respond!("192.168.1.2")
|
45
47
|
end
|
46
48
|
|
49
|
+
match(/peername/, IN::A) do |transaction|
|
50
|
+
transaction.respond!(transaction[:connection].peername[1])
|
51
|
+
end
|
52
|
+
|
47
53
|
# Default DNS handler
|
48
54
|
otherwise do |transaction|
|
49
55
|
transaction.fail!(:NXDomain)
|
@@ -96,4 +102,20 @@ class DaemonTest < MiniTest::Test
|
|
96
102
|
end
|
97
103
|
end
|
98
104
|
end
|
105
|
+
|
106
|
+
def test_peername
|
107
|
+
assert_equal :running, BasicTestServer.status
|
108
|
+
|
109
|
+
EventMachine.run do
|
110
|
+
resolver = RubyDNS::Resolver.new(BasicTestServer::SERVER_PORTS)
|
111
|
+
|
112
|
+
resolver.query("peername") do |response|
|
113
|
+
answer = response.answer.first
|
114
|
+
|
115
|
+
assert_equal "127.0.0.1", answer[2].address.to_s
|
116
|
+
|
117
|
+
EventMachine.stop
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
99
121
|
end
|
data/test/test_passthrough.rb
CHANGED
@@ -86,6 +86,7 @@ class ResolverPerformanceTest < MiniTest::Test
|
|
86
86
|
rubydns_resolved = {}
|
87
87
|
resolv_resolved = {}
|
88
88
|
|
89
|
+
puts nil, "Comparing resolvers..."
|
89
90
|
Benchmark.bm(20) do |x|
|
90
91
|
x.report("RubyDNS::Resolver") do
|
91
92
|
resolver = RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
|
@@ -113,7 +114,7 @@ class ResolverPerformanceTest < MiniTest::Test
|
|
113
114
|
end
|
114
115
|
end
|
115
116
|
|
116
|
-
DOMAINS.each do |domain|
|
117
|
+
DOMAINS.first(3).each do |domain|
|
117
118
|
# We don't really care if the responses aren't identical - they should be most of the time but due to the way DNS works this isn't always the case:
|
118
119
|
refute_empty resolv_resolved[domain]
|
119
120
|
refute_empty rubydns_resolved[domain]
|
@@ -0,0 +1,134 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
# THE SOFTWARE.
|
22
|
+
|
23
|
+
require 'minitest/autorun'
|
24
|
+
|
25
|
+
require 'rubydns'
|
26
|
+
require 'process/daemon'
|
27
|
+
|
28
|
+
require 'benchmark'
|
29
|
+
|
30
|
+
class ServerPerformanceRubyDNS < Process::Daemon
|
31
|
+
IN = Resolv::DNS::Resource::IN
|
32
|
+
|
33
|
+
def working_directory
|
34
|
+
File.expand_path("../tmp", __FILE__)
|
35
|
+
end
|
36
|
+
|
37
|
+
def startup
|
38
|
+
million = {}
|
39
|
+
|
40
|
+
puts "Generating domains..."
|
41
|
+
(1..5_000).each do |i|
|
42
|
+
domain = "domain#{i}.local"
|
43
|
+
|
44
|
+
million[domain] = "#{69}.#{(i >> 16)%256}.#{(i >> 8)%256}.#{i%256}"
|
45
|
+
end
|
46
|
+
|
47
|
+
puts "Starting DNS server..."
|
48
|
+
RubyDNS::run_server(:listen => [[:udp, '0.0.0.0', 5300]]) do
|
49
|
+
@logger.level = Logger::WARN
|
50
|
+
|
51
|
+
match(//, IN::A) do |transaction|
|
52
|
+
puts "Responding to #{transaction.name}"
|
53
|
+
transaction.respond!(million[transaction.name])
|
54
|
+
end
|
55
|
+
|
56
|
+
# Default DNS handler
|
57
|
+
otherwise do |transaction|
|
58
|
+
transaction.fail!(:NXDomain)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class ServerPerformanceBind9 < Process::Daemon
|
65
|
+
def working_directory
|
66
|
+
File.expand_path("../performance/bind9", __FILE__)
|
67
|
+
end
|
68
|
+
|
69
|
+
def startup
|
70
|
+
exec(self.class.named_executable, "-c", "named.conf", "-f", "-p", "5400", "-g")
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.named_executable
|
74
|
+
# Check if named executable is available:
|
75
|
+
@named ||= `which named`.chomp
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
class ServerPerformanceTest < MiniTest::Test
|
80
|
+
DOMAINS = (1..1000).collect do |i|
|
81
|
+
"domain#{i}.local"
|
82
|
+
end
|
83
|
+
|
84
|
+
def setup
|
85
|
+
@servers = []
|
86
|
+
@servers << ["RubyDNS::Server", 5300]
|
87
|
+
|
88
|
+
ServerPerformanceRubyDNS.start
|
89
|
+
|
90
|
+
unless ServerPerformanceBind9.named_executable.empty?
|
91
|
+
ServerPerformanceBind9.start
|
92
|
+
@servers << ["Bind9", 5400]
|
93
|
+
end
|
94
|
+
|
95
|
+
# Give the daemons some time to start up:
|
96
|
+
sleep 2
|
97
|
+
end
|
98
|
+
|
99
|
+
def teardown
|
100
|
+
ServerPerformanceRubyDNS.stop
|
101
|
+
|
102
|
+
unless ServerPerformanceBind9.named_executable.empty?
|
103
|
+
ServerPerformanceBind9.stop
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_server_performance
|
108
|
+
resolved = {}
|
109
|
+
|
110
|
+
puts nil, "Testing server performance..."
|
111
|
+
Benchmark.bm(20) do |x|
|
112
|
+
@servers.each do |name, port|
|
113
|
+
x.report(name) do
|
114
|
+
# Number of requests remaining since this is an asynchronous event loop:
|
115
|
+
5.times do
|
116
|
+
pending = DOMAINS.size
|
117
|
+
|
118
|
+
EventMachine::run do
|
119
|
+
resolver = RubyDNS::Resolver.new([[:udp, '127.0.0.1', port]])
|
120
|
+
|
121
|
+
DOMAINS.each do |domain|
|
122
|
+
resolver.addresses_for(domain) do |addresses|
|
123
|
+
resolved[domain] = addresses
|
124
|
+
|
125
|
+
EventMachine::stop if (pending -= 1) == 0
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
data/test/test_slow_server.rb
CHANGED
@@ -29,10 +29,8 @@ require 'process/daemon'
|
|
29
29
|
class SlowServer < Process::Daemon
|
30
30
|
SERVER_PORTS = [[:udp, '127.0.0.1', 5330], [:tcp, '127.0.0.1', 5330]]
|
31
31
|
|
32
|
-
@@base_directory = File.dirname(__FILE__)
|
33
|
-
|
34
32
|
def working_directory
|
35
|
-
File.
|
33
|
+
File.expand_path("../tmp", __FILE__)
|
36
34
|
end
|
37
35
|
|
38
36
|
IN = Resolv::DNS::Resource::IN
|
data/test/test_truncation.rb
CHANGED
@@ -30,10 +30,8 @@ require 'process/daemon'
|
|
30
30
|
class TruncatedServer < Process::Daemon
|
31
31
|
SERVER_PORTS = [[:udp, '127.0.0.1', 5320], [:tcp, '127.0.0.1', 5320]]
|
32
32
|
|
33
|
-
@@base_directory = File.dirname(__FILE__)
|
34
|
-
|
35
33
|
def working_directory
|
36
|
-
File.
|
34
|
+
File.expand_path("../tmp", __FILE__)
|
37
35
|
end
|
38
36
|
|
39
37
|
IN = Resolv::DNS::Resource::IN
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubydns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: process-daemon
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.5.
|
47
|
+
version: 0.5.3
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.5.
|
54
|
+
version: 0.5.3
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description: "\t\tRubyDNS is a high-performance DNS server which can be easily integrated
|
@@ -80,9 +80,9 @@ executables:
|
|
80
80
|
extensions: []
|
81
81
|
extra_rdoc_files: []
|
82
82
|
files:
|
83
|
-
- .gitignore
|
84
|
-
- .travis.yml
|
85
|
-
- .yardopts
|
83
|
+
- ".gitignore"
|
84
|
+
- ".travis.yml"
|
85
|
+
- ".yardopts"
|
86
86
|
- Gemfile
|
87
87
|
- README.md
|
88
88
|
- Rakefile
|
@@ -109,13 +109,18 @@ files:
|
|
109
109
|
- test/examples/test-dns-2.rb
|
110
110
|
- test/examples/wikipedia-dns.rb
|
111
111
|
- test/hosts.txt
|
112
|
+
- test/performance/benchmark.rb
|
113
|
+
- test/performance/bind9/generate-local.rb
|
114
|
+
- test/performance/bind9/local.zone
|
115
|
+
- test/performance/bind9/named.conf
|
116
|
+
- test/performance/million.rb
|
112
117
|
- test/test_daemon.rb
|
113
|
-
- test/test_domains.txt
|
114
118
|
- test/test_message.rb
|
115
119
|
- test/test_passthrough.rb
|
116
120
|
- test/test_resolver.rb
|
117
121
|
- test/test_resolver_performance.rb
|
118
122
|
- test/test_rules.rb
|
123
|
+
- test/test_server_performance.rb
|
119
124
|
- test/test_slow_server.rb
|
120
125
|
- test/test_system.rb
|
121
126
|
- test/test_truncation.rb
|
@@ -129,17 +134,17 @@ require_paths:
|
|
129
134
|
- lib
|
130
135
|
required_ruby_version: !ruby/object:Gem::Requirement
|
131
136
|
requirements:
|
132
|
-
- -
|
137
|
+
- - ">="
|
133
138
|
- !ruby/object:Gem::Version
|
134
139
|
version: 1.9.3
|
135
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
141
|
requirements:
|
137
|
-
- -
|
142
|
+
- - ">="
|
138
143
|
- !ruby/object:Gem::Version
|
139
144
|
version: '0'
|
140
145
|
requirements: []
|
141
146
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.2.2
|
143
148
|
signing_key:
|
144
149
|
specification_version: 4
|
145
150
|
summary: An easy to use DNS server and resolver for Ruby.
|
@@ -152,13 +157,18 @@ test_files:
|
|
152
157
|
- test/examples/test-dns-2.rb
|
153
158
|
- test/examples/wikipedia-dns.rb
|
154
159
|
- test/hosts.txt
|
160
|
+
- test/performance/benchmark.rb
|
161
|
+
- test/performance/bind9/generate-local.rb
|
162
|
+
- test/performance/bind9/local.zone
|
163
|
+
- test/performance/bind9/named.conf
|
164
|
+
- test/performance/million.rb
|
155
165
|
- test/test_daemon.rb
|
156
|
-
- test/test_domains.txt
|
157
166
|
- test/test_message.rb
|
158
167
|
- test/test_passthrough.rb
|
159
168
|
- test/test_resolver.rb
|
160
169
|
- test/test_resolver_performance.rb
|
161
170
|
- test/test_rules.rb
|
171
|
+
- test/test_server_performance.rb
|
162
172
|
- test/test_slow_server.rb
|
163
173
|
- test/test_system.rb
|
164
174
|
- test/test_truncation.rb
|
data/test/test_domains.txt
DELETED
@@ -1,185 +0,0 @@
|
|
1
|
-
0.channel18.facebook.com
|
2
|
-
2leep.com
|
3
|
-
EVIntl-ocsp.verisign.com
|
4
|
-
EVSecure-ocsp.verisign.com
|
5
|
-
a.tribalfusion.com
|
6
|
-
a1059.g.akamai.net
|
7
|
-
a126.g.akamai.net
|
8
|
-
a1338.g.akamai.net
|
9
|
-
a199.gi3.akamai.net
|
10
|
-
a248.e.akamai.net
|
11
|
-
a696.g.akamai.net
|
12
|
-
a803.g.akamai.net
|
13
|
-
ad.doubleclick.net
|
14
|
-
ad.yieldmanager.com
|
15
|
-
ad1.netshelter.net
|
16
|
-
ad2.netshelter.net
|
17
|
-
address.yahoo.com
|
18
|
-
ads.adbrite.com
|
19
|
-
ads.trademe.co.nz
|
20
|
-
ads.tw.adsonar.com
|
21
|
-
ads1.perfadbrite.com.akadns.net
|
22
|
-
adsfac.us
|
23
|
-
ajax.googleapis.com
|
24
|
-
aleccolocco.blogspot.com
|
25
|
-
anycast-asia.quantserve.com.akadns.net
|
26
|
-
apps.facebook.com
|
27
|
-
appspot.l.google.com
|
28
|
-
ayako.oriontransfer.org
|
29
|
-
b.scorecardresearch.com
|
30
|
-
b1.adbrite.com
|
31
|
-
backend.deviantart.com
|
32
|
-
blog.nominet.org.uk
|
33
|
-
c.fsdn.com
|
34
|
-
cache-01.cleanprint.net
|
35
|
-
clients.l.google.com
|
36
|
-
clients1.google.com
|
37
|
-
cms.myspacecdn.com
|
38
|
-
configuration.apple.com
|
39
|
-
d.yimg.com
|
40
|
-
d1.openx.org
|
41
|
-
data.coremetrics.com
|
42
|
-
developer.apple.com
|
43
|
-
devimages.apple.com
|
44
|
-
dg.specificclick.net
|
45
|
-
digg.analytics.live.com
|
46
|
-
digg.com
|
47
|
-
e.vistaprint.com
|
48
|
-
englishrussia.com
|
49
|
-
feeds.digg.com
|
50
|
-
feeds.dzone.com
|
51
|
-
feeds.feedburner.com
|
52
|
-
feeds2.feedburner.com
|
53
|
-
filetransfer.msg.yahoo.com
|
54
|
-
filterforge.com
|
55
|
-
financier.oriontransfer.co.nz
|
56
|
-
gems.oriontransfer.org
|
57
|
-
ghs.l.google.com
|
58
|
-
googleads.g.doubleclick.net
|
59
|
-
googlemail-pop.l.google.com
|
60
|
-
groups.google.com
|
61
|
-
hat.bmanpn.com
|
62
|
-
hogbaysoftware.appspot.com
|
63
|
-
i.creativecommons.org
|
64
|
-
id.google.com
|
65
|
-
images.apple.com
|
66
|
-
images.macrumors.com
|
67
|
-
images.trademe.co.nz
|
68
|
-
img.slate.com
|
69
|
-
js.adsonar.com
|
70
|
-
js.revsci.net
|
71
|
-
kotaku.com
|
72
|
-
l.sharethis.com
|
73
|
-
l.yimg.com
|
74
|
-
lambda-the-ultimate.org
|
75
|
-
login.facebook.com
|
76
|
-
login.live.com
|
77
|
-
login.messaging.aol.com
|
78
|
-
login.oscar.aol.com
|
79
|
-
login.yahoo.com
|
80
|
-
lus.sharethis.com.akadns.net
|
81
|
-
m1.2mdn.net
|
82
|
-
mac.com
|
83
|
-
mail.google.com
|
84
|
-
mail.mac.com
|
85
|
-
mail.me.com
|
86
|
-
managingosx.wordpress.com
|
87
|
-
maps.google.com
|
88
|
-
marketing.vistaprint.com
|
89
|
-
media.digg.com
|
90
|
-
media.washingtonpost.com
|
91
|
-
messenger.hotmail.com
|
92
|
-
metrics.washingtonpost.com
|
93
|
-
metro-amz-lb1-1649407802.us-east-1.elb.amazonaws.com
|
94
|
-
mm.chitika.net
|
95
|
-
news.ycombinator.com
|
96
|
-
o.aolcdn.com
|
97
|
-
o.sa.aol.com
|
98
|
-
ocsp.verisign.net
|
99
|
-
odb.outbrain.com
|
100
|
-
omega.contacts.msn.com
|
101
|
-
omega.contacts.msn.com.nsatc.net
|
102
|
-
pagead2.googlesyndication.com
|
103
|
-
partner.googleadservices.com
|
104
|
-
partnerad.l.google.com
|
105
|
-
pixel.quantserve.com
|
106
|
-
pop.googlemail.com
|
107
|
-
ps.friendconnect.gmodules.com
|
108
|
-
publish.iwork.com
|
109
|
-
r1rk9np7bpcsfoeekl0khkd2juj27q3o.friendconnect.gmodules.com
|
110
|
-
rad.msn.com
|
111
|
-
regretfulmorning.com
|
112
|
-
resources.infolinks.com
|
113
|
-
rss.lists.apple.com
|
114
|
-
rss.slashdot.org
|
115
|
-
s24.sitemeter.com
|
116
|
-
s26.sitemeter.com
|
117
|
-
s7.addthis.com
|
118
|
-
safebrowsing-cache.google.com
|
119
|
-
safebrowsing.clients.google.com
|
120
|
-
scripts.chitika.net
|
121
|
-
scsa.msg.yahoo.com
|
122
|
-
seal.verisign.com
|
123
|
-
sec.westpac.co.nz
|
124
|
-
secure-nz.imrworldwide.com
|
125
|
-
shared-hosted-1561031087.us-east-1.elb.amazonaws.com
|
126
|
-
slashdot.org
|
127
|
-
slate.cleanprint.net
|
128
|
-
spacemusic.libsyn.com
|
129
|
-
ssl-google-analytics.l.google.com
|
130
|
-
ssl-hints.netflame.cc
|
131
|
-
ssl.google-analytics.com
|
132
|
-
static.ak.connect.facebook.com
|
133
|
-
static.ak.facebook.com
|
134
|
-
static.getclicky.com
|
135
|
-
stats.wordpress.com
|
136
|
-
syndication.thedailywtf.com
|
137
|
-
tags.expo9.exponential.com
|
138
|
-
talk.google.com
|
139
|
-
time.asia.apple.com
|
140
|
-
tools.google.com
|
141
|
-
votes.buzz.yahoo.com
|
142
|
-
widgets.outbrain.com
|
143
|
-
wiki.oriontransfer.org
|
144
|
-
www-google-analytics.l.google.com
|
145
|
-
www.acquire.co.nz
|
146
|
-
www.apple.com
|
147
|
-
www.apple.com.akadns.net
|
148
|
-
www.applejoe.com
|
149
|
-
www.apples.com
|
150
|
-
www.ascent.co.nz
|
151
|
-
www.bing.com
|
152
|
-
www.blogcdn.com
|
153
|
-
www.blogger.com
|
154
|
-
www.blogsmithmedia.com
|
155
|
-
www.co2stats.com
|
156
|
-
www.demonoid.com
|
157
|
-
www.digg.com
|
158
|
-
www.drobostore.com
|
159
|
-
www.dzone.com
|
160
|
-
www.em6live.co.nz
|
161
|
-
www.engadget.com
|
162
|
-
www.facebook.com
|
163
|
-
www.filterforge.com
|
164
|
-
www.friendconnect.gmodules.com
|
165
|
-
www.geekologie.com
|
166
|
-
www.google-analytics.com
|
167
|
-
www.google.com
|
168
|
-
www.idevgames.com
|
169
|
-
www.iwatchstuff.com
|
170
|
-
www.l.google.com
|
171
|
-
www.linuxquestions.org
|
172
|
-
www.lucidsystems.org
|
173
|
-
www.macrumors.com
|
174
|
-
www.michael.net.nz
|
175
|
-
www.potionfactory.com
|
176
|
-
www.recipepuppy.com
|
177
|
-
www.slashdot.org
|
178
|
-
www.slate.com
|
179
|
-
www.sqlite.org
|
180
|
-
www.trademe.co.nz
|
181
|
-
www.vistaprint.com
|
182
|
-
www.washingtonpost.com
|
183
|
-
www.westpac.co.nz
|
184
|
-
www4.l.google.com
|
185
|
-
z.digg.com
|