-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathREADME.sgml
More file actions
1815 lines (1289 loc) · 65.6 KB
/
README.sgml
File metadata and controls
1815 lines (1289 loc) · 65.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version='1.0'?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<article>
<articleinfo>
<title>IPplan - IP address management and tracking</title>
<revhistory>
<revision><revnumber>4.81</revnumber><date>2007-01-23</date><authorinitials>re</authorinitials><revremark
/></revision>
<revision><revnumber>2.91</revnumber><date>2002-05-17</date><authorinitials>re</authorinitials><revremark
/></revision>
</revhistory>
<abstract>
<para>IPplan is a free (GPL), web based, multilingual, IP address
management and tracking tool written in
<ulink url="http://www.php.net">php 4</ulink>, simplifying the
administration of your IP address space. IPplan goes beyond IP
address management including DNS administration, configuration
file management, circuit management (customizable via templates)
and storing of hardware information (customizable via templates).
IPplan can handle a single network or cater for multiple networks
and customers with overlapping address space. See the
introduction section for more.</para>
</abstract>
</articleinfo>
<para><ulink url="http://sourceforge.net"/></para>
<sect1 id="intro">
<title>Introduction</title>
<para>IPplan is a web based, multilingual, IP address management
and tracking tool based on <ulink url="http://www.php.net">php
4</ulink>, simplifying the administration of your IP address space.
IPplan can handle a single network or cater for multiple networks
with overlapping address space.</para>
<para>
Current functionality includes
<itemizedlist>
<listitem>
<para>internationalization</para>
</listitem>
<listitem>
<para>importing network definitions from routing tables</para>
</listitem>
<listitem>
<para>importing definitions from TAB delimited files and
<ulink url="http://www.insecure.org">NMAP's</ulink> XML
format</para>
</listitem>
<listitem>
<para>multiple administrators with different access profiles
(per group, allowing access per customer, per network
etc.)</para>
</listitem>
<listitem>
<para>define address space authority boundaries per
group</para>
</listitem>
<listitem>
<para>finding free address space across a range</para>
</listitem>
<listitem>
<para>split and join networks to make them smaller and larger
- ip definitions remain intact</para>
</listitem>
<listitem>
<para>display overlapping address space between
networks</para>
</listitem>
<listitem>
<para>search capabilities</para>
</listitem>
<listitem>
<para>an audit log - contents before and after change is
logged</para>
</listitem>
<listitem>
<para>statistics</para>
</listitem>
<listitem>
<para>keeping track of and sending SWIP/registrar
information</para>
</listitem>
<listitem>
<para>DNS administration (forward and reverse zones, import
existing zones via zone transfer)</para>
</listitem>
<listitem>
<para>template system to extend IPplan to contain site
specific information like circuit data, host configuration
data, asset information</para>
</listitem>
<listitem>
<para>device configuration file management</para>
</listitem>
<listitem>
<para>external stylesheet to change display look</para>
</listitem>
<listitem>
<para>triggers - every user event can call a user defined
function - useful to execute backend DNS scripts</para>
</listitem>
<listitem>
<para>external poller - scan subnets for active addresses to
gather usage statistics</para>
</listitem>
<listitem>
<para>IP address request system - allows users to request
static IP addresses from the database</para>
</listitem>
</itemizedlist>
</para>
<para>Two authentication methods are available - either
IPplan's own internal authentication scheme, or alternatively
make use of any external Apache authentication module. This
includes single sign on systems like SiteMinder or your own scheme
based on LDAP, or any other Apache compatible system.</para>
<sect2 id="copyright">
<title>Copyright Information</title>
<para>This document is copyrighted (c) 2002 Richard E and is
distributed under the terms of the Linux Documentation Project
(LDP) license, stated below.</para>
<para>Unless otherwise stated, Linux HOWTO documents are
copyrighted by their respective authors. Linux HOWTO documents
may be reproduced and distributed in whole or in part, in any
medium physical or electronic, as long as this copyright notice
is retained on all copies. Commercial redistribution is allowed
and encouraged; however, the author would like to be notified of
any such distributions.</para>
<para>All translations, derivative works, or aggregate works
incorporating any Linux HOWTO documents must be covered under
this copyright notice. That is, you may not produce a derivative
work from a HOWTO and impose additional restrictions on its
distribution. Exceptions to these rules may be granted under
certain conditions; please contact the Linux HOWTO coordinator at
the address given below.</para>
</sect2>
<sect2 id="disclaimer">
<title>Disclaimer</title>
<para>No liability for the contents of this documents can be
accepted. Use the concepts, examples and other content at your
own risk. As this is a new edition of this document, there may be
errors and inaccuracies, that may of course be damaging to your
system. Proceed with caution, and although this is highly
unlikely, the author(s) do not take any responsibility for
that.</para>
<para>All copyrights are held by their by their respective
owners, unless specifically noted otherwise. Use of a term in
this document should not be regarded as affecting the validity of
any trademark or service mark.</para>
<para>Naming of particular products or brands should not be seen
as endorsements.</para>
<warning>
<para>It is strongly recommended to make a backup of your
system before major installation or upgrades and to backup at
regular intervals.</para>
</warning>
</sect2>
<sect2 id="newversions">
<title>New Versions</title>
<para>See the CHANGELOG file for more information.</para>
</sect2>
<sect2 id="credits">
<title>Credits</title>
<para>Thanks to <ulink url="http://www.vhconsultants.com">
ValueHunt Inc.</ulink> for the use of their layout class used for
rendering all HTML pages.</para>
<para>Thanks to <ulink url="http://adodb.sourceforge.net/">
AdoDB</ulink> for the use of their generic database abstraction
class.</para>
<para>Thanks to <ulink url="http://vex.sourceforge.net">
Vex</ulink> for their Visual Editor for XML used to generate the
IPplan documentation.</para>
<para>Thanks to <ulink url="http://phplayersmenu.sourceforge.net">
The PHP Layers Menu System</ulink> for their menu system.</para>
</sect2>
<sect2 id="feedback">
<title>Feedback</title>
<para>Feedback is most certainly welcome for this document.
Without your submissions and input, this document wouldn't
exist. Please send your additions, comments and criticisms to the
following email address : <email>ipplan@gmail.com</email>.</para>
</sect2>
<sect2 id="translations">
<title>Translations</title>
<para>See the INSTALL and TRANSLATIONS files on how to enable
multilingual support and how to do a translation to your own
language. Doing a translation does not require any programming
experience. Current languages supported are English, Bulgarian,
French - Auto Translation, German - Auto Translation, Italian -
Auto Translation, Norwegian - Auto Translation, Portuguese - Auto
Translation and Spanish - Auto Translation.</para>
<para>Nickola Kolev for the Bulgarian translation - nikky at
mnet.bg.</para>
<para>Conrado Pinto Rebessi for the Brazillian translation -
conradopinto at yahoo.com.br</para>
<para>Tadashi Jokagi for the Japanese transalation - elf2000 at
users.sourceforge.net</para>
<para>Vladimir Leshchenko for the Russian translation - worker at
smtn.stavropol.ru </para>
</sect2>
</sect1>
<sect1 id="requirements">
<title>Requirements</title>
<para>IPplan requires a working web server installation. Currently
the <ulink url="http://httpd.apache.org">Apache</ulink> web server
is preferred, but php as an ISAPI or CGI module on IIS works too -
follow the appropriate installation instructions in the IPplan
directory (INSTALL-IIS+MSSQL). Apache works just fine on Windows
platforms too. For installing Apache on a Windows platform, follow
<ulink url="http://httpd.apache.org/docs/windows.html">
these</ulink> instructions. Or you can use
<ulink url="http://www.appservnetwork.com/">AppServ</ulink> or
<ulink url="http://www.wampserver.com/en/index.php">
WampServer</ulink> which are complete installation packages for
Apache, MySQL and PHP for Windows - just add IPplan by following
the installation instructions in the IPPLAN-WINDOWS file (part of
IPPlan).</para>
<sect2 id="databases">
<title>Databases</title>
<para>IPplan requires a working database installation. The
following databases currently work:</para>
<itemizedlist>
<listitem>
<para><ulink url="http://www.mysql.com">MySQL 3.23.15 or
higher</ulink> (preferred)</para>
</listitem>
<listitem>
<para><ulink url="http://www.postgresql.org">PostgreSQL 7.1
or higher</ulink></para>
</listitem>
<listitem>
<para><ulink url="http://www.oracle.com">Oracle 9i or
higher</ulink> (SQL99)</para>
</listitem>
<listitem>
<para>Microsoft SQL server (both 7 and 2000)</para>
</listitem>
</itemizedlist>
<para>The following may work, but are untested - Sybase. In fact,
any database that supports SQL99 compliant joins, in particular
LEFT JOIN, should work. See limitations section below for
more.</para>
<para>The web scripting language <ulink url="http://www.php.net">
php 4.1 or higher</ulink> must also be installed as a module in
Apache (NOT as a cgi). Php must have the preferred database
driver compiled in and enabled. See the respective web sites and
installation documents for more detail. IPplan works just fine
with a combination of the Apache web server and php on a Windows
platform - just read the relevant installation instructions for
Windows carefully.</para>
<tip>
<para>IPplan is also known to work in a distributed, replicated
MySQL environment with multiple database servers. See
<ulink url="http://www.oreilly.com/catalog/hpmysql/chapter/ch07.pdf">
www.oreilly.com</ulink> for more information.</para>
</tip>
</sect2>
<sect2 id="addons">
<title>Additional features</title>
<para>To enable SNMP support, you will require the
<ulink url="http://sourceforge.net/projects/net-snmp">
ucd-snmp</ulink> package installed and configured in your
environment. This must also be activated in the php
configuration. SNMP support is only required if you wish to read
routing tables directly from routers.</para>
</sect2>
</sect1>
<sect1 id="installation">
<title>Installation</title>
<para>Follow the instructions for your platform and database in the
INSTALL files in the IPplan directory.</para>
<sect2 id="custom">
<title>Customization</title>
<para>IPplan is customizable in many ways. See the sections on
templates, triggers and pollers. You can also extend the menu
system to include your own custom menus for other systems at your
site - see the config.php file for an example.</para>
</sect2>
</sect1>
<sect1 id="downloads">
<title>Downloads, bugs and forums</title>
<para>You can report bugs, contribute to forums and download it
<ulink url="http://sourceforge.net/projects/iptrack">here</ulink>
and look at the latest
<ulink url="http://cvs.sourceforge.net/viewcvs.py/iptrack/ipplan/TODO?view=markup">
TODO</ulink> and
<ulink url="http://cvs.sourceforge.net/viewcvs.py/iptrack/ipplan/CHANGELOG?view=markup">
CHANGELOG</ulink>.</para>
<sect2 id="screenshots">
<title>Screenshots</title>
<para>You can find some screen shots <ulink url="screenshots">
here.</ulink></para>
</sect2>
</sect1>
<sect1 id="modes">
<title>Mode of operation</title>
<para>There are two modes of operation, one can be classified as a
services company and the other as an ISP.</para>
<sect2 id="mode-services">
<title>Services company</title>
<para>As a services company your primary use of IPplan will be to
manage individual IP address records and the address plan of one
or more customers.</para>
</sect2>
<sect2 id="mode-isp">
<title>ISP</title>
<para>In ISP mode, you will assign blocks of IP address space to
your customers. In this mode, you will not be concerned at all
with individual IP address records and how the customer breaks
down his assigned address space. When you operate as an ISP, you
may also generate SWIP/registrar entries, which are only useful
if you deal directly with ARIN or any other registrar. (SWIP is
enabled in the config.php file, see ARIN
<ulink url="http://www.arin.net/minutes/tutorials/swipit.htm">
tutorial</ulink> for more details). All the relevant
SWIP/registrar information is entered when the customer is
created.</para>
<para>When using this mode, I suggest creating a dummy customer
which holds all the allocated address space from your regional
registrar (ARIN?) already broken up into the various blocks that
you will eventually assign to your customers. All these blocks
should be called "free" to allow them to be found using
the "Find free" menu option. Once you are ready to
assign a block, create a new customer with all the relevant
SWIP/registrar information completed, go to your dummy customer
and move a block of address space to the newly created customer,
and finally generate a SWIP/registrar entry for the new block. In
this mode areas and ranges are not too relevant except for the
dummy customer (see concepts below). You may also need to create
a template for your registrar in the templates directory. If you
have done this, feel free to contribute it to IPplan.</para>
</sect2>
</sect1>
<sect1 id="concepts">
<title>Concepts</title>
<para>The flow of address management is based on the creation of
areas, then ranges which belong to areas, and finally, subnets
which belong to ranges. Actually, only subnets are required, but on
large networks it makes logical sense to group the network into
areas to ease administration and to reduce routing updates on the
network. There is a jpeg drawing included with the distribution
that graphically shows these relationships. The methodology
employed borrows significantly from OSPF routing concepts which are
explained more fully
<ulink url="http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/ospf.htm">
here</ulink>.</para>
<sect2 id="deployment">
<title>Deployment strategy</title>
<para>So in a new installation, first create the areas, then
create ranges adding them to areas, and finally create subnets.
Searching is now a simple matter of selecting an area which will
display all the ranges for the area, or selecting no area and
simply selecting a range from the total list of ranges, or simply
selecting a base network address.</para>
<note>
<para>Within a customer or autonomous system, no overlaps of
address space is allowed. This follows standard IP addressing
rules. You can have overlapping ranges/aggregates, but the
default behaviour of ranges also prevents overlaps. This can be
changed in the config.php file.</para>
</note>
<para>To handle challenges like NAT or other overlapping address
space, you will be required to create multiple autonomous
systems. See 'Searching' below how to see information
across multiple autonomous systems.</para>
</sect2>
<sect2 id="linking">
<title>Linking addresses</title>
<para>IP address records can be linked together. This allows one
address or multiple addresses to reference another address or
addresses. Using this feature allows for the referencing of NATed
addresses or having a link to a loopback address of a device.
Linking is done on the IP address details page by completing the
"Linked address" field. Once the field is completed,
you can follow the link. The link also appears on subnet summary
pages.</para>
<para>You can also link many addresses in one go by choosing
multiple addresses in the "Select multiple addresses to do a
bulk change" window, then completing the "User"
field as follows:</para>
<programlisting>LNKx.x.x.x userinfo</programlisting>
<para>The LNK identifier must be in uppercase, followed by
exactly one valid IP address with no spaces, then followed by an
optional space and user description. After the page is submitted,
the embedded LNK will vanish.</para>
<note>
<para>If the destination record of a linked address does not
exist, a record will automatically get created pointing back to
the source address, but only if the destination subnet exists.
This is to signal the "Find Next Free" address logic
of the subnet that the destination address is used.</para>
</note>
</sect2>
</sect1>
<sect1 id="admin">
<title>Administration</title>
<para>The access control is divided up into three layers and
revolves around the creation of groups:</para>
<sect2 id="admin-user">
<title>Admin user</title>
<para>Firstly you will need to create users and groups using the
admin user defined in the config.php script. The admin user can
only be used on the admin pages. Once you are done with the admin
functions, you will be required to re-authenticate as one of the
newly created users as soon as you access functions on the main
index page.</para>
</sect2>
<sect2 id="customer-access">
<title>Customer access</title>
<para>When a customer is created, a group must be assigned to the
customer. This will be the customers admin group and all members
of this group can create and delete both subnets, ranges, areas
and individual IP address records for the customer.</para>
<para>When the subnet is created, the creator will choose a
subnet admin group.</para>
</sect2>
<sect2 id="subnet-access">
<title>Subnet access</title>
<para>The users assigned to the group that has subnet access can
only modify individual IP records for that subnet.</para>
<para>Initially I would create three groups, one group that can
create customers, one group that can create subnets, areas and
ranges, and another group which can only modify individual IP
records. Normally in large networks the people that modify IP
records are not the same people that administer routers and
configure the IP address space.</para>
<para>If a group is set to see only a particular customer, the
same group needs to be used for all operations for the customer.
The side effect to this is that the users assigned to the group
have full access to the customer and can make any changes to the
customers data, including creating and deletion of subnets. This
is not ideal and will be changed in future.</para>
<tip>
<para>Groups can be created that prevent certain users from
changing an administrator defined number of reserved addresses
at the start of a subnet.</para>
</tip>
</sect2>
<sect2 id="g-a-b">
<title>Group authority boundaries</title>
<para>Areas of responsibility can be assigned to a group, thus
limiting what address space a group can create networks in. The
default behavior allows administration anywhere. Care should be
taken when using this feature as changing the boundaries at a
later stage may orphan some parts of the database and yield data
inaccessible.</para>
<note>
<para>If a user belongs to multiple groups and one of the
groups does not have boundaries defined, then the user is
granted all access. Thus boundaries are a sum of all the
boundaries the user belongs to.</para>
</note>
<tip>
<para>Bounds are also useful to create users that only have
read access to the IPplan information. Select the "Read
Only" option when creating a new group.</para>
</tip>
</sect2>
</sect1>
<sect1 id="circuit">
<title>Circuit administration, host configuration data and asset
information</title>
<para>Using the template capability IPplan can be extended to
contain custom information about your site. You can add any number
of custom fields for your site. See the section on
"Templates" for further information.</para>
</sect1>
<sect1 id="file">
<title>Device configuration file management</title>
<para>Any number of files can be attached to individual IP records.
Using this feature, configuration data (text and binary, drawings
etc) for devices can be stored and managed by IPplan.</para>
</sect1>
<sect1>
<title>DNS administration</title>
<para>Both forward and reverse zones can be created via the web
interface. Zone domains are forward zones - there can be as many
forward zones as you like per customer. Each of these can be unique
or they can even overlap with other customers.</para>
<para><emphasis>Forward Zones:</emphasis></para>
<para>To create a forward zone, select a customer and select
"Add a DNS zone". The next screen will allow you to enter
information for the new zone. The domain name must be entered as
must at least two nameservers.</para>
<para>At this point you have the option of creating a new zone from
scratch, cloning (copying) a zone from an already existing zone
called "template.com", or importing an existing zone via
a zone transfer. If you do a zone transfer, the PRIMARY or
SECONDARY DNS servers must be directly contactable from the
webserver on which IPplan is running. If the DNS server is not
contactable an error will be returned.</para>
<para>If a domain is created from scratch, the domain name must be
entered as must at least two upstream DNS servers. The DNS servers
are automatically entered for you if the customer record (created
via "Create a new customer/autonomous system") contains
DNS servers. This is a good way to not have to manually add the DNS
servers for each new zone created. The DNS servers can be changed
and will be independent per zone created. At the bottom of the
Add/Edit screen is place to enter two zone file paths. In future
this can be used to determine where the zone must be saved or on
what DNS server the zone must be created - currently these fields
do nothing.</para>
<para>The next step is to add individual records to the newly
created zone. Do this under the "Zone DNS records" main
menu function. Select the customer, select the domain and add a
host. The "Host name" refers to the left hand side of a
bind zone file, then the type (A, CNAME or MX - more types in
future) and the "IP/Hostname" refers to the right hand
side of the zone file. In future the screen will change depending
on the record type you select and more record types will be
possible. The sort order determines the placement of the record in
the zone and on the screen. This is a number and the default is
9999 or the end of the file. If you want to insert records between
other records, work out a numbering plan.</para>
<para>In future this will be automatic with options to "Insert
before" and "Insert after". Currently you can
renumber the values retaining the order of the entries.</para>
<para><emphasis>Reverse zones:</emphasis></para>
<para>To create reverse zones is very much like creating a forward
zone, except that there are no detail records. All that is required
is to create a starting address and mask. The actual reverse
records are extracted based on the start and mask from the IP
records when you create a subnet and add records to the subnet. The
field used is the host name field and all invalid information in
this field will be ignored with a warning.</para>
<para>Once your forward and reverse zones are created, each time a
change is made you will be required to export the zone by clicking
on the "Export zone" option. The output generated is in
XML and must then be parsed using and XSLT processor into a format
compatible with your DNS server.</para>
<sect2 id="export">
<title>Handling exported zones</title>
<para>The zone files are created in the directory specified by
the DNSEXPORTPATH variable in the config.php file. The files are
in XML format and are created when a user hits the Export option
either on the DNS page or Reverse zone page. The files have a
format of zone_ or revzone_ followed by the zone name followed by
a trailing unique identifier, which is operating system
dependent. The file has a .xml extension.</para>
<para>If a template is attached to the forward zone, the template
fields will also appear in the exported XML file with tag names
the same as the template field names.</para>
<para>These files must be processed using a XML stylesheet
processor into a format suitable for your DNS server, and then
placed into the correct location and activated by your DNS
server. This is beyond the scope of IPplan and will require
custom scripts for your installation. Contributions are
welcome.</para>
<para>Sample procedure:</para>
<para>You will require a script for your environment that
periodically runs to check for new zone files that have been
added to the output directory. You will probably use cron to do
this. Once your script finds a file, you can extract the file
paths saved in IPplan using a simple grep:</para>
<para>
<programlisting>grep -A 1 '<primary>' /tmp/revzone_FS9mEU|grep -v '<primary>'</programlisting>
</para>
<para>This gives me the primary file path. Once you have the
destination path, process the file and copy the output by
whatever means your environment uses to the target DNS server. I
would suggest using scp with a public key on the remote server to
prevent having to type in user id's and passwords during the
copy process.</para>
<para>Processing the file:</para>
<para>A sample XSLT stylesheet can be found in the contrib
directory to transform the forward zone XML (files starting with
zone_) into a bind8 or higher compatible zone file. I use
xsltproc from the libxslt package (
<ulink url="http://xmlsoft.org/XSLT/">
http://xmlsoft.org/XSLT/</ulink>) which should be installed on
most modern linux systems. A different stylesheet (.xsl file)
will be required for each DNS server system that you use - I have
no intention of writing style sheets for all the various DNS
servers out there, but you are more than welcome to send me style
sheets for different DNS servers to be included with
IPplan.</para>
<para>A sample command is:</para>
<para>
<programlisting>xsltproc bind9_zone.xsl zone_</programlisting>
</para>
<para>For sample XML input of:</para>
<para>
<programlisting><?xml version="1.0" ?>
<zone domain="test.com">
<soa serialdate="20040626" serialnum="04" ttl="21600" retry="3600" refresh="86400" expire="604800" minimumttl="21600" email="" />
<record><NS><iphostname>ns1.example.com</iphostname></NS></record>
<record><NS><iphostname>ns2.example.com</iphostname></NS></record>
<record><NS><iphostname>ns3.example.com</iphostname></NS></record>
<record><NS><iphostname>ns4.example.com</iphostname></NS></record>
<record><A><host>myhost</host><iphostname>10.10.10.1</iphostname></A></record>
<record><CNAME><host>myhost-alias</host><iphostname>myhost</iphostname></CNAME></record>
<record><MX><host></host><iphostname>mailhost</iphostname></MX></record>
</zone></programlisting>
</para>
<para>Generating output as follows:</para>
<para>
<programlisting>$ORIGIN test.com.
$TTL 86400
@ IN SOA test.com. dnsadmin.test.com. (
2004062604 ; serial
21600 ; refresh
3600 ; retry
604800 ; expire
21600 ) ; minimum TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
IN NS ns3.example.com.
IN NS ns4.example.com.
myhost IN A 10.10.10.1
myhost-alias IN CNAME myhost
IN MX 10 mailhost</programlisting>
</para>
</sect2>
<sect2 id="individual">
<title>Automatic updating of zone records</title>
<para>IP subnet records (which equate to zone PTR records) and
forward zone A records will automatically get syncronised and
updated provided a number of criteria are fulfilled.</para>
<para>If a DNS A record is created or updated, and there is
exactly one A record across all the customers zones matching one
IP subnet record, then the IP record hostname field will be
updated with the A record hostname field.</para>
<para>If an IP record hostname field is updated, then the zone A
record field will be updated if there is exactly one A record
matching the IP record across all the customers zones.</para>
<para>If an IP record hostname field is updated and a matching A
record cannot be found, then an A record will automatically be
created in the matching domain provided there is only one
matching domain. This will only happen if the DNSAUTOCREATE
setting is TRUE in config.php.</para>
<para>Under all the above conditions a warning message will be
displayed stating that an update occured. The appropriate log
entries will be made and triggers will fire.</para>
</sect2>
</sect1>
<sect1 id="registrars">
<title>Dealing with registrars</title>
<para>Registrars are interacted with by email. IPplan can manage
all the records and manage all the fields and data required to
generate the registrar updates, no matter what the registrar is
(ARIN, RIPE, APNIC etc). Before these functions will work, the
correct config variables need to be set - these include the
REGENABLED, MAINTAINERID, REGISTRY, REGEMAIL etc. Only users
belonging to the customer admin group can send these updates.
Additional fields can be added to the IPplan display pages if
required, and these fields are also available to the registrar
templates.</para>
<para>To generate updates, the required registrar template is
selected. IPplan includes a limited number of templates, but these
are fully customizable and simple to create and modify - see the
section on "Templates" later in the manual. Once the
template is selected, the fields from the database are substituted
into the template file and the output is displayed on the screen.
The user then selects which updates should be sent to the
registrar. The selected updates are then sent via email and the
date the updates were sent are recorded in the IPplan
database.</para>
</sect1>
<sect1 id="searching">
<title>Searching</title>
<para>Creating a special customer called 'All' allows
searching for information across all the available
customer/autonomous systems using the 'Display subnet'
function. This special customer can contain areas and ranges that
limit the scope of searches, just like normal customers. Using this
feature allows a user to see the entire network picture in one
view.</para>
<tip>
<para>When creating new subnets, it is also beneficial to create
unused subnets with a a description of either 'free' or
'spare'. These can be searched for at a later stage
using the 'Find Free' function.</para>
</tip>
<tip>
<para>It may also be beneficial to give ASE (Autonomous System
External, networks not local to yours) a special handle like
EXTERNAL so that they can be searched for at a later stage. These
networks often appear in routing tables as static routes to third
parties (not via the Internet).</para>
</tip>
<sect2 id="individual">
<title>Searching for individual address details</title>
<para>Searching can also be done on individual addresses using
the 'Match any IP address in subnet' option of the
'Display subnet information' option. This is useful for
finding which networks, either for a single customer, or for all
customers an IP address belongs to. Using this option makes it
easy to find the offending network in a complaint situation if
you are an ISP.</para>
<para>If matching by IP address, you will automatically jump to
the IP address edit page if the search is unique and matches only
one subnet from one customer. If you use the 'All'
customer you will need to click on the relevant customer network
you wish to work with.</para>
</sect2>
<sect2 id="areas">
<title>Searching areas and ranges</title>
<para>You can also create areas and ranges to search across only
certain address space ranges. Areas are containers for ranges.
Selecting an area that has ranges attached will search only in