FluxTuna 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{FluxTuna}
8
- s.version = "0.0.4"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["David Love"]
@@ -27,9 +27,30 @@ Gem::Specification.new do |s|
27
27
  "README.rdoc",
28
28
  "Rakefile",
29
29
  "VERSION",
30
- "lib/FluxTuna.rb",
31
- "test/helper.rb",
32
- "test/test_FluxTuna.rb"
30
+ "lib/bind/bind.rb",
31
+ "lib/core/core.rb",
32
+ "lib/core/name_trie.rb",
33
+ "lib/flux_tuna.rb",
34
+ "lib/mutate/mutate.rb",
35
+ "lib/shatter/shatter.rb",
36
+ "lib/witness/abstract_witness.rb",
37
+ "lib/witness/dir_file_witness.rb",
38
+ "lib/witness/witness.rb",
39
+ "test/data/bayeux/Labs/Lab1/L1_Internet.byx",
40
+ "test/data/bayeux/Labs/Lab1/L1_Internet.yaml",
41
+ "test/data/bayeux/Labs/Lab2/L2_StaticR.byx",
42
+ "test/data/bayeux/Labs/Lab2/L2_StaticR.yaml",
43
+ "test/data/bayeux/Labs/Lab3/L3_DNS.byx",
44
+ "test/data/bayeux/Labs/Lab3/L3_DNS.yaml",
45
+ "test/data/bayeux/Labs/Labs.byx",
46
+ "test/data/bayeux/Labs/Labs.yaml",
47
+ "test/data/bayeux/Resources/Resources.byx",
48
+ "test/data/bayeux/Resources/Resources.yaml",
49
+ "test/data/bayeux/Welcome.byx",
50
+ "test/data/bayeux/Welcome.yaml",
51
+ "test/data/data_test.rb",
52
+ "test/dir_walk/create_witness_test.rb",
53
+ "test/init_test.rb"
33
54
  ]
34
55
  s.homepage = %q{http://github.com/dlove24/FluxTuna}
35
56
  s.licenses = ["ISC"]
data/HISTORY CHANGED
@@ -1,5 +1,20 @@
1
1
  RELEASE HISTORY
2
2
 
3
+ v0.0.4 / 2011-05-10
4
+
5
+ Regenerate gemspec for version 0.0.4 (David Love david@homeunix.org.uk)
6
+
7
+ Changes:
8
+
9
+ * 1 Patch Enhancements
10
+
11
+ * Added the UUIDTools library for generating random GUID's
12
+
13
+ * 1 General Enhancements
14
+
15
+ * Regenerate gemspec for version 0.0.3
16
+
17
+
3
18
  v0.0.3 / 2011-05-10
4
19
 
5
20
  Regenerate gemspec for version 0.0.3 (David Love david@homeunix.org.uk)
@@ -24,7 +39,8 @@ Current Development (David Love)
24
39
 
25
40
  Changes:
26
41
 
27
- * 1 General Enhancements
42
+ * 2 General Enhancements
28
43
 
29
- * Regenerate gemspec for version 0.0.3
44
+ * Regenerate gemspec for version 0.0.4
45
+ * Version bump to 0.0.4
30
46
 
data/Rakefile CHANGED
@@ -59,8 +59,16 @@ desc "Run all our tests"
59
59
  task :test do
60
60
  Rake::TestTask.new do |t|
61
61
  t.libs << "test"
62
- t.pattern = "test/**/*_test.rb"
63
62
  t.verbose = false
63
+
64
+ # List of files. We need to specifiy these explicity so they
65
+ # are loaded in the correct order: init, data, then the tests
66
+ # themselves
67
+ t.test_files = ["test/init_test.rb",
68
+
69
+ "test/data/data_test.rb",
70
+
71
+ "test/dir_walk/create_witness_test.rb"]
64
72
  end
65
73
  end
66
74
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -0,0 +1,26 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ #require "YAML"
19
+
20
+ #
21
+ # The {FluxTuna::Bind} module defines the objects turning a named Trie
22
+ # into a reference tree.
23
+ #
24
+ module FluxTuna::Bind
25
+
26
+ end
@@ -0,0 +1,24 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ #
19
+ # Core module containing routines used by all classes
20
+ module FluxTuna::Core
21
+
22
+ require "core/name_trie"
23
+
24
+ end
@@ -0,0 +1,26 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ module FluxTuna::Core
17
+
18
+ # Add the Trie data structure
19
+ require "algorithms"
20
+
21
+ # Create a trie, used to hold the basic namespace
22
+ class NameTrie < Containers::Trie
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,39 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ #
19
+ # The {FluxTuna} module defines the namespace for the {FluxTuna} routines
20
+ # and modules. Not very much actually lives in the top-level module: most
21
+ # of the interesting bits are grouped into sub-modules which can be used
22
+ # as appropriate
23
+ module FluxTuna
24
+
25
+ # Load the GUID library (used for all representation names)
26
+ require "uuidtools"
27
+
28
+ # Load the core classes
29
+ require "core/core"
30
+
31
+ # Load the abstract base classes
32
+ require "witness/witness"
33
+
34
+ # Load the main sub-modules
35
+ require "shatter/shatter"
36
+ require "mutate/mutate"
37
+ require "bind/bind"
38
+
39
+ end
@@ -0,0 +1,26 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ #require "YAML"
19
+
20
+ #
21
+ # The {FluxTuna::Mutate} module defines mutators for the elements of
22
+ # named Tries.
23
+ #
24
+ module FluxTuna::Mutate
25
+
26
+ end
@@ -0,0 +1,27 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ #
19
+ # The {FluxTuna::Shatter} module defines the objects creating Tries of
20
+ # identified objects. These can be later mutated by {FluxTune::Mutate},
21
+ # or turned into representation trees via {FluxTuna::Bind} methods.
22
+ #
23
+ module FluxTuna::Shatter
24
+
25
+ # Include the standard shatter
26
+
27
+ end
@@ -0,0 +1,74 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ module FluxTuna::Witness
19
+
20
+ #
21
+ # @abstract Defines the core {Witness} class
22
+ #
23
+ class AbstractWitness
24
+
25
+ # Default constructor. The names of the shatter, mutate and bind class
26
+ # to use for this {Witness} must be passed in. These will be called in
27
+ # place of the the methods of this class when appropriate.
28
+ def initialize(shatter, mutate, bind)
29
+ shatter_string = "Witness::Shatter::" + shatter.to_s
30
+ @shatter = shatter_string.to_sym
31
+
32
+ mutate_string = "Witness::Mutate::" + shatter.to_s
33
+ @mutate = mutate_string.to_sym
34
+
35
+ bind_string = "Witness::Bind::" + shatter.to_s
36
+ @bind = bind_string.to_sym
37
+ end
38
+
39
+ # Calls the named shatter class to break the original structure
40
+ def shatter
41
+ call_shatter {}
42
+ end
43
+
44
+ # Calls the named bind class to mutate the representation
45
+ def mutate
46
+ call_mutate {}
47
+ end
48
+
49
+ # Calls the named bind class to create the representation tree
50
+ def bind
51
+ call_bind {}
52
+ end
53
+
54
+ # Calls the named shatter class to break the original structure
55
+ def call_shatter(&block)
56
+ Object.const_get(@shatter).send(:shatter)
57
+ end
58
+
59
+ # Calls the named bind class to mutate the representation
60
+ def call_mutate(&block)
61
+ Object.const_get(@mutate).send(:mutate)
62
+ end
63
+
64
+ # Calls the named bind class to create the representation tree
65
+ def call_bind(&block)
66
+ Object.const_get(@bind).send(:bind)
67
+ end
68
+
69
+ # Proxy calls are only used by the derived classes
70
+ private :call_shatter, :call_mutate, :call_bind
71
+
72
+ end
73
+
74
+ end
@@ -0,0 +1,54 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ module FluxTuna::Witness
19
+
20
+ # Create a Witness object for the specified directory
21
+ class DirFileWitness < FluxTuna::Witness::AbstractWitness
22
+
23
+ # Default constructor
24
+ def initialize
25
+ super(:Dir, :Null, :Tree)
26
+
27
+ @content = FluxTuna::Core::NameTrie.new
28
+ end
29
+
30
+ # Run the shatter function, taking
31
+ # +path+ is the {File.glob} shell glob for the path and pattern to match
32
+ # when looking for files
33
+ def shatter(path)
34
+
35
+ # Walk the path,
36
+ Dir.glob(path){|file_name|
37
+
38
+ # Ignore directories
39
+ unless File.directory?(file_name) then
40
+
41
+ # Ignore the special files as well
42
+ unless file_name == "." or file_name == ".." then
43
+
44
+ # Create a GUID, then add this filename as the descriptor
45
+ @content[UUIDTools::UUID.random_create] = file_name
46
+ end
47
+ end
48
+
49
+ }
50
+
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,29 @@
1
+ # Copyright (c) 2010-2011 David Love
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for
4
+ # any purpose with or without fee is hereby granted, provided that the
5
+ # above copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+ #
15
+
16
+ # @author David Love
17
+
18
+ module FluxTuna::Witness
19
+
20
+ # Include the core module
21
+ include FluxTuna::Core
22
+
23
+ # Abstract base class
24
+ require "witness/abstract_witness"
25
+
26
+ # Directory walker
27
+ require "witness/dir_file_witness"
28
+
29
+ end
@@ -0,0 +1,536 @@
1
+ [h1 Connecting to the Internet]
2
+
3
+ [h2 Aim]
4
+
5
+ During this lab you will create a small network, linking a Windows client to
6
+ the Internet via an intermediate router. You will start with a very simple
7
+ set-up, and then gradually add and configure the intermediate router to
8
+ produce the final configuration.
9
+
10
+ For the purpose of this lab, you only need to set-up the [ac TCPIP] network
11
+ stack: we will do most of our network testing using [tt ping] to start with.
12
+ Once you have the [ac TCPIP] network working, try enabling other services and
13
+ see what happens.
14
+
15
+ [note]
16
+ This lab may seem arcane and complex at first sight, but is
17
+ actually very simple. The hard part is learning to work through the
18
+ configuration of each client, router and patch panel in a methodical
19
+ manner. Once you know how to do this, you should be able to replicate
20
+ your efforts in a few minutes. It will probably take you longer than
21
+ that on the first few tries, however...
22
+ [end]
23
+
24
+ [h2 Objectives]
25
+
26
+ [ul]
27
+
28
+ [item You will be able to configure the basic [ac TCPIP] parameters
29
+ on a Windows client]
30
+
31
+ [item You will be able to use [man:8 ifconfig] to set-up basic
32
+ [ac TCPIP] parameters on a Unix system]
33
+
34
+ [item You will be able to identify how a router may be used to
35
+ join physically unrelated networks.]
36
+
37
+ [item You will be able to calculate maximum and minimum hosts,
38
+ sub-net number and network address given an arbitrary [ac IPv4]
39
+ address and subnet mask.]
40
+
41
+ [item You will be able to configure [ac TCPIP] in a routed
42
+ environment, and identify the differences between a Routed and a
43
+ Switched network.]
44
+
45
+ [item You will be able to identify the need for an automatically
46
+ configured network routers]
47
+
48
+ [end]
49
+
50
+ [h2 Pre-Requisites]
51
+
52
+ [ul]
53
+
54
+ [item You will need a copy of the Windows XP Service Pack 3
55
+ client, held in on the lab computers.]
56
+
57
+ [item You will need a copy of the [tt pfSense Router]
58
+ client, available from the module site. These notes assume you
59
+ will be using image version [tt 01]. Ask the tutor for
60
+ details if you are unsure.]
61
+
62
+ [item You should be familiar with running an operating system
63
+ image under VMWare in the labs. If you haven't set-up a client
64
+ image before, have a look on the module lab page for a tutorial
65
+ on VMWare which will take you through the steps.]
66
+
67
+ [item You should be aware of how to set-up a basic Ethernet
68
+ network. We will not be using anything fancy, but should should
69
+ be comfortable with the patch panel and basic switch set-up.]
70
+
71
+ [item Finally it would be a good ideal to have some familiarity
72
+ with the basics of [ac IPv4] addressing and sub-netting theory.]
73
+
74
+ [end]
75
+
76
+ [h2 Equipment]
77
+
78
+ [ol]
79
+
80
+ [item 1 $\times$ switch on the rack system]
81
+ [item 2 $\times$ computers capable of running VMWare 6.5]
82
+ [item 4 $\times$ UTP Cat5 patch cables]
83
+
84
+ [end]
85
+
86
+ [h2 Recommended Reading]
87
+
88
+ Most of the background documentation is available on
89
+ the module site, under the notes for [e Lab 1].
90
+
91
+ If you have not used a Unix system before, have a look
92
+ at the [e Brief Guide to Unix] available on the module Wiki.
93
+ You will also find links to the Unix manual ([tt man]) pages
94
+ of the commands used in this lab.
95
+
96
+ Finally, if you need a reminder of how [ac IPv4]
97
+ addressing works, read the [e Short Note on IP Addressing]
98
+ available on the module web-site.
99
+
100
+ [h2 Connecting a Client Directly to the Internet]
101
+
102
+ The first host we will set-up will be a single Windows XP client, connected
103
+ directly to the Internet via an [ac ADSL] router. For many of you, this set-up
104
+ will be familiar: once you know how the lab works, you can move onto the
105
+ subsequent problems.
106
+
107
+ You can find a copy of the Windows XP client on the lab machines system disk,
108
+ in the folder [tt C:\VMWare\Virtual Machines\Windows XP Pro SP3]. Copy the
109
+ entire folder to [tt D:\], and open the folder. Click on the file [tt Windows
110
+ XP Pro SP3.vmx] inside the folder [tt D:\Windows XP Pro SP3]. VMWare should
111
+ now start, opening the [tt Windows XP Pro SP3] image.
112
+
113
+ [note]
114
+ [e Before] you start the image, check the Ethernet card in VMWare is set to
115
+ 'Bridged' mode. If necessary, change the network type of the virtual interface
116
+ card to 'Bridged' mode[fn We will be using real hardware in this lab, so you
117
+ need to tell VMWare to direct everything to the underlying network hardware
118
+ used by the host. We will later look at situations where we use a mix of
119
+ virtual and real hardware.].
120
+ [end]
121
+
122
+ When you are ready, click the green [e Run] button . Alternatively, select [tt
123
+ VM] $\rightarrow$ [tt Power] $\rightarrow$ [tt Power On] from the menu bar.
124
+ The virtual machine should now begin to start loading.
125
+
126
+ VMWare may ask you if you have 'moved or copied' the virtual machine. Select
127
+ 'copied' and VMWare will regenerate the MAC address[fn VMWare generates the
128
+ [sc mac] addresses for the virtual machines when the image is first created.
129
+ Selecting [e copied] forces VMWare to regenerate the [sc mac] addresses,
130
+ allowing you to have multiple images attached to the same network. If you
131
+ select [e move], VMWare would use the original [sc mac] address, and everyone
132
+ would end up with the same one. At the very least this will cause confusion,
133
+ but it would normally prevent the networking working at all.].
134
+
135
+ While the virtual Windows image boots, cable your host to the [ac ADSL] line
136
+ using a switch. Each group should use their own switch to start with, in order
137
+ to reduce potential problems. Once your group has got everything up and
138
+ running, you should be able to combine machines with other groups to grow the
139
+ sub-net.
140
+
141
+ For the moment, though, turn you attention the small patch panel on the bench in front of you and the larger patch panels at the back of the lab.
142
+
143
+ Before you move to the patch panel at the back of the room, note the number
144
+ underneath the [s red] faceplate (which should have a patch cable in it
145
+ leading to the back of your computer). The number should be between [tt 01]
146
+ and [tt 30]. Make a note of the number, and move to the back of the lab.
147
+
148
+ At the back of the lab inside one of the middle cabinets, you should see a
149
+ small black patch panel below a large green one (it will have 24 ports on it).
150
+ Ports 1--5 of the [s black] patch panel will have an [ac ADSL] router
151
+ behind them, on the [tt 192.168.7.0/24] subnet. Select a free port (other
152
+ groups will be using other [ac ADSL] routers), and patch from the selected
153
+ port to a [e free] switch. You can use the same switch as a another group if
154
+ your really want, but you can avoid someone else's problems by reserving a
155
+ switch for your group. [e Make a note] of your chosen port number on the
156
+ [s black] patch panel --- you will need it later to work out the gateway
157
+ address to use for your clients. Use [ref table:PortNum] to find the
158
+ gateway address from the number of your [s black] patch-panel port.
159
+
160
+ While you are at the back of the lab, patch from your chosen switch to the
161
+ port on the [s red] patch panel where your lab computer connects to. Your
162
+ port will have the same number as the red faceplate on your bench: [e i.e.]
163
+ the number you made a note of earlier. For example, if your bench faceplate
164
+ has the number [tt 12] below it, patch from port [tt 12] on the red patch
165
+ panel to your chosen switch.
166
+
167
+ [table:PortNum]
168
+ Port Number | Gateway Address
169
+ ------------------------------
170
+ [tt 1] | [tt 192.168.7.1/24]
171
+ [tt 2] | [tt 192.168.7.2/24]
172
+ [tt 3] | [tt 192.168.7.3/24]
173
+ [tt 4] | [tt 192.168.7.4/24]
174
+ [tt 5] | [tt 192.168.7.5/24]
175
+ [tt 6] | [tt 192.168.7.6/24]
176
+ [caption Mapping [ac ADSL] Patch-Panel Ports to Gateway Addresses]
177
+ [end]
178
+
179
+ [note]
180
+ The [ac ADSL] routers on Ports [tt 1], [tt 2] and [tt
181
+ 4] will [e require] a crossover cable to work correctly. The [ac ADSL] routers
182
+ on Ports [tt 3], [tt 5] and [tt 6] can be patched using either a
183
+ straight-through or a crossover cable[fn Not all our [ac ADSL] routers are
184
+ identical, and those living on Ports [tt 1], [tt 2] and [tt 4] do not have [e
185
+ auto-sensing] Ethernet ports. The ports on the other [ac ADSL] routers can
186
+ detect where the [sc tx] and [sc rx] pairs are in the patch cable, and
187
+ configure themselves accordingly.
188
+ [end]
189
+
190
+ [question]
191
+ [item For routers without auto-sensing Ethernet ports, why do we have to use a cross-over patch cable to connect the router to the switch?.]
192
+ [end]
193
+
194
+ [medskip]
195
+
196
+ When everything is patched, your virtual Windows machine should be connected
197
+ to an ASDL router. All you need to do now is to configure your Windows
198
+ machine, so that you can connect to the Internet via the [ac ADSL] router.
199
+
200
+ [medskip]
201
+
202
+ Inside the Windows client image, click [tt Control Panel] $\rightarrow$ [tt
203
+ Network and Internet Connections] $\rightarrow$ [tt Network Connections] to
204
+ open the list of adapters. You should see the VMWare bridged connection in
205
+ here, and it should be listed as '[tt Connected]'
206
+
207
+ Right-click on the icon for the VMWare adapter, and then click [tt Properties]
208
+ from the pop-up menu. Windows should bring up the list of protocols and
209
+ services for this adapter.
210
+
211
+ Find the [tt Internet Protocol (TCP/IP)] service, and then click [tt
212
+ Properties] to alter the [ac IPv4] parameters for the VMWare adapter. You will
213
+ probably find the boxes in the dialogue box greyed out, as Windows will try to
214
+ get everything from a [ac DHCP] server.
215
+
216
+ Tell Windows you want to enter the [ac IPv4] address and sub-net mask
217
+ manually, and enter an [ac IPv4] address in the form [tt 192.168.7.1x] where
218
+ [tt x] is your computer number. For instance if you are connect to the bench
219
+ patch panel [tt 15], your [ac IPv4] address will be [tt 192.168.7.115]. Your
220
+ sub-net mask will be the same as that for your [ac ADSL] router. Finally you
221
+ will need to put in the details for your [ac ADSL] router for your default
222
+ gateway. You will also want to put the [ac IPv4] address of the [ac ADSL]
223
+ router in the box marked [tt Preferred [ac DNS] server]. Leave the [tt
224
+ Alternate [ac DNS] server] box blank.
225
+
226
+ Close the sequence of dialogue boxes, and Windows should reconfigure the
227
+ adapter.
228
+
229
+ [medskip]
230
+
231
+ Once the VMWare adapter has been configured, you will need to make sure
232
+ everything is working. Open a command shell, by going to [tt Start Menu]
233
+ $\rightarrow$ [tt Run]. Type [tt cmd], and press [tt Enter] and you should see
234
+ a command prompt.
235
+
236
+ Now run the a basic sequence of service tests as follows
237
+
238
+ [command]
239
+ ping www.myertor.com
240
+ [end]
241
+ [command]
242
+ ping 81.187.233.190
243
+ [end]
244
+ [command]
245
+ tracert www.myertor.com
246
+ [end]
247
+ [command]
248
+ tracert 81.187.233.190
249
+ [end]
250
+
251
+ [h3 Questions]
252
+
253
+ [ol]
254
+ [item What is the output of the [tt ping] commands? Is this what you would expect? Why?
255
+ [item What is the output of [tt tracert] commands? Is this what you would expect? Why?
256
+ [end]
257
+
258
+ [h2 Setting up the [ac WAN] Interface of the Sub-net Border Router]
259
+
260
+ Now we have a known working connection to the Internet, we will reconfigure
261
+ the Windows client to connect to an intermediate border router. The Windows
262
+ client will connect to sub-net [tt 172.20.56.0/27], using an intermediate
263
+ border router to regain the connection to the Internet.
264
+
265
+ Our intermediate router will be running [tt pfSense], and you can download a
266
+ copy of the [tt pfSense Router 01] image from the lab page on the module
267
+ web-site.
268
+
269
+ [medskip]
270
+
271
+ To set-up the [tt pfSense Router] image, download a copy of the [tt pfSense
272
+ Router 01] image from the module Wiki. By default Internet Explorer will try
273
+ to save the image on your [tt F:] --- and will probably fail. Instead,
274
+ right-click on the link shown in the module web-page, and click [tt Save As]
275
+ to put the file on [tt D:\]. When the download finishes, open [tt D:\] and
276
+ right-click on the file '[tt pfSense\_Router\_01.7z]' and select [tt 7-zip]
277
+ $\rightarrow$ [tt Extract Here] to open the archive. When 7-zip finishes, you
278
+ should see a folder called '[tt pfSense Router]' in [tt D:\]. Open the [tt
279
+ pfSense Router] folder, and double-click on the file '[tt pfSense Router.vmx]'
280
+ to open VMWare.
281
+
282
+ Your [tt pfSense Router] will have two virtual Ethernet cards. The first card
283
+ [e must] be set to 'Bridged' mode, and will be used to connect the border
284
+ router to the [ac ADSL] router. In [tt pfSense], the virtual Ethernet
285
+ interface will be called the [tt WAN] interface.
286
+
287
+ Your second virtual Ethernet interface [e must] be set to 'Host-only' mode.
288
+ Later we will connect the Windows client image to this interface. Under [tt
289
+ pfSense] this interface will be known as the [tt LAN] image.
290
+
291
+ Make sure the [tt pfSense Router] interfaces are set-up correctly, and start
292
+ the image using the [e Run] icon from the toolbar (or on the image summary
293
+ screen). Again, if asked whether the image has been 'Moved or copied', select
294
+ 'copied' and let the image continue to boot.
295
+
296
+ [medskip]
297
+
298
+ [figure:pfBoot]
299
+ [image pfSense_menu]
300
+ [caption The [tt pfSense] menu]
301
+ [end]
302
+
303
+ When the image has finished booting, you should see a text menu with a list of
304
+ options as shown in [ref pfBoot]. Some [tt pfSense] options can be
305
+ configured by this text-based interface: most of the options, though, are
306
+ configured by a web-based interface.
307
+
308
+ We will look at the web-based interface very shortly. Usually when configuring
309
+ [tt pfSense] you set-up the router on the [ac LAN] first, and then use the
310
+ web-based interface to configure the [ac WAN] interface. Hence option [tt 2)]
311
+ on the text-menu to set the [ac LAN] [ac IPv4] address: [tt pfSense] assumes
312
+ that once the [ac LAN] [ac IPv4] is set, everything else can be done through
313
+ the web interface.
314
+
315
+ However, in this lab we are effectively working 'backwards' --- moving from
316
+ the Internet connection back towards the client. This allows us to check the
317
+ connection at each stage, but means we have to do a bit more work to set-up
318
+ [tt pfSense].
319
+
320
+ [medskip]
321
+
322
+ [figure:pfShell]
323
+ pfSense_shell]
324
+ [caption Calling Up the Shell in [tt pfSense]]
325
+ [end]
326
+
327
+ Our first task is therefore to set-up the [tt WAN] interface, making sure our
328
+ sub-net router can talk to the [ac ADSL] router. We will do this using the [tt
329
+ pfSense] command line, and the [man:8 ifconfig] command. Type [tt 8] and press
330
+ [tt Return] to select the [tt 8) Shell] option. This will open a command line,
331
+ as shown in [ref pfShell]
332
+
333
+ [medskip]
334
+
335
+ You can read about the [man:8 ifconfig] command from the links on the module
336
+ Wiki. Use [man:8 ifconfig] command to [e temporarily][fn All Unix systems use
337
+ the 'interface configuration' command [man:8 ifconfig] to perform [e
338
+ temporary] configuration of the network interfaces. Some, e.g. Silicon
339
+ Graphics Irix, use [man:8 ifconfig] to perform permanent alterations as well.
340
+ Under [tt pfSense] (FreeBSD) you will have to edit the the [tt /etc/rc.d] file
341
+ if you want your configurations to survive a reboot of the image. Have a look
342
+ at the [e FreeBSD Handbook] for more details.] set the [ac IPv4] address of
343
+ the [tt em0] interface. The basic syntax of the [man:8 ifconfig] is
344
+
345
+ [command]
346
+ ifconfig <interface> inet <address> netmask <mask>
347
+ [end]
348
+
349
+ You might want to type
350
+
351
+ [command]
352
+ ifconfig
353
+ [end]
354
+
355
+ and examine the output to get a feel for the command.
356
+
357
+ [medskip]
358
+
359
+ Our [tt WAN] interface is [tt em0][fn See the list of interfaces displayed in the login screen, or in [ref pfBoot]]. Thus the basic syntax will be
360
+
361
+ [command]
362
+ ifconfig em0 inet <address> netmask <mask>
363
+ [end]
364
+
365
+ Set the interface address using pattern [tt 192.168.n.1x], where [tt x] is the
366
+ number of your bench faceplate and [tt n] is the sub-net used by your [ac
367
+ ADSL] router. For instance, if your computer is connected to faceplate [tt 12]
368
+ on [tt Port 3], use the [ac IPv4] address [tt 192.168.7.112]. The sub-net mask
369
+ obviously remains as before. Use
370
+
371
+ [command]
372
+ ifconfig
373
+ [end]
374
+
375
+ and review the output to make sure everything is as you expect.
376
+
377
+ [medskip]
378
+
379
+ With the interface address set, try the basic service tests again
380
+
381
+ [command]
382
+ ping www.myertor.com
383
+ [end]
384
+
385
+ [command]
386
+ ping 81.187.233.190
387
+ [end]
388
+
389
+ [command]
390
+ traceroute www.myertor.com
391
+ [end]
392
+
393
+ [command]
394
+ traceroute 81.187.233.190
395
+ [end]
396
+
397
+ [h3 Questions]
398
+
399
+ [ol]
400
+ [item What is the output of the [tt ping] commands? Is this what you would expect? Why?
401
+ [item What is the output of [tt traceroute] commands? Is this what you would expect? Why?
402
+ [end]
403
+
404
+ [medskip]
405
+
406
+ Now try setting the default gateway of the border router to the address of the
407
+ [ac ADSL] modem. You will need to use the [man:8 route][fn See the lab notes
408
+ on the module Wiki for more details of the [man:8 route] command.] command to
409
+ tell [tt pfSense] where to send foreign packets to.
410
+
411
+ Although [man:8 route] can do many things to the routing table, for our purposes the basic command we need is
412
+
413
+ [command]
414
+ route add default <gateway\_address>
415
+ [end]
416
+
417
+ where [tt <gateway\_address>] is the address of the [ac ADSL] router. Set the
418
+ default gateway using the [man:8 route] command and try the basic service
419
+ tests again
420
+
421
+ [command]
422
+ ping www.myertor.com
423
+ [end]
424
+
425
+ [command]
426
+ ping 81.187.233.190
427
+ [end]
428
+
429
+ [command]
430
+ traceroute www.myertor.com
431
+ [end]
432
+
433
+ [command]
434
+ traceroute 81.187.233.190
435
+ [end]
436
+
437
+ [h3 Questions]
438
+
439
+ [ol]
440
+ [item What is the output of the [tt ping] commands this time? Is this what you would expect? Why?
441
+ [item What is the output of [tt traceroute] commands this time? Is this what you would expect? Why?
442
+ [end]
443
+
444
+ [h2 Setting up the [ac LAN] Interface of the Sub-net Border Router]
445
+
446
+ Once the [ac WAN] interface is set-up and known to be working, you will need
447
+ to set-up the [ac LAN] interface. Once both interfaces have been set-up, we
448
+ can connect the Windows client to the Internet via the newly configured border
449
+ router.
450
+
451
+ [medskip]
452
+
453
+ As we mentioned before, setting up the [ac LAN] interface in [tt pfSense] is
454
+ considerably easier. Setting the [ac LAN] interface by hand fits the 'natural'
455
+ way of setting-up [tt pfSense] in most environments.
456
+
457
+ If you are still on the [tt pfSense] command line from the previous task, type
458
+
459
+ [command]
460
+ exit
461
+ [end]
462
+
463
+ to return to the [tt pfSense] menu.
464
+
465
+ [note]
466
+ Do not reset the router to return to the [tt pfSense] menu]. If you reset the router your [ac WAN] configuration will be lost and you will have to re-configure the interface before you go any further][fn Remember we have only set-up the [ac WAN] interface temporarily. We need to use the Web interface (or edit a few configuration file) to make your changes permanent)].
467
+ [end]
468
+
469
+ When you can see the [tt pfSense] menu again, select option [tt 2)] to start
470
+ the configuration of the [ac LAN] interface. This should start a small
471
+ text-based wizard, allowing you to specify the interface address and sub-net
472
+ mask. When asked whether you can a [ac DHCP] server, select [tt no] or '[tt
473
+ n]'.
474
+
475
+ You don't have to use the interface wizard: now you know how to use the [man:8
476
+ ifconfig] command you can set-up the [tt em1] ([ac LAN]) interface as before.
477
+ If you want to set-up the interface this way, you will need to open a
478
+ command line shell as before.
479
+
480
+ Whichever way you choose to set-up the [ac LAN] interface, you will need to
481
+ use the same information. In both cases, set-up your [ac LAN] interface as the
482
+ [e lowest] use-able address on the [tt 172.20.56.30/27] network.
483
+
484
+ [questions]
485
+ [item What is the lowest use-able address on the [tt 172.20.56.30/27] network?
486
+ [item What is the sub-net mask of the [tt 172.20.56.30/27] network in dotted decimal form?
487
+ [item What is the broadcast address address of the [tt 172.20.56.30/27] network in dotted decimal form?
488
+ [end]
489
+
490
+ [h2 Connecting the Windows Client]
491
+
492
+ With both the [ac WAN] and [ac LAN] interfaces configured, you should now be
493
+ able to connect the Windows client to the [tt 172.20.56.30/27] sub-net. [e You
494
+ will need to change the virtual interface type from 'Bridged' to 'Host-Only'
495
+ before the client will connect properly]. Give the Windows client the highest
496
+ host (last use-able) address on the [tt 172.20.56.30/27] sub-net.
497
+
498
+ [h3 Questions]
499
+
500
+ [ol]
501
+ [item What is the last use-able address on the [tt 172.20.56.30/27] network?
502
+ [item Which [ac IPv4] address should you use as the default gateway on the [tt 172.20.56.30/27] sub-net, given the configuration already done for the previous task?
503
+ [end]
504
+
505
+ Set the default gateway on the Windows client. You can also tell Windows to
506
+ use the same address for the [ac DNS] resolver[fn Our router runs a [ac DNS]
507
+ forwarder, which should pick up the correct [ac DNS] resolver addresses from
508
+ the [ac ADSL] router.]. Try the basic service tests again
509
+
510
+ [command]
511
+ ping www.myertor.com
512
+ [end]
513
+
514
+ [command]
515
+ ping 81.187.233.190
516
+ [end]
517
+
518
+ [command]
519
+ traceroute www.myertor.com
520
+ [end]
521
+
522
+ [command]
523
+ traceroute 81.187.233.190
524
+ [end]
525
+
526
+ [h3 Questions]
527
+
528
+ [ol]
529
+ [item What is the output of the [tt ping] commands? Is this what you would expect? Why?]
530
+ [item What is the output of [tt traceroute] commands? Is this what you would expect? Why?]
531
+ [end]
532
+
533
+ As a final check, you should now be able to use the [tt pfSense] web interface
534
+ from the Windows client. Open Internet Explorer in Windows and type in the
535
+ address of the sub-net border router. The login name is [tt admin], and the
536
+ password is [tt gold].