rubydns 0.8.1 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|